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

3장 SEAM 구성

이 장에서는 KDC 서버, 네트워크 응용 프로그램 서버, NFS 서버, SEAM 클라이언트의 구성 절차에 대해 설명합니다. 대부분의 구성 절차는 루트 권한이 필요하므로 시스템 관리자나 고급 사용자가 수행해야 합니다. 이 장에서는 영역간 구성 절차 및 KDC 서버와 관련된 기타 주제에 대해서도 설명합니다.

SEAM 구성 작업 맵

일부 구성 절차는 다른 구성에 따라 달라지므로 특정 순서대로 수행해야 합니다. 이러한 절차는 SEAM을 사용하는 데 필요한 서비스를 구축합니다. 기타 구성 절차는 다른 구성에 관계없이 필요할 때 수행할 수 있습니다. 다음 표는 적절한 SEAM 설치 순서를 보여 줍니다.

표 3-1 단계 1: SEAM 구성 순서

작업 

설명 

참고 사항 

1. SEAM 설치 계획 

 소프트웨어 설치 프로세스를 시작하기 전에 구성 방법을 결정합니다.제 2 장

2. NTP 설치(선택 사항) 

 SEAM이 제대로 작동하려면 영역 내의 모든 시스템 클록이 동기화되어야 합니다."KDC와 SEAM 클라이언트의 클록 동기화"

3. SEAM 사전 구성 프로시저 실행(선택 사항) 

 사이트에 여러 호스트를 쉽게 설치하려면 NFS 서버에 대부분의 설치 정보를 저장하는 프로시저를 실행합니다. 설치 과정에서 이들 정보가 사용됩니다.SEAM 설치 및 제품 출시 정보

4. 마스터 KDC 서버 구성 

 영역의 마스터 KDC 서버와 데이터베이스를 구성 및 구축하는 단계입니다."마스터 KDC 구성 방법"

5. 슬레이브 KDC 서버 구성(선택 사항) 

 영역의 슬레이브 KDC 서버를 구성 및 구축하는 단계입니다."슬레이브 KDC 구성 방법"

6. KDC 서버의 보안 강화(선택 사항) 

 KDC 서버의 보안 문제를 방지하는 단계입니다."KDC 서버 액세스 제한 방법"

7. 스왑 가능한 KDC 서버 구성(선택 사항) 

 마스터 KDC와 슬레이브 KDC의 스왑 작업을 쉽게 수행하려면 이 절차의 단계를 따르십시오."스왑 가능한 슬레이브 KDC 구성 방법"

위의 필수 단계를 완료한 다음 필요에 따라 다음 절차를 수행합니다.

표 3-2 단계 2: SEAM 추가 작업

작업 

설명 

참고 사항 

영역간 인증 구성 

 영역간 통신을 구축하는 단계입니다."영역간 인증 구성"

SEAM 응용 프로그램 서버 구성 

Kerberos 인증을 통해 서버에서 ftp,, telnet,rsh 등의 서비스를 지원하도록 설정하는 단계입니다."SEAM 네트워크 응용 프로그램 서버 구성"

SEAM 클라이언트 구성 

 클라이언트에서 SEAM 서비스를 사용하도록 설정하는 단계입니다."SEAM 클라이언트 구성"

SEAM NFS 서버 구성 

 Kerberos 인증이 필요한 파일 시스템을 서버와 공유하도록 설정하는 단계입니다."SEAM NFS 서버 구성"

응용 프로그램 서버의 보안 강화 

 인증된 트랜잭션만 액세스할 수 있도록 응용 프로그램 서버의 보안을 강화하는 단계입니다."Kerberos 암호화를 지원하는 응용 프로그램만 사용하는 방법"

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 클라이언트의 클록 동기화"를 참고하십시오.

영역간 인증 구성

한 영역의 사용자가 다른 영역에서 인증 받을 수 있도록 영역을 연결하는 방법에는 여러 가지가 있지만 두 영역에서 비밀 키를 공유하도록 설정하는 것이 일반적입니다. 이 때 영역 간의 관계는 계층적이거나 직접적입니다("영역 계층" 참고).

영역간 계층적 인증 구축 방법

이 예에서는 ENG.EAST.ACME.COMEAST.ACME.COM의 두 영역을 사용합니다. 영역간 인증은 양방향으로 구축돼야 하므로, 이 프로시저는 두 영역의 마스터 KDC에서 모두 수행해야 합니다.

  1. 계층적, 영역간 인증 구축에 필요한 조건

    이 프로시저를 수행하려면 각 영역에 마스터 KDC가 구성되어 있어야 합니다. 또한 프로세스를 완전히 테스트하려면 여러 개의 클라이언트나 슬레이브 KDC를 설치해야 합니다.

  2. 첫번째 마스터 KDC에서 root가 됩니다.

  3. kadmin을 사용하여 두 영역에 대한 티켓 부여 티켓 서비스 주체를 작성합니다.

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


    # /usr/krb5/sbin/kadmin -p kws/admin
    암호 입력: <kws/admin 암호를 입력합니다>
    kadmin: addprinc krbtgt/ENG.EAST.ACME.COM@EAST.ACME.COM
    krgtgt/ENG.EAST.ACME.COM@EAST.ACME.COM 주체의 암호 입력:  <암호를 입력합니다>
    kadmin: addprinc krbtgt/EAST.ACME.COM@ENG.EAST.ACME.COM
    krgtgt/EAST.ACME.COM@ENG.EAST.ACME.COM 주체의 암호 입력: <암호를 입력합니다>
    kadmin: quit
    

    주 -

    각 서비스 주체에 대해 입력된 암호는 두 개의 KDC에서 동일해야 합니다. 즉, krbtgt/ENG.EAST.ACME.COM@EAST.ACME.COM의 암호가 두 영역에서 동일해야 합니다.


  4. 모든 영역의 도메인 이름을 정의하기 위해 Kerberos 구성 파일(krb5.conf)에 항목을 추가합니다.


    # cat /etc/krb5/krb5.conf
    [libdefaults]
      .
      .
    [domain_realm]
            .eng.east.acme.com = ENG.EAST.ACME.COM
            .east.acme.com = EAST.ACME.COM
    

    이 예에서 ENG.EAST.ACME.COMEAST.ACME.COM 영역의 도메인 이름이 정의되었습니다. 파일은 위에서 아래 방향으로 검색되므로 하위 도메인을 먼저 포함시키는 것이 중요합니다.

  5. Kerberos 구성 파일을 현재 영역의 모든 클라이언트에 복사합니다.

    영역간 인증이 작용하려면 모든 시스템(슬레이브 KDC 및 기타 서버 포함)에 새로운 버전의 Kerberos 구성 파일(/etc/krb5/krb5.conf)이 설치되어야 합니다.

  6. 두번째 영영에서 이러한 단계를 반복합니다.

영역간 직접 인증 구축 방법

