Sun 엔터프라이즈 인증 메커니즘 안내서

KDC 서버 구성

SEAM 소프트웨어를 설치한 후 KDC 서버를 구성해야 합니다. 마스터 KDC와 하나 이상의 슬레이브 KDC를 구성하면 증명서 발행 서비스를 사용할 수 있습니다. 이러한 증명서는 SEAM의 기초이므로 다른 작업을 수행하기 전에 KDC를 설치해야 합니다.

마스터 KDC와 슬레이브 KDC의 가장 큰 차이는 마스터만 데이터베이스 관리 요청을 처리할 수 있다는 것입니다. 예를 들어, 마스터 KDC에서 암호를 변경하거나 새 주체를 추가하면 이러한 변경 사항이 슬레이브 KDC로 전파됩니다. 슬레이브 KDC와 마스터 KDC는 모두 증명서를 생성하므로 마스터 KDC에서 응답하지 못하는 경우 중복이 발생합니다.

마스터 KDC 구성 방법

완전한 예를 제공하기 위해 사전 구성 프로시저를 실행하지 않았다고 가정합니다. 소프트웨어 설치 시 사전 구성 프로시저를 사용하면 프로시저에 포함된 대부분의 파일을 편집할 필요 없이 파일 내용만 검토하면 됩니다.

