同じサーバー上に KDC と LDAP をインストールすると、パフォーマンスが向上します。
主な手順は次のとおりです。
OUD パッケージのインストール
OUD サーバーの構成
Kerberos 構成ファイルへの OUD サーバーの追加
KDC の鍵の作成と、OUD サーバーへの特権ポートの指定
OUD サーバー上での KDC 役割およびサービスの構成
OUD サーバーの証明書と鍵の作成およびインストール
テスト
マスター 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 でのユーザーとプロセスのセキュリティー保護 の 割り当てられている管理権利の使用を参照してください。
Oracle Unified Directory の Web サイトの指示に従います。
この構成では、次のパラメータを使用します。
リスナーポート: 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
# ldapsearch -p 1389 -D "cn=directory manager" -h $HOSTNAME -b "" -s base objectclass='*'
# 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
# pfedit /usr/share/lib/ldif/kerberos.ldif # ldapmodify -p 1389 -a -h $HOSTNAME -D "cn=directory manager" \ -f /usr/share/lib/ldif/kerberos.ldif
# 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 } ...
# 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"
# pfedit /etc/krb5/krb5.conf ldap_servers = ldaps://krb1:1636
# 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
# 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
# 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
この一連のコマンドによって、鍵マネージャープロバイダ、信頼マネージャープロバイダ、および接続ハンドラも作成されます。
# 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
# 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
# /usr/lib/openldap/bin/ldapsearch -v -x -D "$LDAP_BINDDN" -w $LDAP_BINDPW \ -H ldaps://$LDAP_SERVER_DN:1636 -b "" -s base objectclass='*'
認証が成功するには、すべてのクロックが、krb5.conf ファイルの libdefaults セクションで定義されているデフォルトの時間内に収まっている必要があります。詳細は、krb5.conf(4) のマニュアルページおよびKDC と Kerberos クライアントのクロックの同期化を参照してください。