이 예에서는 ENG.EAST.ACME.COMSALES.WEST.ACME.COM의 두 영역을 사용합니다. 영역간 인증은 양방향으로 구축돼야 하므로, 이 프로시저는 두 영역의 마스터 KDC에서 모두 수행해야 합니다.

  1. 영역간 직접 인증 구축에 필요한 조건

    이 프로시저를 수행하려면 각 영역에 마스터 KDC가 구성되어 있어야 합니다. 또한 프로세스를 완전히 테스트하려면 여러 개의 클라이언트와 슬레이브 KDC를 설치해야 합니다.

  2. 한 개의 마스터 KDC 서버에서 수퍼유저가 됩니다.

  3. kadmin을 사용하여 두 영역에 대한 티켓 부여 티켓 서비스 주체를 작성합니다.

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


    # /usr/krb5/sbin/kadmin -p kws/admin
    암호 입력: <kws/admin 암호를 입력합니다>
    kadmin: addprinc krbtgt/ENG.EAST.ACME.COM@SALES.WEST.ACME.COM
    주체의 암호 입력:
      krgtgt/ENG.EAST.ACME.COM@SALES.WEST.ACME.COM <암호를 입력합니다>
    kadmin: addprinc krbtgt/SALES.WEST.ACME.COM@ENG.EAST.ACME.COM
    주체의 암호 입력:
      krgtgt/SALES.WEST.ACME.COM@ENG.EAST.ACME.COM <암호를 입력합니다>
    kadmin: quit
    

    주 -

    각 서비스 주체에 대해 입력된 암호는 두 개의 KDC에서 동일해야 합니다. 즉, krbtgt/ENG.EAST.ACME.COM@SALES.WEST.ACME.COM의 암호가 두 영역에서 동일해야 합니다.


  4. 원격 영역의 직접 경로를 정의하기 위해 Kerberos 구성 파일(kdc.conf)에 항목을 추가합니다.

    다음은 ENG.EAST.ACME.COM 영역의 클라이언트에 대한 예입니다. 영역 이름을 스왑하여 SALES.WEST.ACME.COM 영역에서 적절한 정의를 얻을 수 있습니다.


    # cat /etc/krb5/krb5.conf
    [libdefaults]
     .
     .
    [capaths]
        ENG.EAST.ACME.COM = {
            SALES.WEST.ACME.COM = .
        }
    
        SALES.WEST.ACME.COM = {
            ENG.EAST.ACME.COM = .
        }
    
  5. Kerberos 구성 파일을 현재 영역의 모든 클라이언트에 복사합니다.

    영역간 인증이 작용하려면 모든 시스템(슬레이브 KDC 및 기타 서버 포함)에 새로운 버전의 Kerberos 구성 파일(krb5.conf)이 설치되어야 합니다.

  6. 두번째 영역에서 이러한 단계를 반복합니다.

SEAM 네트워크 응용 프로그램 서버 구성

네트워크 응용 프로그램 서버는 ftp, rcp, rlogin, rsh, telnet 등의 네트워크 응용 프로그램을 사용하여 액세스를 제공하는 호스트입니다. 서버에서 이러한 명령의 SEAM 버전을 사용하려면 다음과 같은 단계를 수행해야 합니다.

SEAM 네트워크 응용 프로그램 서버 구성 방법

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

  1. 응용 프로그램 서버 구성에 필요한 조건

    이 프로시저를 사용하려면 마스터 KDC가 구성되어 있고, 프로세스를 완전히 테스트하기 위해 여러 개의 클라이언트를 설치해야 합니다.

  2. SEAM 클라이언트 소프트웨어를 설치합니다.

    SEAM 클라이언트 소프트웨어는 반드시 설치해야 합니다.

  3. 선택 사항: NTP 클라이언트나 기타 클록 동기화 메커니즘을 설치합니다.

    NTP에 대한 자세한 내용은 "KDC와 SEAM 클라이언트의 클록 동기화"를 참고하십시오.

  4. kadmin을 시작합니다.

    주체를 추가하기 위해 SEAM 관리 도구를 사용하려면 "새 주체 작성 방법"을 참고하십시오. 다음 예는 명령행을 사용하여 필요한 주체를 추가하는 방법을 보여 줍니다. 마스터 KDC를 구성할 때 작성한 admin 주체의 이름으로 로그온해야 합니다.


    kdc1 # /usr/krb5/sbin/kadmin -p kws/admin
    암호 입력: <kws/admin 암호를 입력합니다>
    kadmin: 
    1. 서버의 host 주체를 작성합니다.


      kadmin: addprinc -randkey host/boston.acme.com
      "host/boston.acme.com" 주체가 작성되었습니다.
      kadmin: 
    2. 선택 사항: 호스트 주체에 대한 root 주체를 작성합니다.


      kadmin: addprinc root/boston.acme.com
      root/boston.acme.com@ACME.COM 주체의 암호 입력: <암호를 입력합니다>
      root/boston.acme.com@ACME.COM 주체의 암호 재입력: <다시 입력합니다>
      "root/boston.acme.com@ACME.COM" 주체가 작성되었습니다.
      kadmin: 
    3. 서버의 host 주체를 서버의 키 테이블에 추가합니다.

      kadmin 명령이 실행 중이 아닐 경우 다음과 같은 명령으로 재시작합니다:/usr/krb5/bin/kadmin -p kws/admin


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


      kadmin: quit
      

SEAM NFS 서버 구성

NFS 서비스에서는 주체를 직접 사용할 수 없고 UNIX UID로 사용자를 확인합니다. 주체를 UID로 변환하려면 사용자 주체를 UNIX UID로 매핑하는 증명서 테이블을 작성해야 합니다. 다음 프로시저는 SEAM NFS 서버를 구성하고, 증명서 테이블을 관리하며, NFS 마운트 파일 시스템의 Kerberos 보안 모드를 시작하기 위해 필요한 작업으로 구성됩니다. 다음 표에는 이 장에서 수행할 작업이 간략히 설명되어 있습니다.

표 3-3 SEAM NFS 서버 구성 작업 맵

작업 

설명 

참고 사항 

SEAM NFS 서버 구성 

 Kerberos 인증이 필요한 파일 시스템을 서버와 공유하도록 설정하는 단계입니다."SEAM NFS 서버 구성 방법"

증명서 테이블의 백엔드 메커니즘 변경 

gsscred에서 사용하는 백엔드 메커니즘을 정의하는 단계입니다.."테이블 gsscred의 백엔드 메커니즘 변경 방법"

증명서 테이블 작성 

 증명서 테이블을 생성하는 단계입니다."증명서 테이블 작성 방법"

사용자 주체를 UNIX UIDs로 매핑하는 증명서 테이블 변경 방법 

 증명서 테이블의 정보를 업데이트하는 단계입니다."증명서 테이블에 단일 항목 추가 방법"

Kerberos 인증으로 파일 시스템 공유 

 Kerberos 인증이 필요하도록 파일 시스템을 보안 모드와 공유하는 단계입니다."다중 Kerberos 보안 모드로 안전한 NFS 환경 설정 방법"

SEAM NFS 서버 구성 방법

이 프로시저를 사용하려면 마스터 KDC가 구성되어 있고, 프로세스를 완전히 테스트하기 위해 여러 개의 클라이언트가 필요합니다. 이 프로시저에는 다음과 같은 구성 매개변수가 사용됩니다.

  1. SEAM NFS 서버 구성에 필요한 조건

    SEAM 클라이언트 소프트웨어를 설치해야 합니다.

  2. 선택 사항: NTP 클라이언트나 기타 클록 동기화 메커니즘을 설치합니다.

    NTP에 대한 자세한 내용은 "KDC와 SEAM 클라이언트의 클록 동기화"를 참고하십시오.

  3. kadmin을 시작합니다.

    주체를 추가하기 위해 SEAM 관리 도구를 사용하려면 "새 주체 작성 방법"을 참고하십시오. 다음 예는 명령행을 사용하여 필요한 주체를 추가하는 방법을 보여 줍니다. 마스터 KDC를 구성할 때 작성한 admin 주체의 이름으로 로그온해야 합니다.


    denver #/usr/krb5/sbin/kadmin -p kws/admin
    암호 입력: <kws/admin 암호를 입력합니다>
    kadmin: 
    1. 서버의 NFS 서비스 주체를 작성합니다.


      kadmin: addprinc -randkey nfs/denver.acme.com
      "nfs/denver.acme.com" 주체가 작성되었습니다.
      kadmin:
    2. 선택 사항: NFS 서버의 root 주체를 작성합니다.


      kadmin: addprinc root/denver.acme.com
      root/denver.acme.com@ACME.COM 주체의 암호 입력: <암호를 입력합니다>
      root/denver.acme.com@ACME.COM 주체의 암호 재입력: <다시 입력합니다>
      "root/denver.acme.com@ACME.COM" 주체가 작성되었습니다.
      kadmin: 
    3. 서버의 NFS 서비스 주체를 서버의 키 테이블에 추가합니다.


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


      kadmin: quit
      
  4. gsscred 테이블을 작성합니다.

    자세한 내용은 "증명서 테이블 작성 방법"을 참고하십시오.

  5. Kerberos 보안 모드를 사용하여 NFS 파일 시스템을 공유합니다.

    자세한 내용은 "다중 Kerberos 보안 모드로 안전한 NFS 환경 설정 방법"을 참고하십시오.

  6. 모든 클라이언트에서 사용자 주체와 루트 주체를 인증합니다.

    자세한 내용은 "NFS 파일 시스템을 마운트하기 위해 root 인증 설정"을 참고하십시오.

