Go to main content
Oracle® Solaris 11.3 での Kerberos およびその他の認証サービスの管理

印刷ビューの終了

更新: 2017 年 3 月
 
 

Oracle DSEE LDAP ディレクトリサーバー上でのマスター KDC の構成

同じサーバー上に KDC と LDAP をインストールすると、パフォーマンスが向上します。このセクションでは、マルチマスター構成と呼ばれる 2 つのマスター KDC を作成します。各マスター KDC は LDAP サーバー上に存在します。

    主な手順は次のとおりです。

  1. 証明書、プロファイル、および Kerberos スキーマを含む 1 番目のマスター Oracle DSEE サーバーの構成

  2. 1 番目のマスター KDC の構成

  3. 2 番目の Oracle DSEE サーバーの構成

  4. 2 番目のマスター KDC の構成

  5. マスター KDC のクロックとクロック同期サーバーとの同期

  6. Kerberos サービスの有効化

OpenLDAP クライアントの Oracle DSEE LDAP ディレクトリサーバー上でマスター KDC を構成する方法

この手順では、2 つの KDC マスターと 2 つの LDAP サーバーを構成します。1 番目の LDAP サーバーと 1 番目の KDC マスターは同じシステム上に存在し、2 番目の LDAP サーバーと 2 番目の KDC マスターは別々のシステム上に存在します。

    この手順では、次の構成パラメータを使用します。

  • LDAP インスタンス = /local/dsInst

  • LDAP ポート = 389 (636: セキュリティー保護済み)

  • 1 番目の KDC/LDAP マスターサーバー = kdc1.example.com

  • 2 番目の KDC/LDAP マスターサーバー = kdc2.example.com

  • Kerberos レルム名 = EXAMPLE.COM

  • DNS ドメイン名 = example.com

  • 1 番目のマスターサーバー上の admin 主体 = dav/admin

  • 2 番目のマスターサーバー上の admin 主体 = tester/admin

始める前に

システムは、DNS を使用するように構成されています。同じサーバー上に LDAP と KDC をインストールすると、パフォーマンスが向上します。この手順では、LDAP に Oracle Directory Server Enterprise Edition (DSEE) を使用します。詳細は、『Oracle Fusion Middleware Oracle Directory Server Enterprise Edition インストレーション・ガイド 11g リリース 1 (11.1.1.7.0)』を参照してください。