이 프로시저에는 다음과 같은 구성 매개변수가 사용됩니다.

  1. 마스터 KDC 구성에 필요한 조건

    이 프로시저를 사용하려면 마스터 KDC 소프트웨어가 설치되어 있고,DNS가 실행 중이어야 합니다. 스왑 가능한 마스터를 구성하려면 특별한 이름 지정 방법에 대해 "마스터 및 슬레이브 KDC 스와핑"을 참고하십시오.

  2. 마스터 KDC의 수퍼유저가 됩니다.

  3. Kerberos 구성 파일(krb5.conf)을 편집합니다.

    영역 이름과 서버 이름을 변경해야 합니다. 이 파일에 대한 자세한 설명은 krb5.conf(4) 매뉴얼 페이지를 참고하십시오. 구성 파일을 사용하여 SEAM 소프트웨어를 설치한 경우에는 구성 파일을 편집하지 않고 내용만 확인합니다.


    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = ACME.COM
    
    [realms]
                    ACME.COM = {
                    kdc = kdc1.acme.com
                    kdc = kdc2.acme.com
                    admin_server = kdc1.acme.com
            }
    [domain_realm]
            .acme.com = ACME.COM
    #
    # 도메인 이름과 영역 이름이 동일할 경우
    # 이 항목은 사용하지 않습니다.
    #
    [logging]
            default = FILE:/var/krb5/kdc.log
            kdc = FILE:/var/krb5/kdc.log
    
    [appdefaults]
        gkadmin = {
            help_url = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
              }

    이 예에서 default_realm, kdc, admin_server, domain_realm 항목의 행이 변경되었습니다. default_realm 행은 전체 예를 보여 주기 위해 포함되었지만 영역 이름과 도메인 이름이 동일할 경우에는 이 행이 작성되지 않습니다. help_url을 정의하는 행도 편집되었습니다.

  4. KDC 구성 파일(kdc.conf)을 편집합니다.

    영역 이름을 변경해야 합니다. 이 파일에 대한 자세한 설명은 kdc.conf(4) 매뉴얼 페이지를 참고하십시오. 구성 파일을 사용하여 SEAM 소프트웨어를 설치한 경우에는 구성 파일을 편집하지 않고 내용만 확인합니다.


    kdc1 # cat /etc/krb5/kdc.conf
    [kdcdefaults]
            kdc_ports = 88,750
    
    [realms]
            ACME.COM= {
                    profile = /etc/krb5/krb5.conf
                    database_name = /var/krb5/principal
                    admin_keytab = /var/krb5/kadm5.keytab
                    acl_file = /var/krb5/kadm5.acl
                    kadmind_port = 749
                    max_life = 8h 0m 0s
                    max_renewable_life = 7d 0h 0m 0s
            }

    이 예에서 realms 섹션의 영역 이름 정의가 변경되었습니다.

  5. kdb5_util을 사용하여 KDC 데이터베이스를 작성합니다.

    kdb5_util 명령은 KDC 데이터베이스를 작성하며 -s 옵션과 함께 사용될 경우 kadmindkrb5kdc 데몬을 시작하기 전에 KDC를 인증 받기 위해 필요한 stash 파일을 작성합니다.


    kdc1 # /usr/krb5/sbin/kdb5_util create -r ACME.COM -s
    ACME.COM' 영역의 '/var/krb5/principal' 데이터베이스를 초기화합니다.
    마스터 키 이름 'K/M@ACME.COM'
    데이터베이스 마스터 암호를 입력하라는 메시지가 나타납니다.
    이 암호를 잘 기억해야 합니다.
    KDC 데이터베이스 마스터 키 입력: <키를 입력합니다>
    	확인을 위해 KDC 데이터베이스 마스터 키 재입력: <다시 입력합니다>
    

    영역 이름이 서버의 이름 공간 도메인 이름과 동일한 경우 영역 이름 앞의 -r 옵션은 필요하지 않습니다.

  6. Kerberos 액세스 제어 목록 파일(kadm5.acl)을 편집합니다.

    데이터를 입력한 다음 /etc/krb5/kadm5.acl에는 KDC를 관리하도록 허용된 모든 주체의 이름이 포함되어야 합니다. 추가된 첫번째 항목은 다음과 같습니다.


    kws/admin@ACME.COM   *

    이 항목은 ACME.COM 영역의 kws/admin 주체에게 KDC에서 주체나 정책을 수정할 수 있는 권한을 줍니다. 기본 설치 시에는 이 항목에 모든 admin 주체에 해당하는 "*"가 포함됩니다. 하지만 보안상의 위험이 있을 수 있으므로 모든 admin 주체의 목록을 직접 포함시키는 것이 안전합니다.

  7. kadmin.local을 시작합니다.

    다음 하위 단계에서는 SEAM에서 사용하는 주체를 작성합니다.


    kdc1 # /usr/krb5/sbin/kadmin.local
    kadmin.local: 
    1. kadmin.local을 사용하여 관리 주체를 데이터베이스에 추가합니다.

      admin 주체는 필요한 만큼 추가할 수 있으며, 적어도 한 개 이상 추가해야만 KDC 구성 절차를 완료할 수 있습니다. 이 예에서는 kws/admin 주체가 추가되었습니다. "kws" 대신에 적절한 주체 이름을 사용합니다.


      kadmin.local: addprinc kws/admin
      kws/admin@ACME.COM 주체의 암호 입력: <암호를 입력합니다>
      kws/admin@ACME.COM 주체의 암호 재입력: <다시 입력합니다>
      "kws/admin@ACME.COM" 주체가 작성되었습니다.
      Kadmin.local: 
    2. kadmin.local을 사용하여 kadmin의 키 테이블 파일을 작성합니다.

      이 명령은 kadminchangepw 주체 항목이 있는 특수 키 테이블 파일을 작성합니다. 이들 주체는 kadmind 서비스에 필요합니다.


      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc1.acme.com
      kvno가 3인 kadmin/kdc1.acme.com 주체의 항목, DES-CBC-CRC 암호화 유형이
                 WRFILE(/etc/krb5/kadm5.keytab) 키 테이블에 추가되었습니다.
      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc1.acme.com
      kvno가 3인 changepw/kdc1.acme.com 주체의 항목, DES-CBC-CRC 암호화 유형이
                 WRFILE(/etc/krb5/kadm5.keytab) 키 테이블에 추가되었습니다.
      kadmin.local: 
    3. kadmin.local을 종료합니다.

      다음 단계에 필요한 모든 주체가 추가되었습니다.


      kadmin.local: quit
      
  8. Kerberos 데몬을 시작합니다.


    kdc1 # /etc/init.d/kdc start
    kdc1 # /etc/init.d/kdc.master start
    
  9. kadmin을 시작합니다.

    이 때 "SEAM 관리 도구"를 사용하여 주체를 추가할 수 있습니다. 이해를 돕기 위해 다음 명령행의 예를 참고하십시오. 이전 단계에서 작성한 admin 주체 이름으로 로그온해야 합니다.


    kdc1 # /usr/krb5/sbin/kadmin -p kws/admin
    암호 입력: <kws/admin 암호를 입력합니다>
    kadmin: 
    1. kadmin을 사용하여 마스터 KDC 호스트 주체를 작성합니다.

      호스트 주체는 kerberos 암호화 지원 서비스(예: ftp, telnet)와 kerberos 암호화 지원 응용 프로그램(예: klist, kprop)에서 사용됩니다.


      kadmin: addprinc -randkey host/kdc1.acme.com
      "host/kdc1.acme.com@ACME.COM" 주체가 작성되었습니다.
      kadmin: 
    2. 선택 사항: kadmin을 사용하여 마스터 KDC root 주체를 작성합니다.

      이 주체는 인증된 NFS를 마운트하는 데 사용되므로 마스터 KDC에서는 필요하지 않습니다.


      kadmin: addprinc root/kdc1.acme.com
      root/kdc1.acme.com@ACME.COM 주체의 암호 입력: <암호를 입력합니다>
      root/kdc1.acme.com@ACME.COM 주체의 암호 재입력: <다시 입력합니다>
      "root/kdc1.acme.com@ACME.COM" 주체가 작성되었습니다.
      kadmin: 
    3. 마스터 KDC의 호스트 주체를 마스터 KDC의 키 테이블 파일에 추가합니다.

      호스트 주체를 키 테이블 파일에 추가하면 주체가 자동으로 사용됩니다.


      kadmin: ktadd host/kdc1.acme.com
      kadmin: kvno가 3인 host/kdc1.acme.com 주체의 항목,
        DES-CBC-CRC 암호화 유형이 WRFILE(/etc/krb5/krb5.keytab)
        키 테이블에 추가되었습니다.
      kadmin: quit
      
    4. kadmin을 종료합니다.


      kadmin: quit
      
  10. 각 KDC에 대한 항목을 전파 구성 파일(kpropd.acl)에 추가합니다.

    이 파일에 대한 자세한 설명은 kprop(1M) 매뉴얼 페이지를 참고하십시오. 구성 파일을 사용하여 SEAM 소프트웨어를 설치한 경우에는 구성 파일을 편집하지 않고 내용만 확인합니다.


    kdc1 # cat /etc/krb5/kpropd.acl
    host/kdc1.acme.com@ACME.COM
    host/kdc2.acme.com@ACME.COM
  11. 선택 사항: NTP나 기타 클록 동기화 메커니즘을 사용하여 마스터 KDC 클록을 동기화합니다.

    NTP를 반드시 설치할 필요는 없지만 인증을 받으려면 모든 클록이 krb5.conf 파일의 libdefaults 섹션에 정의된 기본 시간 범위에 포함되어야 합니다. NTP에 대한 자세한 내용은 "KDC와 SEAM 클라이언트의 클록 동기화"를 참고하십시오.