테이블 gsscred의 백엔드 메커니즘 변경 방법

  1. NFS 서버의 수퍼유저가 됩니다.

  2. /etc/gss/gsscred.conf를 편집하고 메커니즘을 변경합니다.

    files, xfn_files, xfn_nis, xfn_nisplus, 또는xfn 등의 백엔드 메커니즘 중 하나를 선택합니다. 각 메커니즘의 장점에 대해서는 "gsscred 테이블 사용"을 참고하십시오.

증명서 테이블 작성 방법

gsscred 증명서 테이블은 NFS 서버에서 SEAM 주체를 UID와 매핑하는 데 사용됩니다. NFS 클라이언트가 Kerberos 인증을 사용하여 NFS 서버로부터 파일 시스템을 마운트하려면 이 테이블을 작성하거나 사용할 수 있어야 합니다.

  1. 필요한 서버의 수퍼유저가 됩니다.

    이러한 명령을 어느 서버에서 어떤 ID로 실행한 것인지는 gsscred 테이블을 지원하도록 선택된 백엔드 메커니즘에 따라 달라집니다. xfn_nisplus를 제외한 모든 메커니즘에서 root가 되어야 합니다.

    백엔드 메커니즘 

    실행 서버 

    files

    NFS 서버에서 실행합니다. 

    xfn

    기본 xfn 파일 설정에 따라 호스트를 선택합니다.

    xfn_files

    NFS 서버에서 실행합니다. 

    xfn_nis

    NIS 마스터에서 실행합니다. 

    xfn_nisplus

    NIS+ 데이터 변경 권한이 있는 모든 서버에서 실행할 수 있습니다.  

  2. 선택 사항: /var/fn이 존재하지 않을 때 xfn 옵션을 사용하려면 초기 XFN 데이터베이스를 작성합니다.


    # fnselect files
    # fncreate -t org -o org//
    
  3. gsscred를 사용하여 증명서 테이블을 작성합니다.

    이 명령은 /etc/nsswitch.confpasswd 항목에 나열된 모든 출처로부터 정보를 수집합니다. 증명서 테이블에 로컬 암호 항목이 포함되지 않게 하려면 일시적으로 files 항목을 삭제해야 합니다. 자세한 내용은 gsscred(1M) 매뉴얼 페이지를 참고하십시오.


    # gsscred -m kerberos_v5 -a
    

증명서 테이블에 단일 항목 추가 방법

이 프로시저를 수행하려면 NFS 서버에 gsscred 테이블이 설치되어 있어야 합니다.

  1. NFS 서버의 수퍼유저가 됩니다.

  2. gsscred를 사용하여 테이블에 항목을 추가합니다.


    # gsscred -m [mech] -n [name] -u [uid] -a
    

    mech

    사용할 보안 메커니즘 

    name

    KDC에 정의된 사용자 주체 이름 

    uid

    암호 데이터베이스에 정의된 사용자의 UID 

    -a

    UID를 주체 이름 매핑에 추가하는 옵션  

예-증명서 테이블의 단일 항목 변경

다음 예에서는 UID 3736으로 매핑된 sandy라는 이름의 사용자 항목을 추가합니다. 명령행에서 UID를 지정하지 않으면 암호 파일에서 추출됩니다.


# gsscred -m kerberos_v5 -n sandy -u 3736 -a

다중 Kerberos 보안 모드로 안전한 NFS 환경 설정 방법

  1. NFS 서버의 수퍼유저가 됩니다.

  2. /etc/dfs/dfstab 파일을 편집하고 sec= 옵션에 해당 항목에 필요한 보안 모드를 추가합니다.


    # share -F nfs -o [mode] [filesystem]
    

    mode

    공유 시 사용될 보안 모드입니다. 다중 보안 모드를 사용할 때 autofs에서 목록의 첫번째 모드를 기본적으로 사용합니다. 

    filesystem

    공유할 파일 시스템의 경로입니다. 

    지정한 파일 시스템에 액세스하는 모든 클라이언트는 Kerberos 인증이 필요합니다. 파일을 액세스하려면 NFS 클라이언트의 사용자 주체와 root 주체가 모두 인증을 받아야 합니다.

  3. NFS 서비스가 서버에서 실행 중인지 확인합니다.

    공유 명령이나 공유 명령 집합을 처음으로 실행할 경우에는 NFS 데몬이 실행 중이 아닙니다. 다음 명령을 실행하여 데몬을 종료한 후 다시 시작합니다.


    # /etc/init.d/nfs.server stop
    # /etc/init.d/nfs.server start
    
  4. 선택 사항: autofs가 사용 중이면 auto_master 데이터를 편집하여 기본 모드 이외의 다른 보안 모드를 선택합니다.

    파일 시스템을 액세스할 때 autofs를 사용하지 않거나 기본 보안 모드를 사용할 수 있을 경우에는 다음 프로시저를 수행할 필요가 없습니다.


    /home	  auto_home  -nosuid,sec=krbi
  5. 선택 사항: 기본 모드를 사용하지 않고 파일 시스템에 액세스하기 위해 mount 명령을 수동으로 실행합니다.

    mount 명령을 사용하여 보안 모드를 지정할 수도 있지만 이 방법은 자동 마운트 기능을 사용할 수 없습니다.


    # mount -F nfs -o sec=krb5p /export/home
    

예-단일 Kerberos 보안 모드로 파일 시스템 공유

이 예에서는 파일을 액세스하기 위해 Kerberos 인증이 필요합니다.


# share -F nfs -o sec=krb5 /export/home

예-다중 Kerberos 보안 모드로 파일 시스템 공유

이 예에서는 3개의 Kerberos 보안 모드가 모두 선택되었습니다. 마운트 요청이 있을 때 보안 모드를 지정하지 않으면 모든 NFS V3 클라이언트에서 첫번째로 나열된 모드(이 예의 경우 krb5)가 사용됩니다. 자세한 내용은 "share 명령변경 사항"을 참고하십시오.


# share -F nfs -o sec=krb5:krb5i:krb5p /export/home

SEAM 클라이언트 구성

SEAM 클라이언트에는 KDC 서버를 제외하고 SEAM 서비스를 사용하는 네트워크상의 모든 호스트가 포함됩니다. 이 절에서는 SEAM 클라이언트 설치 절차와 NFS 파일 시스템을 마운트하기 위해 루트 인증을 사용하는 방법에 대해 설명합니다.

SEAM 클라이언트 구성 방법