root に含まれています。詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護 の 割り当てられている管理権利の使用を参照してください。

  1. 1 番目の Oracle DSEE LDAP サーバーを構成します。

    LDAP サーバーでは TLS 証明書が使用されます。

    1. サーバーインスタンスを作成し、その証明書を作成して追加します。
      # dsadm create -p 389 -P 636 /local/dsInst
      # dsadm start /local/dsInst
      # dsconf create-suffix -p 389 -e dc=example,dc=com
      # dsconf import -p 389 -e /opt/dsee7/resources/ldif/Example.ldif dc=example,dc=com
      # ldapsearch -b "dc=example,dc=com" -s base '(objectclass=*)'
      # dsadm show-cert -F der /local/dsInst defaultCert > /tmp/defaultCert.cert.der
      # pktool setpin keystore=nss dir=/var/ldap
      # chmod a+r /var/ldap/*.db
      # pktool import keystore=nss objtype=cert trust="CT" \
         infile=/tmp/defaultCert.cert.der label=defaultCert dir=/var/ldap
      # certutil -L -d /var/ldap -n defaultCert -a > /var/ldap/certdb.pem
    2. ldap.conf ファイルに組織の情報を追加します。
      # pfedit /etc/openldap/ldap.conf
        ... 
        #BASE   dc=example,dc=com
        #URI    ldap://ldap.example.com ldap://ldap-master.example.com:666
      
        #SIZELIMIT      12
        #TIMELIMIT      15
        #DEREF          never
       
        TLS_CACERT      /var/ldap/certdb.pem
        ...
    3. 構成された Oracle DSEE サーバーが動作することを確認します。
      # ldapsearch -Z -P /var/ldap -D "cn=directory manager" \
         -h $HOSTNAME -b "" -s base objectclass='*'
    4. 初期プロファイルを追加します。
      # pfedit profile.ldif
        dn: ou=profile,dc=example,dc=com
        ou: profile 
        objectclass: top
        objectclass: organizationalUnit
      # ldapmodify -a -h $HOSTNAME -D "cn=directory manager" -f profile.ldif
    5. DSEE サーバーに kerberos.ldif ファイルを追加します。
      # ldapmodify -h $HOSTNAME -D "cn=directory manager" \
         -f /usr/share/lib/ldif/kerberos.ldif
  2. 1 番目のマスター KDC および Oracle DSEE サーバーを構成します。
    1. Kerberos 構成ファイルに Oracle DSEE サーバーを追加します。
      # pfedit /etc/krb5/krb5.conf
       [realms]
               EXAMPLE.COM = {
                       kdc = kdc1.example.com
                       admin_server = kdc1.example.com
                       database_module = LDAP
               }
      
       [dbmodules]
               LDAP = {
                       db_library = kldap
                       ldap_kerberos_container_dn = "cn=krbcontainer,dc=example,dc=com"
                       ldap_kdc_dn = "cn=kdc service,ou=profile,dc=example,dc=com"
                       ldap_kadmind_dn = "cn=kadmin service,ou=profile,dc=example,dc=com"
                       ldap_cert_path = /var/ldap
                       ldap_servers = ldaps://kdc1
               }
        ...
    2. マスター KDC およびその鍵を作成します。
      # kdb5_ldap_util -D "cn=directory manager" create -P nnnnnnnn -r EXAMPLE.COM -s
      # kdb5_ldap_util stashsrvpw "cn=kdc service,ou=profile,dc=example,dc=com"
      # kdb5_ldap_util stashsrvpw "cn=kadmin service,ou=profile,dc=example,dc=com"
    3. KDC および kadmin 役割を作成し、Oracle DSEE サーバーに追加します。
      # pfedit kdc_roles.ldif
       dn: cn=kdc service,ou=profile,dc=example,dc=com
       cn: kdc service
       sn: kdc service
       objectclass: top 
       objectclass: person
       userpassword: nnnnnnnn
       
       dn: cn=kadmin service,ou=profile,dc=example,dc=com
       cn: kadmin service
       sn: kadmin service
       objectclass: top
       objectclass: person
       userpassword: nnnnnnnn
      
      # ldapmodify -a -h $HOSTNAME -D "cn=directory manager" -f kdc_roles.ldif
    4. Kerberos 管理者の ACL を作成し、Oracle DSEE サーバーに追加します。
      # pfedit kadmin.aci 
       ## Set kadmin ACL for everything under krbcontainer.
       dn: cn=krbcontainer,dc=example,dc=com
       changetype: modify
       replace: aci
       aci: (target="ldap:///cn=krbcontainer,dc=example,dc=com")
        (targetattr="krb*")(version 3.0; acl kadmin_ACL; allow (all)
        userdn = "ldap:///cn=kadmin service,ou=profile,dc=example,dc=com";)
      
       ## Set kadmin ACL for everything under the people subtree if there are
       ## mix-in entries for krb princs:
       dn: ou=people,dc=example,dc=com
       changetype: modify
       replace: aci
       aci: (target="ldap:///ou=people,dc=example,dc=com")(targetattr="*")
        (version 3.0; acl kadmin_ACL; allow (all)
        userdn = "ldap:///cn=kadmin service,ou=profile,dc=example,dc=com";)
       
      # ldapmodify -h $HOSTNAME -D "cn=directory manager" -f kadmin.aci
    5. KDC 構成ファイルに Kerberos 構成ファイルの場所を追加します。
      # pfedit /etc/krb5/kdc.conf
       ...
       [realms]
               EXAMPLE.COM = {
                       profile = /etc/krb5/krb5.conf
       ...
    6. このシステムのクロックをレルム内のほかのクロックと同期します。

      認証が成功するには、すべてのクロックが、krb5.conf ファイルの libdefaults セクションで定義されているデフォルトの時間内に収まっている必要があります。詳細は、krb5.conf(4) のマニュアルページおよびKDC と Kerberos クライアントのクロックの同期化を参照してください。


      注 -  マスター KDC をクロック同期サーバーにすることはできません。
    7. KDC および kadmin サービスを有効にします。
      # svcadm enable krb5kdc
      # svcadm enable kadmin
  3. 2 番目の LDAP サーバーを構成します。

    2 番目の LDAP サーバー kdc2 を構成するときに、1 番目の LDAP サーバー kdc1 を更新します。

    1. 1 番目の LDAP サーバーのレプリカを作成します。
      kdc1# dsconf enable-repl -h $HOSTNAME -p 389 -d 1 master dc=example,dc=com
    2. レプリカを構成し、有効にします。
      kdc2# mkdir -p /local
      kdc2# dsadm create -p 389 -P 636 /local/dsInst
      kdc2# dsadm start /local/dsInst
      kdc2# dsconf create-suffix -p 389 -e dc=example,dc=com
      kdc2# dsconf enable-repl -h $HOSTNAME -p 389 -d 2 master dc=example,dc=com
    3. 相互に認識されるように LDAP サーバーを有効にします。
      kdc1# dsconf create-repl-agmt -h $HOSTNAME -p 389 dc=example,dc=com kdc2:389
      kdc2# dsconf create-repl-agmt -h $HOSTNAME -p 389 dc=example,dc=com kdc1:389
  4. 1 番目の LDAP サーバーが 2 番目の LDAP サーバーを変更できないことを確認します。

    適切に構成された LDAP サーバー上では、2 番目のサーバーのクエリーによって NOT OK のステータスがレポートされます。

    kdc1# dsconf show-repl-agmt-status -h $HOSTNAME -p 389 dc=example,dc=com kdc2:389
    kdc1# dsconf accord-repl-agmt -h $HOSTNAME -p 389 dc=example,dc=com kdc2:389
    kdc1# dsconf init-repl-dest -h $HOSTNAME -p 389 dc=example,dc=com kdc2:389
  5. LDAP バインディング用の stash ファイルを作成し、マスター KDC の stash ファイルを作成します。
    kdc1# kdb5_ldap_util stashsrvpw "cn=kdc service,ou=profile,dc=example,dc=com"
    kdc1# kdb5_util stash
  6. 2 番目の KDC マスターを構成します。

    管理主体は tester/admin です。その他のパラメータは同じ設定のままです。

    2 番目の KDC 上で LDAP TLS バインディングを構成したあとに、/etc/krb5/krb5.conf ファイルを更新します。


    注 -  KDC と LDAP サーバーが別々のシステム上に存在する場合は、krb5.conf ファイル内の ldap_servers キーワードに LDAP サーバー名が一覧表示される必要があります。
    1. 2 番目の KDC マスター上で、Kerberos 構成ファイルを編集します。
      kdc2# pfedit /etc/krb5/krb5.conf
       [realms]
               EXAMPLE.COM = {
                       kdc = kdc2.example.com
                       kdc = kdc1.example.com
                       admin_server = kdc1.example.com
                       admin_server = kdc2.example.com
                       database_module = LDAP
               }
       
       [dbmodules]
               LDAP = {
                       db_library = kldap
                       ldap_kerberos_container_dn = "cn=krbcontainer,dc=example,dc=com"
                       ldap_kdc_dn = "cn=kdc service,ou=profile,dc=us,dc=example,dc=com"
                       ldap_kadmind_dn = "cn=kadmin service,ou=profile,dc=example,dc=com"
                       ldap_cert_path = /var/ldap
                       ldap_servers = ldaps://kdc2 ldaps://kdc1
               }
       ...
    2. KDC および kadmin サービスへの LDAP バインディング用の stash ファイルを作成し、マスター KDC の stash ファイルを作成します。
      kdc2# kdb5_ldap_util stashsrvpw "cn=kdc service,ou=profile,dc=example,dc=com"
      kdc2# kdb5_ldap_util stashsrvpw "cn=kadmin service,ou=profile,dc=us,dc=oracle,dc=com"
      kdc2# kdb5_util stash
    3. KDC 構成ファイルに Kerberos 構成ファイルの場所を追加します。
      kdc2# pfedit /etc/krb5/kdc.conf
       ...
       [realms]
               EXAMPLE.COM = {
                       profile = /etc/krb5/krb5.conf
       ...
    4. 2 番目の KDC マスターの主体に対応する鍵を作成します。
      kdc2# kadmin -p tester/admin
      kadmin: addprinc -randkey -allow_tgs_req kadmin/kdc2.example.com
      kadmin: modprinc -requires_preauth kadmin/kdc2.example.com
      kadmin: addprinc -randkey -allow_tgs_req +password_changing_service changepw/kdc2.example.com
      kadmin: modprinc -requires_preauth changepw/kdc2.example.com
  7. このシステムのクロックをレルム内のほかのクロックと同期します。

    認証が成功するには、すべてのクロックが、krb5.conf ファイルの libdefaults セクションで定義されているデフォルトの時間内に収まっている必要があります。詳細は、krb5.conf(4) のマニュアルページおよびKDC と Kerberos クライアントのクロックの同期化を参照してください。


    注 -  マスター KDC をクロック同期サーバーにすることはできません。
  8. KDC および kadmin サービスを有効にします。
    kdc2# svcadm enable krb5kdc
    kdc2# svcadm enable kadmin