이 절차에서는 다음 구성 매개변수를 사용합니다.
영역 이름 = 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 - Documentation을 참조하십시오.
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 파일에 다음 항목을 추가합니다.
realms 절에 database_module을 정의하는 항목을 추가합니다.
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 구성 프로세스를 완료하려면 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 FMRI로 구성된 경우 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를 하나 이상 설치해야 합니다. 수행 방법은 수동으로 슬레이브 KDC를 구성하는 방법을 참조하십시오.