다음과 같은 구성 매개변수가 사용됩니다.

  1. SEAM 클라이언트 구성에 필요한 조건

    SEAM 클라이언트 소프트웨어를 설치해야 합니다.

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

    사전 구성 프로시저를 사용했다면 이 파일을 편집할 필요 없이 내용만 검토하면 됩니다. SEAM 기본 버전의 파일을 변경하려면 영역 및 서버 이름을 변경하고 gkadmin 도움말 파일의 경로를 지정해야 합니다.


    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
    
  3. 선택 사항: NTP나 기타 클록 동기화 메커니즘을 사용하여 마스터 KDC의 클록을 동기화합니다.

    NTP에 대한 자세한 내용은 "KDC와 SEAM 클라이언트의 클록 동기화"를 참고하십시오.

  4. 선택 사항: 미리 작성된 사용자 주체가 없으면 새로 작성합니다.

    이 호스트와 관련된 사용자에게 이미 지정된 주체가 없을 경우에만 사용자 주체를 작성합니다. SEAM 관리 도구 사용에 대한 자세한 내용은 "새 주체 작성 방법"을 참고하십시오. 명령행의 예는 다음과 같습니다.


    client1 # /usr/krb5/sbin/kadmin -p kws/admin
    암호 입력: <kws/admin 암호를 입력합니다>
    kadmin: addprinc mre
    mre@ACME.COM 주체의 암호 입력: <암호를 입력합니다>
    mre@ACME.COM 주체의 암호 재입력: <다시 입력합니다>
    kadmin: 
  5. root 주체를 작성합니다.


    kadmin: addprinc root/client1.acme.com
    root/client1.acme.com@ACME.COM 주체의 암호 입력: <암호를 입력합니다>
    root/client1.acme.com@ACME.COM 주체의 암호 재입력: <다시 입력합니다>
    kadmin: quit
    
  6. (옵션) SEAM 클라이언트 사용자가 Kerberos 인증을 사용하여 Kerberos 암호화를 지원하는 NFS 파일 시스템을 자동으로 마운트하게 하려면 root 사용자를 인증해야 합니다.

    이 절차는 kinit 명령을 사용할 때 가장 안전하게 수행할 수 있지만 사용자가 Kerberos로 보안이 설정된 파일 시스템을 마운트할 때마다 root로서 kinit를 사용해야 합니다. 이 방법 대신에 키 테이블 파일을 사용할 수도 있습니다. 키 테이블 요구 사항에 대한 자세한 내용은 "NFS 파일 시스템을 마운트하기 위해 root 인증 설정"을 참고하십시오.


    client1 # /usr/krb5/bin/kinit root/client1.acme.com
    root/client1.acme.com@ACME.COM의 암호 입력: <암호를 입력합니다>
    

    키 테이블 파일 옵션을 사용하려면 kadmin 명령으로 root 주체를 클라이언트의 키 테이블에 추가합니다.


    client1 # /usr/krb5/sbin/kadmin -p kws/admin
    암호 입력: <kws/admin 암호를 입력합니다>
    kadmin: ktadd root/client1.acme.com
    kadmin: kvno가 3인 root/client.acme.com 주체의 항목,
      DES-CBC-CRC 암호화 유형이 WRFILE:/etc/krb5/krb5.keytab
      키 테이블에 추가되었습니다.
    kadmin: quit
    
  7. 클라이언트가 Kerberos 티켓 만기일을 사용자에게 알리도록 하려면 /etc/krb5/warn.conf 파일에 해당 항목을 작성합니다.

    자세한 내용은 warn.conf(4)를 참고하십시오.

  8. SEAM 명령과 매뉴얼 페이지의 위치가 포함되도록 사용자의 셸 검색 경로를 업데이트합니다.

    구성 파일을 사용하여 SEAM 소프트웨어를 설치하고 PATH 정의가 자동으로 업데이트되도록 선택했다면 MANPATH 변수만 변경합니다. C 셸을 사용할 경우 다음과 같이 입력합니다.


    % set path=(/usr/krb5/bin $path)
    % set MANPATH=(/usr/krb5/man $MANPATH)
    

    변경 사항을 셸 검색 경로에 영구히 적용하려면 .cshrc 또는 .login 시작 파일을 편집합니다.

    Bourne 또는 Korn 셸을 사용할 경우 다음과 같이 입력합니다.


    $ PATH=/usr/krb5/bin:$PATH
    $ MANPATH=/usr/krb5/man:$MANPATH
    

    변경 사항을 셸 검색 경로에 영구히 적용하려면 .profile 시작 파일을 편집합니다.

NFS 파일 시스템을 마운트하기 위해 root 인증 설정

사용자가 Kerberos 암호화를 지원하지 않는 NFS 파일 시스템에 액세스하는 경우 root로서 NFS 파일 시스템을 마운트하거나 자동 마운트 장치를 통해 파일 시스템에 자동으로 액세스(root 권한이 필요 없음)할 수 있습니다.

Kerberos 암호화를 지원하는 NFS 파일 시스템을 마운트하는 것도 이와 동일하지만 추가로 수행해야 할 단계가 있습니다. 클라이언트의 root 주체는 대개 클라이언트의 키 테이블에 존재하지 않기 때문에 Kerberos 암호화를 지원하는 NFS 파일 시스템을 마운트하려면 사용자는 root로서 kinit 명령을 사용하여 클라이언트의 root 주체에 대한 증명서를 얻어야 합니다. 이것은 자동 마운트 장치를 사용할 때도 마찬가지입니다. 또한, 모든 사용자가 시스템의 root 암호와 root 주체의 암호를 알아야 합니다.

이러한 추가 단계를 없애려면 root에 대한 증명서가 자동으로 제공되도록 클라이언트의 root 주체를 클라이언트의 키 테이블에 추가해야 합니다. 이렇게 하면 kinit 명령을 실행하지 않고 손쉽게 NFS 파일 시스템을 마운트할 수 있지만 보안상의 문제가 발생할 수 있습니다. 예를 들어, 키 테이블에서 root 주체로 시스템에 액세스할 수 있는 모든 사용자는 root에 대한 증명서를 얻을 수 있으므로 보안에 주의해야 합니다. 자세한 내용은 "키 테이블 관리"를 참고하십시오.

KDC와 SEAM 클라이언트의 클록 동기화

Kerberos 인증 시스템을 사용하는 모든 호스트의 내부 클록은 지정된 최대 시간(클록 불균형) 내에 동기화되어야 하며, 이를 통해 추가로 Kerberos 보안 검사가 수행됩니다. Kerberos 인증을 사용하는 호스트 간의 클록 불균형이 너무 크면 클라이언트 요청이 거부됩니다.

클록 불균형은 요청을 인식 또는 거부하기 위해 응용 프로그램 서버에서 모든 Kerberos 프로토콜 메시지를 추적해야 할 시간을 결정합니다. 따라서, 클록 불균형 값이 길수록 응용 프로그램 서버에서 더 많은 정보를 수집하게 됩니다.

최대 클록 불균형의 기본값은 300초(5분)이며 krb5.conf 파일의 libdefaults 섹션에서 변경할 수 있습니다.


주 -

보안을 위해 클록 불균형 값을 300초 이내로 지정하십시오.


KDC와 SEAM 클라이언트간에 동기화된 클록을 유지하는 것이 중요하므로 NTP(Network Time Protocol) 소프트웨어를 사용하는 것이 좋습니다. Delaware 대학에서 제공한 NTP 공용 도메인 소프트웨어가 Solaris 2.6 버전부터 Solaris 소프트웨어에 포함됩니다.


주 -

클록을 동기화하는 다른 방법은 rdate 명령과 cron 작업을 사용하는 것입니다. 이 방법은 NTP를 사용하는 것보다 간단하지만 이 절에서는 NTP에 대해 중점적으로 설명합니다. 네트워크를 통해 클록 동기화를 할 경우 클록 동기화 프로토콜 자체가 안전해야 합니다.


NTP를 사용하면 네트워크 환경에서 정확한 시간과 네트워크 클록 동기화를 관리할 수 있습니다. NTP는 기본적으로 클라이언트/서버 환경에서 실행됩니다. 한 시스템을 마스터 클록(NTP 서버)으로 설정한 다음 다른 모든 시스템(NTP 클라이언트)의 클록을 마스터 클록과 동기화합니다. xntpd 데몬을 사용하면 이러한 모든 것이 해결됩니다. xntpd 데몬은 UNIX 시스템의 시간을 인터넷 표준 시간 서버와 동일하게 설정 및 관리합니다. 그림 3-1은 클라이언트/서버 환경의 NTP 구현 예를 보여줍니다.

