この手順では、次の構成パラメータを使用します。
レルム名 = EXAMPLE.COM
DNS ドメイン名 = example.com
マスター KDC = kdc1.example.com
ディレクトリサーバー = dsserver.example.com
admin 主体 = kws/admin
LDAP サービスの FMRI = svc:/application/sun/ds:ds--var-opt-SUNWdsee-dsins1
オンラインヘルプ URL = http://docs.oracle.com/cd/E23824_01/html/821-1456/aadmin-23.html
始める前に
ホストが DNS を使用するように構成されています。パフォーマンスを向上させるためには、KDC と LDAP ディレクトリサービスを同じサーバーにインストールしてください。さらに、ディレクトリサーバーを実行するようにしてください。次の手順は、Oracle Directory Server Enterprise Edition を使用しているサーバーで機能します。詳細は、Oracle Identity Management – ドキュメントを参照してください。
KDC サーバー上で root 役割になる必要があります。詳細は、Oracle Solaris 11.2 でのユーザーとプロセスのセキュリティー保護 の割り当てられている管理権利の使用を参照してください。
次の手順では、ディレクトリサーバーの自己署名付き証明書を使用するように KDC を構成します。
# /export/sun-ds6.1/ds6/bin/dsadm show-cert -F der /export/sun-ds6.1/directory2 \ 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
詳細は、pktool(1) のマニュアルページを参照してください。
この例では、cn=directory manager エントリに管理権限があることを前提にしています。
master# /usr/bin/ldapsearch -Z -P /var/ldap -D "cn=directory manager" \ -h dsserver.example.com -b "" -s base objectclass='*' Subject: "CN=dsserver.example.com,CN=636,CN=Directory Server,O=Example Corporation
CN=dsserver.example.com エントリには短い名前ではなく、完全修飾ホスト名が含まれている必要があることに注意してください。
# ldapmodify -h dsserver.example.com -D "cn=directory manager" \ -f /usr/share/lib/ldif/kerberos.ldif
krb5.conf ファイルに次のエントリを追加します。
database_module を定義するエントリを realms セクションに追加します。
database_module = LDAP
[dbmodules] LDAP = { ldap_kerberos_container_dn = "cn=krbcontainer,dc=example,dc=com" db_library = kldap 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://dsserver.example.com }
このコマンドによって、krbcontainer とその他のいくつかのオブジェクトが作成されます。また、/var/krb5/.k5.EXAMPLE.COM マスター鍵と、その鍵の stash ファイルも作成されます。このコマンドのオプションについては、kdb5_ldap_util(1M) のマニュアルページを参照してください。
# kdb5_ldap_util -D "cn=directory manager" create -P master-key -r EXAMPLE.COM -s
これらのパスワードは、KDC がディレクトリサーバーにバインドするときに使用します。KDC は、その KDC が使用しているアクセスの種類に応じて異なる役割を使用します。
# 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"
dn: cn=kdc service,ou=profile,dc=example,dc=com cn: kdc service sn: kdc service objectclass: top objectclass: person userpassword: xxxxxxxx dn: cn=kadmin service,ou=profile,dc=example,dc=com cn: kadmin service sn: kadmin service objectclass: top objectclass: person userpassword: xxxxxxxx
# ldapmodify -a -h dsserver.example.com -D "cn=directory manager" -f kdc_roles.ldif
# cat << EOF | ldapmodify -h dsserver.example.com -D "cn=directory manager" # Set kadmin ACL for everything under krbcontainer. dn: cn=krbcontainer,dc=example,dc=com changetype: modify add: 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 add: aci aci: (target="ldap:///ou=people,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";) EOF
レルムとサーバーを指定する必要があります。このファイルについては、krb5.conf(4) のマニュアルページを参照してください。
kdc1 # pfedit /etc/krb5/krb5.conf [libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = kdc1.example.com admin_server = kdc1.example.com } [domain_realm] .example.com = EXAMPLE.COM # # if the domain name and realm name are equivalent, # this entry is not needed # [logging] default = FILE:/var/krb5/kdc.log kdc = FILE:/var/krb5/kdc.log [appdefaults] gkadmin = { help_url = http://docs.oracle.com/cd/E23824_01/html/821-1456/aadmin-23.html }
この例では、default_realm、kdc、admin_server、およびすべての domain_realm エントリの行が変更されました。さらに、オンラインヘルプ URL も変更されました。
レルムを指定する必要があります。このファイルについては、kdc.conf(4) のマニュアルページを参照してください。
この例では、管理者はレルム名の定義に加えて、増分伝播とロギングのデフォルト値を変更します。
kdc1 # pfedit /etc/krb5/kdc.conf [kdcdefaults] kdc_ports = 88,750 [realms] EXAMPLE.COM = { profile = /etc/krb5/krb5.conf database_name = /var/krb5/principal acl_file = /etc/krb5/kadm5.acl kadmind_port = 749 max_life = 8h 0m 0s max_renewable_life = 7d 0h 0m 0s sunw_dbprop_enable = true sunw_dbprop_master_ulogsize = 1000 }
作成された /etc/krb5/kadm5.acl ファイルには、KDC を管理できる主体名がすべて含まれている必要があります。
kws/admin@EXAMPLE.COM *
前のエントリにより、EXAMPLE.COM レルム内の kws/admin 主体は KDC 内の主体やポリシーを変更できるようになります。デフォルトの主体エントリはアスタリスク (*) です。これは、すべての admin 主体に一致します。このエントリはセキュリティーリスクになる場合があります。すべての admin 主体とその権利を明示的に記載するように、このファイルを変更してください。詳細は、kadm5.acl(4) のマニュアルページを参照してください。
kdc1 # /usr/sbin/kadmin.local kadmin.local:
必要な数の admin 主体を追加できます。KDC 構成プロセスを完了するには、少なくとも 1 つの admin 主体を作成する必要があります。この例では、kws/admin 主体を作成します。「kws」の代わりに、適切な主体名で置き換えることができます。
kadmin.local: addprinc kws/admin Enter password for principal kws/admin@EXAMPLE.COM:/** Type strong password **/ Re-enter password for principal kws/admin@EXAMPLE.COM: xxxxxxxx Principal "kws/admin@EXAMPLE.COM" created. kadmin.local:
kadmin.local: quit
LDAP サーバーと KDC サーバーが同じホスト上で実行されており、かつ LDAP サービスが SMF を使用して構成されている場合は、Kerberos デーモンの LDAP サービスへの依存関係を追加します。この依存性により、LDAP サービスが再起動すると KDC サービスも再起動するようになります。
# svccfg -s security/krb5kdc svc:/network/security/krb5kdc> addpg dsins1 dependency svc:/network/security/krb5kdc> setprop dsins1/entities = \ fmri: "svc:/application/sun/ds:ds--var-opt-SUNWdsee-dsins1" svc:/network/security/krb5kdc> setprop dsins1/grouping = astring: "require_all" svc:/network/security/krb5kdc> setprop dsins1/restart_on = astring: "restart" svc:/network/security/krb5kdc> setprop dsins1/type = astring: "service" svc:/network/security/krb5kdc> exit
# svccfg -s security/kadmin svc:/network/security/kadmin> addpg dsins1 dependency svc:/network/security/kadmin> setprop dsins1/entities =\ fmri: "svc:/application/sun/ds:ds--var-opt-SUNWdsee-dsins1" svc:/network/security/kadmin> setprop dsins1/grouping = astring: "require_all" svc:/network/security/kadmin> setprop dsins1/restart_on = astring: "restart" svc:/network/security/kadmin> setprop dsins1/type = astring: "service" svc:/network/security/kadmin> exit
冗長性を提供するには、スレーブ KDC を必ず 1 つ以上インストールするようにしてください。手順については、スレーブ KDC を手動で構成する方法を参照してください。