슬레이브 KDC 구성 방법

이 프로시저에서는 kdc3라는 새로운 슬레이브 KDC를 구성합니다. 완전한 예를 제공하기 위해, 소프트웨어 설치시 사전 구성 프로시저를 사용하지 않았고 사전 구성 프로시저를 실행할 때 kdc3를 슬레이브로 정의하지 않았다고 가정합니다. 사전 구성 프로시저를 사용하고 kdc3를 슬레이브로 지정하면 프로시저에 포함된 대부분의 파일을 편집할 필요 없이 파일 내용만 검토하면 됩니다.

이 프로시저에서는 다음과 같은 구성 매개변수가 사용됩니다.

  1. 슬레이브 KDC 구성에 필요한 조건

    이 프로시저를 수행하려면 마스터 KDC를 구성하고 SEAM 슬레이브 KDC 소프트웨어를 kdc3에 설치해야 합니다. 스왑 가능한 슬레이브를 구성하려면 특별한 이름 지정 방법에 대해 "마스터 및 슬레이브 KDC 스와핑"을 참고하십시오.

  2. 마스터 KDC의 수퍼유저가 됩니다.

  3. 마스터 KDC에서 kadmin을 시작합니다.

    마스터 KDC를 구성할 때 작성한 admin 주체의 이름으로 로그온해야 합니다.


    kdc1 # /usr/krb5/sbin/kadmin -p kws/admin
    암호 입력: <kws/admin 암호를 입력합니다>
    kadmin: 
    1. 마스터 KDC에서 슬레이브 호스트 주체가 데이터베이스에 추가되어 있지 않으면 kadmin을 사용하여 추가합니다.

      슬레이브가 제대로 실행되려면 호스트 주체가 있어야 합니다.


      kadmin: addprinc -randkey host/kdc3.acme.com 
      "host/kdc3@ACME.COM" 주체가 작성되었습니다.
      kadmin: 
    2. 선택 사항: 마스터 KDC에서 kadmin을 사용하여 슬레이브 KDC root 주체를 작성합니다.

      이 주체는 슬레이브에서 인증된 파일 시스템을 NFS로 마운트할 때만 필요합니다.


      kadmin: addprinc root/kdc3.acme.com
      root/kdc3.acme.com@ACME.COM 주체의 암호 입력: <암호를 입력합니다>
      root/kdc3.acme.com@ACME.COM 주체의 암호 재입력: <다시 입력합니다>
      "root/kdc3.acme.com@ACME.COM" 주체가 작성되었습니다.
      kadmin: 
    3. kadmin을 종료합니다.


      kadmin: quit
      
  4. 마스터 KDC에서 Kerberos 구성 파일(krb5.conf)을 편집합니다.

    각 슬레이브에 대한 항목을 추가해야 합니다. 이 파일에 대한 자세한 내용은 krb5.conf(4) 매뉴얼 페이지를 참고하십시오. 사전 구성 프로시저를 실행할 때 kdc3를 슬레이브 서버로 정의했다면 파일을 편집하지 않고 내용만 확인합니다.


    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = ACME.COM
    
    [realms]
                    ACME.COM = {
                    kdc = kdc1.acme.com
                    kdc = kdc2.acme.com
                    kdc = kdc3.acme.com
                    admin_server = kdc1.acme.com
            }
    
    [domain_realm]
            .acme.com = ACME.COM
    #
    # 만약 도메인이름과 영역이름이 동등하다면,
    # 이 사항은 필요없음
    #        
    [logging]
            default = FILE:/var/krb5/kdc.log
            kdc = FILE:/var/krb5/kdc.log
    
    [appdefaults]
        gkadmin = {
            help_url = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
    
  5. 마스터 KDC에서 각 슬레이브 KDC의 항목을 데이터베이스 전파 구성 파일 (kpropd.acl)에 추가합니다.

    이 파일에 대한 자세한 내용은 kprop(1M) 매뉴얼 페이지를 참고하십시오. 사전 구성 프로시저를 실행할 때 kdc3를 슬레이브 서버로 정의했다면 파일을 편집하지 않고 내용만 확인합니다.


    kdc1 # cat /etc/krb5/kpropd.acl
    host/kdc1.acme.com@ACME.COM
    host/kdc2.acme.com@ACME.COM
    host/kdc3.acme.com@ACME.COM
    
  6. 모든 슬레이브에서 다음을 수행합니다. 마스터 KDC 서버로부터 KDC 관리 파일을 복사합니다.

    마스터 KDC 서버에서 각 KDC 서버에 필요한 정보를 업데이트했기 때문에 모든 슬레이브 KDC에서 이 단계를 수행해야 합니다. 사전 구성 프로시저를 실행할 때 kdc3를 슬레이브 서버로 정의했다면 파일을 복사하지 않고 파일 내용만 확인합니다. ftp나 기타 전송 메커니즘을 사용하여 마스터에서 다음 파일의 복사본을 가져옵니다.

    • /etc/krb5/krb5.conf

    • /etc/krb5/kdc.conf

    • /etc/krb5/kpropd.acl

  7. 새로운 슬레이브에서 kadmin을 사용하여 슬레이브의 호스트 주체를 슬레이브의 키 테이블 파일에 추가합니다.

    마스터 KDC를 구성할 때 작성한 admin 주체의 이름으로 로그온해야 합니다. 이 항목을 통해 kprop과 기타 Kerberos 암호화를 지원하는 응용 프로그램이 실행됩니다.


    kdc3 # /usr/krb5/sbin/kadmin -p kws/admin
    암호 입력: <kws/admin의 암호를 입력합니다>
    kadmin: ktadd host/kdc3.acme.com
    kadmin: kvno가 3인 host/kdc3.acme.com 주체의 항목,
      DES-CBC-CRC 암호화 유형이 WRFILE(/etc/krb5/krb5.keytab)
      키 테이블에 추가되었습니다.
    kadmin: quit
    
  8. 마스터 KDC에서 crontab -e를 실행하여 백업을 자동으로 실행하는 cron 작업에 슬레이브 KDC 이름을 추가합니다.

    kprop_script 행 끝에 각 슬레이브 KDC 서버의 이름을 추가합니다.사전 구성 프로시저를 실행할 때 kdc3를 슬레이브 서버로 정의했다면 파일을 편집하지 않고 내용만 확인합니다.


    10 3 * * * /usr/krb5/lib/kprop_script kdc2.acme.com kdc3.acme.com
    

    백업 시간은 변경이 가능합니다. 위의 예에서 백업 프로세스는 매일 오전 3:10분에 시작됩니다.

  9. 마스터 KDC에서 kprop_script를 사용하여 데이터베이스를 백업하고 전파합니다.

    데이터베이스의 백업본을 사용할 수 있으면 다른 백업 작업을 수행할 필요가 없습니다. 자세한 내용은 "Kerberos 데이터베이스를 슬레이브 KDC로 수동 전파하는 방법"을 참고하십시오.


    kdc1 # /usr/krb5/lib/kprop_script kdc3.acme.com
    kdc3.acme.com(으)로의 데이터베이스 전파: 성공함
  10. 새로운 슬레이브에서 kdb5_util을 사용하여 stash 파일을 작성합니다.


    kdc3 # /usr/krb5/sbin/kdb5_util stash
    kdb5_util: 저장된 마스터 키를 찾거나 읽을 수 없습니다. 마스터 키를 읽는 중
    kdb5_util: 경고: 마스터 키 없이 진행합니다.
    
    KDC 데이터베이스 마스터 키 입력: <키를 입력합니다>
    
  11. 새로운 슬레이브에서 KDC 데몬(krb5kdc)을 시작합니다.


    kdc3 # /etc/init.d/kdc start
    
  12. 선택 사항: 새로운 슬레이브에서 NTP나 기타 클록 동기화 메커니즘을 사용하여 마스터 KDC 클록을 동기화합니다.

    NTP를 반드시 설치할 필요는 없지만 인증을 받으려면 모든 클록이 krb5.conf 파일의 libdefaults 섹션에 정의된 기본 시간 범위에 포함되어야 합니다. NTP에 대한 자세한 내용은 "KDC와 SEAM 클라이언트의 클록 동기화"를 참고하십시오.