그림 3-1 NTP를 사용하여 클록 동기화

Graphic

KDC와 SEAM 클라이언트의 클록 동기화 여부를 확인하려면 다음 단계를 수행합니다.

  1. 네트워크에 NTP 서버를 설치합니다. 이것은 마스터 KDC를 제외한 모든 시스템에서 가능합니다. "NTP 서버 설정 방법"을 참고하십시오.

  2. 네트워크에서 KDC 및 SEAM 클라이언트를 구성할 때 NTP 서버의 클라이언트로 설정합니다. "NTP 클라이언트 설정 방법"을 참고하십시오.

NTP 서버 설정 방법

  1. NTP 서버로 설정할 시스템의 수퍼유저가 됩니다.

  2. /etc/inet 디렉토리로 이동합니다.

  3. ntp.server 파일을 ntp.conf 파일로 복사합니다.


    # cp ntp.server ntp.conf
    
  4. /etc/init.d 디렉토리로 이동합니다.

  5. xntpd 데몬을 시작합니다.


    # ./xntpd start
    

NTP 클라이언트 설정 방법

  1. NTP 클라이언트로 사용할 시스템의 수퍼유저가 됩니다.

  2. /etc/inet 디렉토리로 이동합니다.

  3. ntp.client 파일을 ntp.conf 파일로 복사합니다.


    # cp ntp.client ntp.conf
    
  4. /etc/init.d 디렉토리로 이동합니다.

  5. xntpd 데몬을 시작합니다.


    # ./xntpd start
    

마스터 및 슬레이브 KDC 스와핑

이 절차를 통해 마스터 KDC를 슬레이브 KDC와 쉽게 스와핑할 수 있습니다. 이 절차는 마스터 KDC 서버가 어떤 이유로 인해 실패하거나 마스터를 다시 설치하는 경우(하드웨어를 새로 설치하는 경우 등)에만 수행합니다.

스왑 가능한 슬레이브 KDC 구성 방법

다음 절차는 마스터로 사용 가능한 슬레이브 KDC 서버에서 수행해야 합니다.

  1. 설치 시 마스터 및 스왑 가능한 슬레이브 KDC 서버의 별명을 사용합니다.

    KDC의 호스트 이름을 정의할 때는 모든 시스템의 별명이 DNS에 포함되어 있는지 확인하고 /etc/krb5/krb5.conf에 호스트를 정의할 때 별명을 사용합니다.

  2. 마스터 KDC 소프트웨어를 설치합니다.

    마스터 KDC 소프트웨어를 설치하면 스왑 시 슬레이브 KDC 서버에 필요한 모든 파일이 포함된 이진 파일 및 기타 파일들이 작성됩니다. 설치가 끝난 후 시스템을 재부팅하지 마십시오.

  3. 슬레이브 KDC 설치 단계를 수행합니다.

    스왑하기 전까지 이 서버는 영역 내의 다른 슬레이브 KDC와 동일하게 작동해야 합니다. 자세한 내용은 "슬레이브 KDC 구성 방법"을 참고하십시오. 슬레이브 소프트웨어는 설치하지 않습니다. 필요한 모든 파일은 마스터 소프트웨어를 설치할 때 이미 설치되었습니다.

  4. 마스터 KDC 명령을 이동합니다.

    마스터 KDC 명령이 슬레이브에서 실행되지 않도록 kprop, kadmind, kadmin.local을 지정된 위치로 옮깁니다.


    kdc4 # mv /usr/krb5/lib/kprop /usr/krb5/lib/kprop.save
    kdc4 # mv /usr/krb5/lib/kadmind /usr/krb5/lib/kadmind.save
    kdc4 # mv /usr/krb5/sbin/kadmin.local /usr/krb5/sbin/kadmin.local.save
    
  5. /etc/init.d/kdc.master에서 kadmind가 실행되지 않도록 설정합니다.

    슬레이브에서 KDC 데이터베이스 변경 요청을 처리할 수 없도록 하려면 스크립트에서 kadmind를 시작하는 행이 실행되지 않도록 주석행으로 변경합니다.


    kdc4 # cat /etc/init.d/kdc.master
    
     .
     .
    
    case "$1" in
    'start')
    
            if [ -f $KDC_CONF_DIR/kdc.conf ]
            then
    #                $BINDIR/kadmind
            fi
            ;;
  6. root crontab 파일의 kprop 행이 실행되지 않도록 합니다.

    이 단계는 슬레이브가 KDC 데이터베이스 복사본을 전파하지 못하게 합니다.


    kdc4 # crontab -e
    #ident  "@(#)root       1.19    98/07/06 SMI"   /* SVr4.0 1.1.3.1       */
    #
    # The root crontab should be used to perform accounting data collection.
    #
    #  The rtc command is run to adjust the real time clock if and when
    # daylight savings time changes.
    #
    10 3 * * 0,4 /etc/cron.d/logchecker
    10 3 * * 0   /usr/lib/newsyslog
    15 3 * * 0 /usr/lib/fs/nfs/nfsfind
    1 2 * * * [  -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    #10 3 * * * /usr/krb5/lib/kprop_script kdc1.acme.sun.com #SUNWkr5ma
    

마스터 및 슬레이브 KDC 스왑 방법

이 프로시저를 수행하려면 슬레이브 KDC 서버가 스왑 가능한 슬레이브로 설정되어 있어야 합니다("스왑 가능한 슬레이브 KDC 구성 방법" 참고). 이 프로시저에서 스왑될 마스터 서버의 이름은 kdc1이며 새로운 마스터가 될 슬레이브의 이름은 kdc4입니다.

  1. 기존의 마스터에서 kadmind 프로세스를 종료합니다.

    kadmind 프로세스를 종료하면 KDC 데이터베이스를 변경할 수 없습니다.


    kdc1 # /etc/init.d/kdc.master stop
    
  2. 기존의 마스터에서 다음을 수행합니다. root crontab 파일에서 kprop 행이 실행되지 않도록 합니다.

    이 단계는 기존의 마스터가 KDC 데이터베이스 복사본을 전파하지 못하게 합니다.


    kdc1 # crontab -e
    #ident  "@(#)root       1.19    98/07/06 SMI"   /* SVr4.0 1.1.3.1       */
    #
    # The root crontab should be used to perform accounting data collection.
    #
    # The rtc command is run to adjust the real time clock if and when
    # daylight savings time changes.
    # 10 3 * * 0,4 /etc/cron.d/logchecker
    10 3 * * 0   /usr/lib/newsyslog
    15 3 * * 0 /usr/lib/fs/nfs/nfsfind
    1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    #10 3 * * * /usr/krb5/lib/kprop_script kdc2.acme.sun.com #SUNWkr5ma
    
  3. 기존의 마스터에서 다음을 수행합니다. /etc/init.d/kdc.master에서 kadmind가 실행되지 않도록 설정합니다.

    서버를 재부팅할 때 마스터가 kadmind를 재시작하지 않게 하려면 스크립트에서 kadmind를 시작하는 행이 실행되지 않도록 설정합니다.


    kdc1 # cat /etc/init.d/kdc.master
    
     .
     .
    
    case "$1" in
    'start')
    
            if [ -f $KDC_CONF_DIR/kdc.conf ]
            then
    #                $BINDIR/kadmind
            fi
            ;;
  4. 기존의 마스터에서 다음을 수행합니다. kprop_script를 실행해서 데이터베이스를 백업 및 전파합니다.


    kdc1 # /usr/krb5/lib/kprop_script kdc4.acme.com
    kdc4.acme.com(으)로의 데이터베이스 전파: 성공함
  5. 기존의 마스터에서 다음을 수행합니다. 마스터 KDC 명령을 이동합니다.

    마스터 KDC 명령이 실행되지 않도록 하려면 kprop, kadmind, kadmin.local을 지정된 위치로 옮깁니다.


    kdc4 # mv /usr/krb5/lib/kprop /usr/krb5/lib/kprop.save
    kdc4 # mv /usr/krb5/lib/kadmind /usr/krb5/lib/kadmind.save
    kdc4 # mv /usr/krb5/sbin/kadmin.local /usr/krb5/sbin/kadmin.local.save
    
  6. DNS 서버에서 다음을 수행합니다. 마스터의 별명을 변경합니다.

    서버를 변경하려면 acme.com 영역 파일의 masterkdc 항목을 변경합니다.


    masterkdc IN CNAME kdc4
  7. DNS 서버에서 다음을 수행합니다. 인터넷 도메인 이름 서버(DNS)를 재시작합니다.

    기존의 마스터와 DNS 서버에서 다음 명령을 실행하여 새로운 별명에 대한 정보를 얻습니다.


    # pkill -1 in.named
  8. 새로운 마스터에서 다음을 수행합니다. 마스터 KDC 명령을 이동합니다.


    kdc4 # mv /usr/krb5/lib/kprop.save /usr/krb5/lib/kprop
    kdc4 # mv /usr/krb5/lib/kadmind.save /usr/krb5/lib/kadmind 
    kdc4 # mv /usr/krb5/sbin/kadmin.local.save /usr/krb5/sbin/kadmin.local
    
  9. 새로운 마스터에서 다음을 수행합니다. kadmin.local을 사용하여 kadmin의 키 테이블 파일을 작성합니다.

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


    kdc4 # /usr/krb5/sbin/kadmin.local
    kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc4.acme.com
    kvno가 3인 kadmin/kdc4.acme.com 주체의 항목, DES-CBC-CRC 암호화 유형이
           WRFILE:/etc/krb5/kadm5.keytab. 키 테이블에 추가되었습니다. 
    kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc4.acme.com
    kvno가 3인 changepw/kdc4.acme.com 주체의 항목, DES-CBC-CRC 암호화 유형이
           WRFILE:/etc/krb5/kadm5.keytab. 키 테이블에 추가되었습니다.
    kadmin.local: quit
    
  10. 새로운 마스터에서 다음을 수행합니다. /etc/init.d/kdc.master에서 kadmind이 실행되도록 설정합니다.


    kdc4 # cat /etc/init.d/kdc.master
    
     .
     .
    
    case "$1" in
    'start')
    
            if [ -f $KDC_CONF_DIR/kdc.conf ]
            then
                    $BINDIR/kadmind
            fi
            ;;
  11. 새로운 마스터에서 kadmind을 시작합니다.


    kdc4 # /etc/init.d/kdc.master start
    
  12. root crontab 파일에서 kprop 행이 실행되도록 설정합니다.


    kdc4 # crontab -e
    #ident  "@(#)root       1.19    98/07/06 SMI"   /* SVr4.0 1.1.3.1       */
    #
    # The root crontab should be used to perform accounting data collection.
    #
    # The rtc command is run to adjust the real time clock if and when
    # daylight savings time changes.
    #
    10 3 * * 0,4 /etc/cron.d/logchecker
    10 3 * * 0   /usr/lib/newsyslog
    15 3 * * 0 /usr/lib/fs/nfs/nfsfind
    1 2 * * * [ -x /usr/sbin/rtc ] && /  usr/sbin/rtc -c > /dev/null 2>&1
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    10 3 * * * /usr/krb5/lib/kprop_script kdc1.acme.sun.com #SUNWkr5ma
    

