Oracle® Solaris 11.2의 Kerberos 및 기타 인증 서비스 관리

인쇄 보기 종료

업데이트 날짜: 2014년 8월
 
 

LDAP 디렉토리 서버를 사용하도록 마스터 KDC를 구성하는 방법

    이 절차에서는 다음 구성 매개변수를 사용합니다.

  • 영역 이름 = 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


    주 -  gkadmin GUI에 설명된 대로 온라인 도움말 위치를 가리키도록 URL을 조정하십시오.

시작하기 전에

DNS를 사용하도록 호스트를 구성합니다. 성능을 향상시키려면 KDC 및 LDAP 디렉토리 서비스를 동일한 서버에 설치하십시오. 또한 디렉토리 서버가 실행 중이어야 합니다. 다음 절차는 Oracle Directory Server Enterprise Edition을 사용하는 서버에서 작동합니다. 자세한 내용은 Oracle Identity Management - Documentation을 참조하십시오.

KDC 서버에서 root 역할을 맡아야 합니다. 자세한 내용은 Oracle Solaris 11.2의 사용자 및 프로세스 보안 의 지정된 관리 권한 사용을 참조하십시오.

  1. SSL을 사용하여 디렉토리 서버에 연결하도록 마스터 KDC를 구성합니다.

    다음 단계에서는 디렉토리 서버의 자체 서명된 인증서를 사용하도록 KDC를 구성합니다.

    1. 디렉토리 서버에서 자체 서명된 인증서를 내보냅니다.
      # /export/sun-ds6.1/ds6/bin/dsadm show-cert -F der /export/sun-ds6.1/directory2 \
      defaultCert > /tmp/defaultCert.cert.der
    2. 마스터 KDC에서 디렉토리 서버 인증서를 가져옵니다.
      # 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) 매뉴얼 페이지를 참조하십시오.

    3. 마스터 KDC에서 SSL이 작동 중인지 테스트합니다.

      이 예에서는 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 항목에는 간단한 버전이 아닌 정규화된 호스트 이름이 포함되어야 합니다.

  2. 필요한 경우 LDAP 디렉토리를 채웁니다.
  3. LDAP의 기존 스키마에 Kerberos 스키마를 추가합니다.
    # ldapmodify -h dsserver.example.com -D "cn=directory manager" \
    -f /usr/share/lib/ldif/kerberos.ldif
  4. LDAP 디렉토리에 Kerberos 컨테이너를 만듭니다.

    krb5.conf 파일에 다음 항목을 추가합니다.

    1. 데이터베이스 유형을 정의합니다.

      realms 절에 database_module을 정의하는 항목을 추가합니다.

      database_module = LDAP
    2. 데이터베이스 모듈을 정의합니다.
      [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
      }
    3. LDAP 디렉토리에 KDC를 만듭니다.

      이 명령은 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
  5. KDC 바인드 고유 이름(DN) 암호를 숨깁니다.

    이러한 암호는 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"
  6. KDC 서비스 역할을 추가합니다.
    1. 다음과 같은 내용으로 kdc_roles.ldif 파일을 만듭니다.
      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
    2. LDAP 디렉토리에 역할 항목을 만듭니다.
      # ldapmodify -a -h dsserver.example.com -D "cn=directory manager" -f kdc_roles.ldif
  7. kadmin 관련 역할에 대한 ACL을 설정합니다.
    # 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
  8. Kerberos 구성 파일(krb5.conf)을 편집합니다.

    영역 및 서버를 지정해야 합니다. 이 파일에 대한 설명은 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
    }

    주 -  gkadmin GUI에 설명된 대로 온라인 도움말 위치를 가리키도록 URL을 조정하십시오.

    이 예에서는 default_realm, kdc, admin_server 및 모든 domain_realm 항목에 대한 라인이 변경되었습니다. 온라인 도움말 URL도 변경되었습니다.


    주 -  이전 Kerberos 시스템과 통신해야 하는 경우에는 암호화 유형을 제한해야 할 수도 있습니다. 암호화 유형 제한과 관련된 문제에 대한 설명은 Kerberos 암호화 유형을 참조하십시오.
  9. KDC 구성 파일(kdc.conf)을 편집합니다.

    영역을 지정해야 합니다. 이 파일에 대한 설명은 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
    }

    주 -  이전 Kerberos 시스템과 통신해야 하는 경우에는 암호화 유형을 제한해야 할 수도 있습니다. 암호화 유형 제한과 관련된 문제에 대한 설명은 Kerberos 암호화 유형을 참조하십시오.
  10. Kerberos 액세스 제어 목록 파일(kadm5.acl)을 편집합니다.

    채워진 /etc/krb5/kadm5.acl 파일에는 KDC를 관리할 수 있도록 허용된 모든 주체 이름이 포함되어야 합니다.

    kws/admin@EXAMPLE.COM   *

    위 항목은 EXAMPLE.COM 영역의 kws/admin 주체가 KDC의 주체 및 정책을 수정할 수 있도록 합니다. 기본 주체 항목은 모든 admin 주체와 일치하는 별표(*)입니다. 이 항목은 보안 위험을 야기할 수 있습니다. 모든 admin 주체 및 해당 권한을 명시적으로 나열하도록 파일을 수정합니다. 자세한 내용은 kadm5.acl(4) 매뉴얼 페이지를 참조하십시오.

  11. kadmin.local 명령을 시작하고 admin 주체를 만듭니다.
    kdc1 # /usr/sbin/kadmin.local
    kadmin.local: 
    1. 데이터베이스에 관리 주체를 추가합니다.

      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:
    2. kadmin.local을 종료합니다.
      kadmin.local: quit
  12. (옵션) Kerberos 서비스에 대한 LDAP 종속성을 구성합니다.

    LDAP 및 KDC 서버가 동일한 호스트에서 실행되고 있으며 LDAP 서비스가 SMF FMRI로 구성된 경우 Kerberos 데몬에 대한 LDAP 서비스에 종속성을 추가합니다. LDAP 서비스가 다시 시작되는 경우 이 종속성이 KDC 서비스를 다시 시작합니다.

    1. krb5kdc 서비스에 종속성을 추가합니다.
      # 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
    2. kadmin 서비스에 종속성을 추가합니다.
      # 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
  13. Step 7 through Step 9 in 수동으로 마스터 KDC를 구성하는 방법를 수행하여 LDAP에서 Kerberos 구성을 완료합니다.
  14. 슬레이브 KDC를 구성합니다.

    중복을 제공하려면 슬레이브 KDC를 하나 이상 설치해야 합니다. 수행 방법은 수동으로 슬레이브 KDC를 구성하는 방법을 참조하십시오.