同じサーバー上に KDC と LDAP をインストールすると、パフォーマンスが向上します。このセクションでは、マルチマスター構成と呼ばれる 2 つのマスター KDC を作成します。各マスター KDC は LDAP サーバー上に存在します。
主な手順は次のとおりです。
証明書、プロファイル、および Kerberos スキーマを含む 1 番目のマスター Oracle DSEE サーバーの構成
1 番目のマスター KDC の構成
2 番目の Oracle DSEE サーバーの構成
2 番目のマスター KDC の構成
マスター KDC のクロックとクロック同期サーバーとの同期
Kerberos サービスの有効化
この手順では、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 でのユーザーとプロセスのセキュリティー保護 の 割り当てられている管理権利の使用を参照してください。
LDAP サーバーでは TLS 証明書が使用されます。
# 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
# 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 ...
# ldapsearch -Z -P /var/ldap -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
# ldapmodify -h $HOSTNAME -D "cn=directory manager" \ -f /usr/share/lib/ldif/kerberos.ldif
# 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 } ...
# 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 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
# 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
# pfedit /etc/krb5/kdc.conf ... [realms] EXAMPLE.COM = { profile = /etc/krb5/krb5.conf ...
認証が成功するには、すべてのクロックが、krb5.conf ファイルの libdefaults セクションで定義されているデフォルトの時間内に収まっている必要があります。詳細は、krb5.conf(4) のマニュアルページおよびKDC と Kerberos クライアントのクロックの同期化を参照してください。
# svcadm enable krb5kdc # svcadm enable kadmin
2 番目の LDAP サーバー kdc2 を構成するときに、1 番目の LDAP サーバー kdc1 を更新します。
kdc1# dsconf enable-repl -h $HOSTNAME -p 389 -d 1 master dc=example,dc=com
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
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
適切に構成された 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
kdc1# kdb5_ldap_util stashsrvpw "cn=kdc service,ou=profile,dc=example,dc=com" kdc1# kdb5_util stash
管理主体は tester/admin です。その他のパラメータは同じ設定のままです。
2 番目の KDC 上で LDAP TLS バインディングを構成したあとに、/etc/krb5/krb5.conf ファイルを更新します。
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 } ...
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
kdc2# pfedit /etc/krb5/kdc.conf ... [realms] EXAMPLE.COM = { profile = /etc/krb5/krb5.conf ...
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
認証が成功するには、すべてのクロックが、krb5.conf ファイルの libdefaults セクションで定義されているデフォルトの時間内に収まっている必要があります。詳細は、krb5.conf(4) のマニュアルページおよびKDC と Kerberos クライアントのクロックの同期化を参照してください。
kdc2# svcadm enable krb5kdc kdc2# svcadm enable kadmin