Kerberos 데이터베이스 관리

Kerberos 데이터베이스는 Kerberos의 백본이므로 잘 관리해야 합니다. 이 절에서는 데이터베이스 백업 및 복구, 병렬 전파 설정, stash 파일 관리 등의 Kerberos 데이터베이스 관리 절차에 대해 설명합니다. 데이터베이스를 처음 설정하는 단계는 "마스터 KDC 구성 방법"을 참고하십시오.

Kerberos 데이터베이스 백업과 전파

Kerberos 데이터베이스를 마스터 KDC에서 슬레이브 KDC로 전파하는 것은 가장 중요한 구성 작업 중 하나입니다. 전파가 자주 실행되지 않으면 마스터 KDC와 슬레이브 KDC가 동기화되지 않기 때문에 마스터 KDC가 다운될 경우 슬레이브 KDC가 최신 데이터베이스 정보를 갖지 못하게 됩니다. 또한, 작업 로드를 분산하기 위해 슬레이브 KDC를 마스터로 구성했다면 슬레이브를 마스터 KDC로 사용하는 클라이언트는 최신 정보를 얻지 못합니다. 따라서 Kerberos 데이터베이스를 변경하는 빈도에 따라 전파가 자주 발생하는지 확인해야 합니다.

마스터 KDC를 구성할 때 Kerberos 데이터베이스를 /var/krb5/slave_datatrans 덤프 파일로 자동 백업한 다음 슬레이브 KDC로 전파하도록 cron 작업의 kprop_script를 설정하십시오. 일반 파일과 마찬가지로 Kerberos 데이터베이스도 손상될 수 있습니다. 슬레이브 KDC의 Kerberos 데이터베이스가 손상되어도 다음 전파를 통해 자동으로 새로운 복사본이 설치되므로 사용자는 손상 사실을 알 수 없습니다. 그러나, 마스터 KDC의 데이터베이스가 손상되면 다음 전파를 통해 손상된 데이터베이스가 모든 슬레이브로 전파되고, 손상된 백업 파일은 마스터 KDC의 손상되지 않은 백업 파일을 겹쳐 씁니다.

이 시나리오에서 "안전한" 백업은 존재하지 않기 때문에 slave_datatrans 덤프 파일을 주기적으로 다른 위치로 복사하거나 kdb5_utildump 명령을 사용해 별도의 백업 복사본을 작성하도록 cron 작업을 설정해야 합니다. 그러면, 데이터베이스가 손상되어도 kdb5_utilload 명령을 사용해 마스터 KDC에 최신 백업을 복구할 수 있습니다.

또한 데이터베이스 덤프 파일에는 주체 키가 포함되므로 인증되지 않은 사용자가 파일에 액세스하지 못하도록 해야 합니다(기본적으로 데이터베이스 덤프 파일은 root에게만 읽기/쓰기 권한이 있음). 전송되는 데이터를 암호화하는 kprop 명령만을 사용하여 데이터베이스 덤프 파일을 전파하는 것도 중요합니다. kprop은 데이터를 슬레이브 KDC에게만 전파하기 때문에 실수로 데이터베이스 덤프를 인증되지 않은 호스트로 전송할 확률이 적습니다.


주의 - 주의 -

전파 후 Kerberos 데이터베이스가 업데이트되고 다음 전파가 실행되기 전에 데이터베이스가 손상되었다면 업데이트된 데이터는 슬레이브에 포함되지 않고 손실됩니다. 이런 경우를 대비해서, 정기적으로 계획된 전파 실행 전에 중요한 업데이트가 데이터베이스에 추가되었다면 데이터 손실을 막기 위해 데이터베이스를 수동으로 전파해야 합니다.


kpropd.acl 파일

kpropd.acl 파일에는 호스트 주체 이름이 한 줄에 하나씩 나열되어 있으며, 호스트 주체 이름은 KDC가 전파 메커니즘을 통해 업데이트된 데이터베이스를 수신할 수 있는 시스템을 나타냅니다. 마스터 KDC를 모든 슬레이브 KDC로 전파하는데 사용한다면 각 슬레이브의 kpropd.acl 파일에는 마스터의 호스트 주체 이름만 포함되어야 합니다.

