2017年11月17日金曜日

389 Directory と AD の連携 (AD-> LDAP 編)

また 389 Directory ネタ。 AD と連携できるってことで、「やってみた」レベルのことをやってみたのメモ。GUI 無し, とりあえず AD -> LDAP 方向のみ。オレオレ証明書で AD からの LDAPS。

  1. まず、389 Directory をインストール。OS は CentOS 7。Java の admin GUI は使わないので setup-ds.pl を使う。問答の途中でインストールタイプを聞かれるが、私はこれはカスタマイズしやすい 3 で作る。なお、インスタンス名は ryo , サフィックスは example.com とした。
    
    # yum install 389-ds-base
    # setup-ds.pl
    
  2. AD は Windows Server 2012 R2。このインストールや設定はここでは説明しません。適当にご自由に。なお、ここでは説明上 example.local という AD ドメインを設定した。
  3. オレオレ証明書を作って AD に入れて LDAPS させる。手前味噌だが以下を参照で。

    AD でオレオレ証明書で ldaps するのに AD CS で作った証明書じゃないとダメというデマ
    http://blogger.fastriver.net/2014/02/ad-ldaps-ad-cs.html
  4. 上記オレオレ証明書(ここでは my.crt とした)を 389 Directory にセット。
  5. 
    # cd /etc/dirsrv/slapd-ryo/
    # certutil -d . -A -n "Windows Server AD CA cert" -t P,, -a -i /path/to/my.crt
    

    ここで注意したいのが、-t オプションの値を「P,,」(Valid Peer)としてるところ。オレオレの時は C (Trusted CA) じゃなくてサーバ証明書そのものを信頼される証明書として指定すべきぽい。
  6. AD 側にレプリケーション用のユーザを作成する。これは以下の URL に従った。権限として「Write/Create all child objects/Delete all child objects/Add GUID」が必要とのこと。なお、ここではこのユーザの DN は「cn=replication,cn=Users,dc=example,dc=local」とした。

    http://directory.fedoraproject.org/docs/389ds/howto/howto-windowssync.html#creating-ad-user-with-replication-rights
  7. あとは 389 側にいろいろ ldif で設定を入れる。ldapmodify で -D 'cn=Directory Manamger' で接続すること前提。
    • suffix のエントリの作成。
    • dn: dc=example,dc=com
      changetype: add
      objectClass: top
      objectClass: domain
      dc: example.com
      aci: (targetattr!="userPassword || aci")(version 3.0; acl "Enable anonymous ac
       cess"; allow (read, search, compare) userdn="ldap:///anyone";)
      aci: (targetattr="carLicense || description || displayName || facsimileTelepho
       neNumber || homePhone || homePostalAddress || initials || jpegPhoto || labele
       dURI || mail || mobile || pager || photo || postOfficeBox || postalAddress ||
       postalCode || preferredDeliveryMethod || preferredLanguage || registeredAddr
       ess || roomNumber || secretary || seeAlso || st || street || telephoneNumber 
       || telexNumber || title || userCertificate || userPassword || userSMIMECertif
       icate || x500UniqueIdentifier")(version 3.0; acl "Enable self write for commo
       n attributes"; allow (write) userdn="ldap:///self";)
      aci: (targetattr ="*")(version 3.0;acl "Directory Administrators Group";allow 
       (all) (groupdn = "ldap:///cn=Directory Administrators, dc=example,dc=com");)
      
    • people コンテナの作成
    • dn: ou=people,dc=example,dc=com
      changeType: add
      objectclass: top
      objectclass: organizationalUnit
      ou: people
      
    • changelog の有効化
    • dn: cn=changelog5,cn=config
      changetype: add
      objectclass: top
      objectclass: extensibleObject
      cn: changelog5
      nsslapd-changelogdir: /var/lib/dirsrv/slapd-ryo/changelogdb
      nsslapd-changelogmaxage: 7d
      
    • 389 Directory 側のレプリケーション用ユーザの作成(後の PassSync のため)
    • dn: cn=sync user,cn=config
      changetype: add
      objectClass: inetorgperson
      objectClass: person
      objectClass: top
      cn: sync user
      sn: SU
      userPassword: secret
      passwordExpirationTime: 20380119031407Z
      
    • レプリケーション設定
    • dn: cn=syncreplica,cn=dc\=example\,dc\=com,cn=mapping tree,cn=config
      changetype: add
      objectclass: top
      objectclass: nsds5replica
      objectclass: extensibleObject
      cn: syncreplica
      nsds5replicaroot: dc=example,dc=com
      nsds5replicaid: 7
      nsds5replicatype: 3
      nsds5flags: 1
      nsds5ReplicaPurgeDelay: 604800
      nsds5ReplicaBindDN: cn=sync user,cn=config
      
      ここで注意が必要で、上記 ldif dn: の cn=mapping tree より上の RDN においてはスペースは許されない。スペースを入れると以下のエラーに悩まされることになる
      ERR - NSMMReplicationPlugin - agmtlist_add_callback - Can't start agreement
      
    • Sync Agreement の作成
    • dn: cn=adagreement3,cn=syncreplica,cn=dc\=example\,dc\=com,cn=mapping tree,cn=config
      changetype: add
      objectclass: top
      objectclass: nsDSWindowsReplicationAgreement
      cn: adagreement3
      nsds7WindowsReplicaSubtree: cn=Users,DC=example,DC=local
      nsds7DirectoryReplicaSubtree: ou=people,dc=example,dc=com
      nsds7NewWinUserSyncEnabled: on
      nsds7NewWinGroupSyncEnabled: on
      nsds7WindowsDomain: SIOS
      nsDS5ReplicaRoot: dc=example,dc=com
      nsDS5ReplicaHost: ad-389.example.local
      nsDS5ReplicaPort: 636
      nsDS5ReplicaBindDN: cn=replication,cn=Users,dc=example,dc=local
      nsDS5ReplicaCredentials: MySecret-123
      nsDS5ReplicaTransportInfo: SSL
      nsds5replicabindmethod: SIMPLE
      winSyncInterval: 30
      winSyncMoveAction: delete
      nsds5BeginReplicaRefresh: start
      
これでいけるんじゃないかと。

0 件のコメント:

コメントを投稿