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

印刷ビューの終了

更新: 2017 年 3 月
 
 

Oracle Unified Directory サーバー上でのマスター KDC の構成

同じサーバー上に KDC と LDAP をインストールすると、パフォーマンスが向上します。

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

  1. OUD パッケージのインストール

  2. OUD サーバーの構成

  3. Kerberos 構成ファイルへの OUD サーバーの追加

  4. KDC の鍵の作成と、OUD サーバーへの特権ポートの指定

  5. OUD サーバー上での KDC 役割およびサービスの構成

  6. OUD サーバーの証明書と鍵の作成およびインストール

  7. テスト

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

Oracle Unified Directory LDAP ディレクトリサーバー上でマスター KDC を構成する方法

この手順では、同じシステム上に KDC マスターと Oracle Unified Directory (OUD) サーバーを構成します。KDC では、OpenLDAP クライアントライブラリが使用され、あとで構成する Kerberos クライアントも使用されます。

始める前に

DNS を使用するようにシステムが構成されていることを確認してください。この手順では、LDAP に Oracle Unified Directory (OUD) を使用します。詳細は、『Oracle Fusion Middleware Oracle Unified Directory インストレーション・ガイド 11g リリース 2 (11.1.2)』を参照してください。

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

  1. OUD パッケージをダウンロードします。

    Oracle Unified Directory の Web サイトの指示に従います。

  2. OUD LDAP サーバーを構成します。

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

    • リスナーポート: 1389

    • TLS ポート: 1636 (特権ポート)

    • 管理者コネクタポート: 4444

    • パスワード: nnnnnnnn

    • 証明書: StartTLS と TLS

    • プロセス: java -server -Dorg.opends.server.scriptName=sta...

    # cd Oracle/Middleware/Oracle_OUD1
    # export JAVA_HOME=/usr/jdk/instances/jdk1.6.0
    # ./oud-setup
  3. LDAP サーバーが待機していることを確認します。
    # ldapsearch -p 1389 -D "cn=directory manager" -h $HOSTNAME -b "" -s base objectclass='*'
  4. OUD 構成に初期プロファイルのエントリを追加します。
    # 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. kerberos.ldif ファイル内のすべての属性タイプから改行を削除し、そのファイルを OUD 構成に追加します。
    # pfedit /usr/share/lib/ldif/kerberos.ldif 
    # ldapmodify -p 1389 -a -h $HOSTNAME -D "cn=directory manager" \
       -f /usr/share/lib/ldif/kerberos.ldif
  6. Kerberos 構成ファイルに OUD サーバーを追加します。
    # pfedit /etc/krb5/krb5.conf
     [realms]
             EXAMPLE.COM = {
                     kdc = krb1.example.com
                     admin_server = krb1.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 = ldap://krb1:1389
             }
      ...
  7. KDC および kadmin サービスへの LDAP バインディング用の鍵および stash ファイルを作成します。
    # 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"
  8. 特権ポートが使用されるように、Kerberos 構成ファイルの ldap_servers エントリを変更します。
    # pfedit /etc/krb5/krb5.conf
           ldap_servers = ldaps://krb1:1636
  9. OUD サーバーに Kerberos エントリを追加します。
    1. KDC 役割を作成し、追加します。
      # 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 -p 1389 -a -h $HOSTNAME -D "cn=directory manager" -f kdc_roles.ldif
    2. 管理ユーザーを作成し、追加します。
      # pfedit example.ldif 
      dn: dc=example,dc=com
      changetype: modify
      replace: aci
      aci: (target ="ldap:///dc=example,dc=com")(targetattr !=
       "userPassword")(version 3.0;acl "Anonymous read-search access";
       allow (read, search, compare)(userdn = "ldap:///anyone");)
      aci: (target="ldap:///dc=example,dc=com") (targetattr =
        "*")(version 3.0; acl "allow all Admin group"; allow(all) groupdn =
        "ldap:///cn=Directory Administrators,ou=Groups,dc=example,dc=com";)
      
      dn: ou=Groups, dc=example,dc=com
      objectclass: top
      objectclass: organizationalunit
      ou: Groups
      
      dn: cn=Directory Administrators, ou=Groups, dc=example,dc=com
      cn: Directory Administrators
      objectclass: top
      objectclass: groupofuniquenames
      ou: Groups
      uniquemember: uid=kvaughan, ou=People, dc=example,dc=com
      uniquemember: uid=rdaugherty, ou=People, dc=example,dc=com
      uniquemember: uid=hmiller, ou=People, dc=example,dc=com
      
      dn: ou=People, dc=example,dc=com
      objectclass: top
      objectclass: organizationalunit
      ou: People
      aci: (target ="ldap:///ou=People,dc=example,dc=com")(targetattr =
       "userpassword || telephonenumber || facsimiletelephonenumber")(version 3.0;
       acl "Allow self entry modification";allow (write)(userdn = "ldap:///self");)
      aci: (target ="ldap:///ou=People,dc=example,dc=com")(targetattr !=
       "cn || sn || uid")(targetfilter ="(ou=Accounting)")(version 3.0;
       acl "Accounting Managers Group Permissions";allow (write) (groupdn =
        "ldap:///cn=Accounting Managers,ou=groups,dc=example,dc=com");)
      aci: (target ="ldap:///ou=People,dc=example,dc=com")(targetattr !=
       "cn || sn || uid")(targetfilter ="(ou=Human Resources)")(version 3.0;
       acl "HR Group Permissions";allow (write)(groupdn = "ldap:///cn=HR Managers,
       ou=groups,dc=example,dc=com
       ");)
      aci: (target ="ldap:///ou=People,dc=example,dc=com")(targetattr !=
       "cn ||sn || uid")(targetfilter ="(ou=Product Testing)")(version 3.0;
       acl "QA Group Permissions";allow (write)(groupdn = "ldap:///cn=QA Managers,
       ou=groups,dc=example,dc=com");)
      aci: (target ="ldap:///ou=People,dc=example,dc=com")(targetattr !=
       "cn || sn || uid")(targetfilter ="(ou=Product Development)")(version 3.0;
       acl "Engineering Group Permissions";allow (write)(groupdn = "ldap:///
       cn=PD Managers,ou=groups,dc=example,dc=com");)
      
      dn: ou=Special Users,dc=example,dc=com
      objectclass: top
      objectclass: organizationalUnit
      ou: Special Users
      description: Special Administrative Accounts
       
      # ldapmodify -p 1389 -a -h $HOSTNAME -D "cn=directory manager" -f example.ldif
    3. LDAP エントリに対応する ACL を作成し、追加します。
      # 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="*")
       (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
  10. OUD サーバーの TLS 証明書を生成し、格納します。

    この一連のコマンドによって、鍵マネージャープロバイダ、信頼マネージャープロバイダ、および接続ハンドラも作成されます。

    # export LDAPHOME=~/Oracle/Middleware/asinst_8/OUD
    # export LDAPHOME=$PWD
    # export LDAP_SERVER_DN=krb1.example.com
    # export STORE_PASSWD=xxxxxxxx
    # export LDAP_BINDPWF=$LDAPHOME/config/keystore.pin
    # export LDAP_ADMIN_PORT=4444
    # export LDAP_BINDDN="cn=directory manager"
    # export LDAP_SERVER=krb1.example.com
    # rm $LDAPHOME/config/keystore
    # rm $LDAPHOME/config/truststore
    # echo $STORE_PASSWD > LDAP_BINDPWF
    # keytool -genkeypair -alias server-cert -keyalg rsa \
       -dname "CN=$LDAP_SERVER_DN" -keystore $LDAPHOME/config/keystore \
       -storepass $STORE_PASSWD -keypass $STORE_PASSWD
    # keytool -selfcert -alias server-cert -validity 1825 \
       -keystore $LDAPHOME/config/keystore -storetype JKS -storepass $STORE_PASSWD
    # keytool -list -alias server-cert -keystore $LDAPHOME/config/keystore \
       -storepass $STORE_PASSWD
    # keytool -exportcert -alias server-cert -file $LDAPHOME/config/server-cert.txt \
       -rfc -keystore $LDAPHOME/config/keystore -storepass $STORE_PASSWD
    # cp $LDAPHOME/config/server-cert.txt /var/ldap/certdb.pem
  11. 鍵マネージャープロバイダ、信頼マネージャープロバイダ、および接続ハンドラを有効にします。
    # dsconfig -X -n -h $LDAP_SERVER -p $LDAP_ADMIN_PORT -D "$LDAP_BINDDN" \
      -j $LDAP_BINDPWF set-connection-handler-prop --handler-name "LDAPS Connection Handler" \
      --set key-manager-provider:JKS --set trust-manager-provider:JKS \
      --set listen-port:1636 --set enabled:true
    # bin/stop-ds
  12. (オプション) SSL LDAP クエリーを使用して構成を確認します。
    # /usr/lib/openldap/bin/ldapsearch -v -x -D "$LDAP_BINDDN" -w $LDAP_BINDPW \
       -H ldaps://$LDAP_SERVER_DN:1636 -b "" -s base objectclass='*'
  13. このシステムのクロックをレルム内のほかのクロックと同期します。

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


    注 -  マスター KDC をクロック同期サーバーにすることはできません。