그러나, 이 설명서의 SEAM 설치 및 이후 구성 단계에서는 동일한 kpropd.acl 파일을 마스터와 슬레이브 KDC에 모두 추가하도록 지시합니다. kpropd.acl 파일에는 모든 KDC 호스트 주체 이름이 포함되며, KDC 전파를 일시적으로 사용할 수 없을 경우 이 구성을 사용해서 모든 KDC로부터 전파할 수 있습니다. 따라서 모든 KDC에 동일한 복사본을 유지하는 것이 관리하기 좋습니다.

kprop_script 명령

kprop_script 명령은 kprop 명령을 사용하여 Kerberos 데이터베이스를 다른 KDC로 전파합니다. (kprop_script가 슬레이브 KDC에서 실행되면 슬레이브의 Kerberos 데이터베이스 복사본을 다른 KDC로 전파합니다.) kprop_script는 공백으로 구분된 호스트 이름을 인수로 받으며, 이것은 전파할 KDC를 나타냅니다.

kprop_script를 실행하면 Kerberos 데이터베이스의 백업을 /var/krb5/slave_datatrans 파일에 작성한 다음 지정된 KDC로 파일을 복사합니다. 전파가 끝날 때까지 Kerberos 데이터베이스는 잠겨 있습니다.

Kerberos 데이터베이스 백업 방법

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

  2. kdb5_utildump 명령을 사용해 Kerberos 데이터베이스를 백업합니다.


    # /usr/krb5/sbin/kdb5_util dump [-verbose] [-d dbname] [filename [principals...]]

    -verbose

    백업 중인 모든 주체 및 정책 이름을 인쇄합니다. 

    dbname

    백업할 데이터베이스 이름입니다. 지정한 데이터베이스 이름에 ".db"가 추가되며 파일의 절대 경로를 지정할 수 있습니다. -d 옵션을 지정하지 않으면 기본 데이터베이스 이름은 /var/krb5/principal이며, 이것은 실제로 /var/krb5/principal.db가 됩니다.

    filename

    데이터베이스를 백업할 파일로서, 파일의 절대 경로를 지정할 수 있습니다. 파일을 지정하지 않으면 데이터베이스는 표준 출력으로 덤프됩니다. 

    principal

    백업할 주체의 목록으로 공백에 의해 구분됩니다. 주체 이름에는 전체 경로를 사용해야 합니다. 주체를 지정하지 않으면 전체 데이터베이스가 백업됩니다. 

예-Kerberos 데이터베이스 백업

다음 예는 Kerberos 데이터베이스를 dumpfile이라는 파일로 백업합니다. -verbose 옵션이 지정되었기 때문에 백업 중인 주체가 화면에 표시됩니다.


# kbd5_util dump -verbose dumpfile
kadmin/kdc1.eng.acme.com@ENG.ACME.COM
krbtgt/eng.acme.com@ENG.ACME.COM
kadmin/history@ENG.ACME.COM
pak/admin@ENG.ACME.COM
pak@ENG.ACME.COM
changepw/kdc1.eng.acme.com@ENG.ACME.COM
#

다음 예는 Kerberos 데이터베이스로부터 pakpak/admin 주체를 백업합니다.


# kdb5_util dump -verbose dumpfile pak/admin@ENG.ACME.COM pak@ENG.ACME.COM
pak/admin@ENG.ACME.COM
pak@ENG.ACME.COM
#

Kerberos 데이터베이스 복구 방법

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

  2. kdb_utilload 명령을 사용해서 Kerberos 데이터베이스를 복구합니다.


    # /usr/krb5/sbin/kdb5_util load [-verbose] [-d dbname] [-update] [filename] 

    -verbose

    복구 중인 모든 주체 및 정책 이름을 인쇄합니다. 

    dbname

    복구할 데이터베이스 이름입니다. 지정한 데이터베이스 이름에 ".db"가 추가되며 파일의 절대 경로를 지정할 수 있습니다. -d 옵션을 지정하지 않으면 기본 데이터베이스 이름은 /var/krb5/principal이며, 이것은 실제로 /var/krb5/principal.db가 됩니다.

    -update

    기존 데이터베이스를 업데이트합니다. 그렇지 않을 경우 새로운 데이터베이스를 작성하거나 기존 데이터베이스를 겹쳐 씁니다. 

    filename

    이 파일로부터 데이터베이스를 복구합니다. 파일의 절대 경로를 지정할 수 있습니다.  

예-Kerberos 데이터베이스 복구

다음 예는 dumpfile 파일로부터 현재 디렉토리로 database1.db 데이터베이스를 복구합니다. -update 옵션이 지정되지 않았기 때문에 복구를 통해 새로운 데이터베이스가 작성되었습니다.


# kdb5_util load -d database1 dumpfile

Kerberos 데이터베이스를 슬레이브 KDC로 수동 전파하는 방법

다음 절차는 kprop 명령을 사용해서 Kerberos 데이터베이스를 전파하는 방법을 보여주며, 이 명령을 사용하면 정기적 cron 작업 이외에 슬레이브 KDC를 마스터 KDC와 동기화할 수 있습니다. kprop_script와는 달리, kprop 명령을 사용하면 새로운 데이터베이스 백업을 먼저 만들지 않고 현재 데이터베이스 백업만 전파할 수 있습니다.

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

  2. kdb5_util 명령을 사용해 데이터베이스를 백업합니다(선택 사항).


    # /usr/krb5/sbin/kdb5_util dump /var/krb5/slave_datatrans
    
  3. kprop 명령을 사용해 데이터베이스를 슬레이브 KDC로 전파합니다.


    # /usr/krb5/lib/kprop -f /var/krb5/slave_datatrans slave_KDC
    

데이터베이스를 백업한 다음 정기적 cron 작업 외에 슬레이브 KDC로 전파하려면 다음과 같이 kprop_script 명령을 사용합니다.


# /usr/krb5/lib/kprop_script slave_KDC

병렬 전파 설정

대부분의 경우 마스터 KDC를 배타적으로 사용해서 데이터베이스를 슬레이브 KDC로 전파할 수 있지만, 슬레이브 KDC가 많은 경우 병렬 전파로 알려진 로드 분산 방법을 사용할 수 있습니다.

병렬 전파를 사용하면 특정 슬레이브 KDC가 전파 의무를 마스터 KDC와 공유하도록 지정할 수 있습니다. 따라서, 전파 속도가 빨라지고 마스터 KDC의 작업이 줄어듭니다.

예를 들어, 하나의 마스터와 6개의 슬레이브로 사이트가 구성되었고(그림 3-2 참고), slave-1부터 slave-3까지가 하나의 논리적 그룹으로, slave-4부터 slave-6까지가 또 하나의 논리적 그룹으로 설정되었다고 가정합니다. 병렬 전파를 설정하려면 마스터 KDC가 데이터베이스를 slave-1slave-4로 전파하고 이 슬레이브가 다시 데이터베이스를 각각의 그룹으로 전파하도록 설정할 수 있습니다.

그림 3-2 병렬 전파 구성의 예

Graphic

병렬 전파 설정 방법

다음은 병렬 전파를 사용하기 위한 세부 단계별 절차는 아니며, 상위 수준의 구성 단계에 대해 설명합니다.

  1. 마스터 KDC에서 cron 작업의 kprop_script 항목에 다음 전파를 수행할 슬레이브(전파 슬레이브)의 인수만 포함되도록 변경합니다.

  2. 각 전파 슬레이브에서 전파할 슬레이브의 인수를 포함해야 하는 cron 작업에 kprop_script 항목을 추가합니다. 병렬 전파를 성공적으로 수행하려면 전파 슬레이브가 새로운 데이터베이스로부터 전파된 다음에 병렬 전파가 실행되도록 cron 작업을 설정해야 합니다.


    주 -

    전파 슬레이브를 전파하는데 걸리는 시간은 네트워크 대역폭 및 데이터베이스 크기 등에 따라 다릅니다.


  3. 각 슬레이브 KDC에서 전파될 적절한 권한을 설정합니다. 전파할 KDC의 호스트 주체 이름을 kpropd.acl 파일에 추가하면 됩니다.

예 - 병렬 전파 설정

그림 3-2의 예를 사용하면 마스터 KDC의 kprop_script 항목은 다음과 같습니다.

10 3 * * * /usr/krb5/lib/kprop_script slave-1.acme.com slave-4.acme.com

slave-1kprop_script 항목은 다음과 같습니다. (슬레이브의 전파는 마스터로부터 전파된 한 시간 후부터 시작됨에 주의하십시오.)

10 4 * * * /usr/krb5/lib/kprop_script slave-2.acme.com slave-3.acme.com

전파 슬레이브의 kpropd.acl 파일에는 다음 항목이 포함되어야 합니다.

host/master.acme.com@ACME.COM

slave-1이 전파 중인 슬레이브의 kpropd.acl 파일에는 다음 항목이 포함되어야 합니다.

host/slave-1.acme.com@ACME.COM

Stash 파일 관리

stash 파일에는 Kerberos 데이터베이스를 작성할 때 자동으로 작성되는 마스터 키가 포함됩니다. stash 파일이 손상되면 kdb5_util(1M)stash 명령을 사용해서 손상된 파일을 교체할 수 있습니다. stash 파일을 삭제해야 할 경우는 kdb5_utildestroy 명령을 사용해 Kerberos 데이터베이스를 삭제했을 경우입니다. stash 파일은 데이터베이스와 함께 삭제할 수 없으므로 직접 삭제해야 합니다.

Stash 파일 삭제 방법

  1. stash 파일이 있는 KDC의 수퍼유저가 됩니다.

  2. stash 파일을 삭제합니다.


    # rm stash_file
    

    stash_file

    stash 파일의 경로입니다. stash 파일은 기본적으로 /var/krb5/.k5.realm에 있습니다.

stash 파일을 다시 작성하려면 -f 옵션과 함께 kdb5_util 명령을 사용합니다.

보안 강화

다음 절차는 SEAM 응용 프로그램 서버 및 KDC 서버의 보안을 강화하기 위한 단계입니다.

Kerberos 암호화를 지원하는 응용 프로그램만 사용하는 방법

다음 절차는 네트워크 상에서 telnet, ftp, rcp, rsh, rlogin을 사용해 서버에 액세스하는 트랜잭션을 Kerberos 암호화 인증을 받은 트랜잭션으로 제한합니다.

  1. /etc/inetd.conftelnet 항목을 편집합니다.

    -a user 옵션을 telnet 항목에 추가해서 유효한 인증 정보를 제공하는 사용자만 액세스할 수 있도록 합니다.


    telnet stream  tcp     nowait  root    /usr/krb5/lib/telnetd  telnetd -a user
    
  2. /etc/inetd.confftp 항목을 편집합니다.

    -a 옵션을 ftp 항목에 추가해서 Kerberos 인증을 받은 연결만 허용합니다.


    ftp stream  tcp     nowait  root    /usr/krb5/lib/ftpd    ftpd-a
    
  3. /etc/inetd.conf에서 기타 서비스에 대한 Solaris 항목을 비활성화합니다.

    shelllogin 항목을 비활성화하거나 삭제합니다.


    # shell   stream  tcp     nowait  root    /usr/sbin/in.rshd       in.rshd
    # login   stream  tcp     nowait  root    /usr/sbin/in.rlogind    in.rlogind

KDC 서버 액세스 제한 방법

마스터와 슬레이브 KDC 서버에는 KDC 데이터베이스의 복사본이 로컬로 저장되어 있습니다. 이러한 서버로의 액세스를 제한해서 데이터베이스의 보안을 유지하는 것이 SEAM의 전체 보안에서 매우 중요합니다.

  1. /etc/inetd.conf에서 원격 서비스를 비활성화합니다.

    KDC 서버의 보안을 유지하기 위해 /etc/inetd.conf 파일에서 중요하지 않은 네트워크 서비스 항목을 주석 행으로 변경합니다. 대부분의 경우 실행해야 할 서비스는 timekrdb5_kprop뿐이며 tli 루프백(ticlts, ticotsord, ticots)을 사용하는 서비스도 활성 상태로 둡니다. 편집이 끝난 파일은 다음과 같습니다. (간단한 예를 제공하기 위해 대부분의 주석을 삭제했습니다.)


    kdc1 # cat /etc/inetd.conf
    #
    #ident  "@(#)inetd.conf 1.33    98/06/02 SMI"   /* SVr4.0 1.5   */
      .
      .
    #name     dgram   udp     wait    root    /usr/sbin/in.tnamed     in.tnamed
    #
    #shell    stream  tcp     nowait  root    /usr/sbin/in.rshd       in.rshd
    #login    stream  tcp     nowait  root    /usr/sbin/in.rlogind    in.rlogind
    #exec     stream  tcp     nowait  root    /usr/sbin/in.rexecd     in.rexecd
    #comsat   dgram   udp     wait    root    /usr/sbin/in.comsat     in.comsat
    #talk     dgram   udp     wait    root    /usr/sbin/in.talkd      in.talkd
    #
    #uucp     stream  tcp     nowait  root    /usr/sbin/in.uucpd      in.uucpd
    #
    #finger   stream  tcp     nowait  nobody  /usr/sbin/in.fingerd    in.fingerd
    #
    # 시간 서비스를 사용해 클록을 동기화합니다.
    #
    time      stream  tcp     nowait  root    internal
    time      dgram   udp     wait    root    internal
    # 
      .
      .
    # 
    100234/1  tli rpc/ticotsord wait  root    /usr/lib/gss/gssd     gssd 
    #dtspc    stream  tcp     nowait  root    /usr/dt/bin/dtspcd      /usr/dt/bin/dtspcd
    #100068/2-5 dgram rpc/udp wait    root    /usr/dt/bin/rpc.cmsd    rpc.cmsd
    #100134/1 tli rpc/ticotsord wait   root    /usr/krb5/lib/ktkt_warnd kwarnd
    #klogin   stream  tcp     nowait  root    /usr/krb5/lib/rlogind   rlogind -k
    #eklogin  stream  tcp     nowait  root    /usr/krb5/lib/rlogind   rlogind -k -e
    #telnet   stream  tcp     nowait  root    /usr/krb5/lib/telnetd   telnetd
    #ftp      stream  tcp     nowait  root    /usr/krb5/lib/ftpd      ftpd
    #kshell   stream  tcp     nowait  root    /usr/krb5/lib/rshd      rshd -k -c -A
    krb5_prop stream  tcp     nowait  root    /usr/krb5/lib/kpropd  kpropd

    변경이 끝나면 서버를 재부팅합니다.

  2. KDC를 지원하는 하드웨어의 액세스를 제한합니다.

    물리적 액세스를 제한하기 위해 서버와 모니터가 안전한 장비에 설치되었는지 확인합니다. 일반 사용자는 어떠한 경우에도 이 서버에 액세스할 수 없습니다.

  3. KDC 데이터베이스 백업을 로컬 디스크나 슬레이브에 저장합니다.

    테이프 백업 장치를 사용해 백업하는 경우에는 테이프가 안전하게 보관되는 경우에만 KDC 백업에 사용해야 합니다. 키 테이블 파일의 복사본도 마찬가지입니다. 이러한 파일은 다른 시스템과 공유되지 않는 로컬 파일 시스템에 저장하는 것이 가장 좋으며, 마스터 KDC 서버나 모든 슬레이브를 파일 저장 시스템으로 사용할 수 있습니다.