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

키 테이블 관리

서비스를 제공하는 모든 호스트에는 서비스 키라는 해당 서비스의 주체를 포함하는 키 테이블(keytab - key table의 단축형)이라는 로컬 파일이 있어야 합니다. 서비스 키는 KDC에 서비스를 인증하는 데 사용되며 Kerberos와 해당 서비스에만 알려져 있습니다. 예를 들어, Kerberos 암호화를 지원하는 NFS 서버가 있을 경우 nfs 서비스 주체를 포함하는 키 테이블이 해당 서버에 있어야 합니다

서비스 키를 키 테이블에 추가하려면 kadminktadd 명령을 사용하여 적절한 서비스 주체를 호스트의 키 테이블에 추가합니다. 서비스 주체를 키 테이블에 추가하고 있기 때문에, 주체는 이미 Kerberos 데이터베이스에 존재하며 따라서 kadmin은 그 존재를 확인할 수 있습니다. 마스터 KDC의 경우, 키 테이블 파일은 기본적으로 /etc/krb5/kadm5.keytab에 위치합니다. Kerberos 암호화 지원 서비스를 제공하는 응용 프로그램 서버의 경우, 키 테이블 파일은 기본적으로 /etc/krb5/krb5.keytab에 위치합니다.

키 테이블은 사용자의 암호와 유사합니다. 사용자가 자신의 암호를 보호하는 것이 중요한 것과 마찬가지로 응용 프로그램 서버가 키 테이블을 보호하는 것도 중요합니다. 키 테이블은 항상 로컬 디스크에 저장하고, 루트만 읽을 수 있어야 하며, 보호되지 않는 네트워크를 통해 키 테이블을 전송해서는 안됩니다.

루트 주체를 호스트의 키 테이블에 추가하는 특수한 경우도 있습니다. 기본적으로, SEAM 클라이언트의 사용자가 Kerberos 인증을 사용하여 자동으로 Kerbero 암호화를 지원하는 NFS 파일 시스템을 마운트하도록 하려면, 클라이언트의 루트 주체를 클라이언트의 키 테이블에 추가해야 합니다. 그렇지 않으면, 사용자는 자동 마운터를 사용하는 경우에도 Kerbero 암호화를 지원하는 NFS 파일 시스템을 마운트할 때마다 루트로서 kinit 명령을 사용하여 클라이언트의 루트 주체에 대한 증명서를 얻어야 합니다. 자세한 내용은 "NFS 파일 시스템을 마운트하기 위해 root 인증 설정"을 참고하십시오.


주 -

마스터 KDC를 설치할 때는 kadmindchangepw 주체를 kadm5.keytab 파일에 추가해야 합니다. 이렇게 하면 KDC가 관리자의 Kerberos 티켓을 해독하여 데이터베이스 액세스를 부여할 지 여부를 결정합니다.


키 테이블 관리에는 ktutil 명령을 사용할 수도 있습니다. ktutil은 대화형 명령행 인터페이스 유틸리티로, ktutilkadmin처럼 Kerberos 데이터베이스와 상호 작용하지 않으므로 Kerberos 관리 권한이 없어도 로컬 호스트의 키 테이블을 관리할 수 있습니다. 따라서 주체가 키 테이블에 추가되면, ktutil을 사용하여 키 테이블의 키 목록을 보거나 서비스의 인증을 임시로 비활성화할 수 있습니다.

키 테이블 관리 작업 맵

표 5-9 키 테이블 관리 작업 맵

작업 

설명 

참고 위치 

키 테이블에 서비스 주체 추가 

kadminktadd 명령을 사용하여서비스 주체를 키 테이블에 추가합니다.

"키 테이블에 서비스 주체 추가 방법"

키 테이블에서 서비스 주체 삭제 

kadminktremove 명령을 사용하여 키 테이블에서 서비스를 삭제합니다.

"키 테이블에서 서비스 주체 삭제 방법"

키 테이블에 키 목록(주체) 표시 

ktutil 명령을 사용하여 키 테이블에 키 목록을 표시합니다.

"키 테이블에 키 목록(주체) 표시 방법"

호스트에서 서비스 인증을 임시로 비활성화 

이 절차는 kadmin 권한 없이 호스트에서 서비스 인증을 임시로 비활성화하는 빠른 방법입니다. ktutil을 사용하여 서버의 키 테이블에서 서비스 주체를 삭제하기 전에, 원래 키 테이블을 임시 위치에 복사합니다. 서비스를 다시 활성화하려면 원래 키 테이블을 다시 복사합니다.

"호스트에서 서비스 인증을 임시로 비활성화하는 방법"

키 테이블에 서비스 주체 추가 방법

  1. 주체가 이미 Kerberos 데이터베이스에 있는지 확인합니다.

    자세한 내용은 "주체 목록 보기 방법"을 참고하십시오.

  2. 키 테이블에 주체를 추가해야 하는 호스트의 수퍼유저가 됩니다.

  3. kadmin 명령을 시작합니다.


    # /usr/krb5/sbin/kadmin
    
  4. ktadd 명령을 사용하여 키 테이블에 주체를 추가합니다.


    kadmin: ktadd[-k 키 테이블] [-q] [주체 | -glob principal_exp]

    -k 키 테이블

    키 테이블 파일을 지정합니다. 기본적으로 /etc/krb5/krb5.keytab이 사용됩니다.

    -q

    개괄적 정보를 표시합니다. 

    주체

    키 테이블에 추가될 주체. 호스트, 루트, nfs, ftp 등의 서비스 주체를 추가할 수 있습니다.

    -glob principal_exp

    주체 표현식과 일치하는 모든 주체가 키 테이블에 추가됩니다. 주체 표현식의 규칙은 kadminlist_principals 명령 규칙과 동일합니다.

  5. kadmin 명령을 종료합니다.


    kadmin: quit
    

예-키 테이블에 서비스 주체 추가

다음 예는 kadmin/adminkadmin/changepw 주체를 마스터 KDC 키 테이블에 추가합니다. 이 예에서 키 테이블 파일은 kdc.conf에 지정된 것이어야 합니다.


kdc1 # /usr/krb5/bin/kadmin.local
kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/admin kadmin/changepw
kvno가 3, 암호화 유형이 DES-CBC-CRC인 kadmin/admin@ACME.COM
주체의 항목이 WRFILE:/etc/krb5/kadm5.keytab 키 테이블에 추가되었습니다.
kvno가 3, 암호화 유형이 DES-CBC-CRC인 kadmin/changepw@ACME.COM
주체의 항목이 WRFILE:/etc/krb5/kadm5.keytab 키 테이블에 추가되었습니다.
kadmin.local: quit

다음 예는 denver호스트주체를 denver의 키 테이블 파일에 추가하며, 따라서 denver의 네트워크 서비스가 KDC에 의해 인증될 수 있습니다.


denver # /usr/krb5/bin/kadmin
kadmin: ktadd host/denver@acme.com@ACME.COM
kadmin: kvno가 2, 암호화 유형이 DES-CBC-CRC인 host/denver@acme.com@ACME.COM
주체의 항목이 WRFILE:/etc/krb5/krb5.keytab 키 테이블에 추가되었습니다.
kadmin: quit

키 테이블에서 서비스 주체 삭제 방법

  1. 키 테이블에서 삭제할 서비스 주체가 있는 호스트의 수퍼유저가 됩니다.

  2. kadmin 명령을 시작합니다.


    # /usr/krb5/bin/kadmin
    
  3. 선택 사항. 키 테이블에서 주체(키)의 현재 목록을 표시하려면 ktutil 명령을 사용합니다.

    자세한 내용은 "키 테이블에 키 목록(주체) 표시 방법"을 참고하십시오.

  4. ktremove 명령을 사용하여 키 테이블에서 주체를 삭제합니다.


    kadmin: ktremove[-k 키 테이블] [-q] 주체 [kvno | 전체 | 이전 ]

    -k 키 테이블

    키 테이블 파일을 지정합니다. 기본적으로 /etc/krb5/krb5.keytab이 사용됩니다.

    -q

    개괄적 정보를 표시합니다. 

    주체

    키 테이블에서 삭제할 주체. 

    kvno

    kvno(키 버전 번호)가 kvno와 일치하는 지정한 주체의 모든 항목을 삭제합니다.

    전체

    지정한 주체의 모든 항목을 삭제합니다. 

    이전

    지정한 주체에서 kvno가 가장 높은 항목을 제외한 모든 항목을 삭제합니다. 

  5. kadmin 명령을 종료합니다.


    kadmin: quit
    

예-키 테이블에서 서비스 주체 삭제

다음 예는 denver호스트 주체를 denver의 키 테이블 파일에서 삭제합니다.


denver # /usr/krb5/bin/kadmin
kadmin: ktremove host/denver.acme.com@ACME.COM
kadmin: kvno가 3인 host/denver.acme.com@ACME.COM 주체의 항목이 WRFILE:/etc/krb5/krb5.keytab 키 테이블에서 삭제되었습니다.
kadmin: quit

키 테이블에 키 목록(주체) 표시 방법

  1. 키 테이블이 있는 호스트의 수퍼유저가 됩니다.


    주 -

    다른 사용자가 소유한 키 테이블을 작성할 수 있지만 키 테이블의 기본 위치에 대한 루트 소유권이 있어야 합니다.


  2. ktutil 명령을 시작합니다.


    # /usr/krb5/bin/ktutil
    
  3. read_kt 명령을 사용하여 키 테이블을 키 목록 버퍼로 읽어 들입니다.


    ktutil: read_kt 키 테이블
    
  4. list 명령을 사용하여 키 목록 버퍼를 표시합니다.


    ktutil: list
    

    현재 키 목록 버퍼가 표시됩니다.

  5. ktutil 명령을 종료합니다.


    ktutil: quit
    

예-키 테이블에 키 목록(주체) 표시

다음 예는 denver 호스트에서 /etc/krb5/krb5.keytab 파일에 키 목록을 표시합니다.


denver # /usr/krb5/bin/ktutil
    ktutil: read_kt /etc/krb5/krb5.keytab
    ktutil: list
slot  KVNO  주체
 ---- ---- --------------------------------------- 
   1    5 host/denver@ACME.COM
     ktutil: quit

호스트에서 서비스 인증을 임시로 비활성화하는 방법

네트워크 응용 프로그램 서버에서 rlogin 또는 ftp와 같은 서비스의 인증 메커니즘을 임시로 비활성화해야 하는 경우가 있습니다. 예를 들어, 유지 보수 프로시저를 수행하는 동안 사용자가 시스템에 로그인할 수 없도록 해야 하는 경우입니다. kadmin 권한 없이도 ktutil명령으로 서버의 키 테이블에서 서비스 주체를 제거하여 로그인을 중지시킬 수 있습니다. 인증을 다시 활성화하려면, 저장했던 원래 키 테이블을 원래 위치로 다시 복사만 하면 됩니다.


주 -

대부분의 서비스는 기본적으로 인증이 필요하도록 설정되어 있습니다. 그렇지 않으면 서비스의 인증을 비활성화해도 서비스가 계속 작동합니다.


  1. 키 테이블이 있는 호스트의 수퍼유저가 됩니다.


    주 -

    다른 사용자가 소유한 키 테이블을 작성할 수 있지만 키 테이블의 기본 위치에 대한 루트 소유권이 있어야 합니다.


  2. 현재 키 테이블을 임시 파일로 저장합니다.

  3. ktutil 명령을 시작합니다.


    # /usr/krb5/bin/ktutil
    
  4. read_kt 명령을 사용하여 키 테이블을 키 목록 버퍼로 읽어 들입니다.


    ktutil: read_kt 키 테이블
    
  5. list 명령을 사용하여 키 목록 버퍼를 표시합니다.


    ktutil: 목록
    

    현재 키 목록 버퍼가 표시됩니다. 비활성화할 서비스의 슬롯 번호를 확인합니다.

  6. 호스트의 서비스를 임시로 비활성화하려면, delete_entry 명령을 사용하여 키 목록 버퍼에서 특정 서비스 주체를 삭제합니다.


    ktutil: delete_entry slot_number
    

    slot_number

    삭제할 서비스 주체의 슬롯 번호로서, list 명령에 의해 표시됩니다.

  7. write_kt 명령을 사용하여 키 목록 버퍼를 키 테이블에 씁니다.


    ktutil: write_kt 키 테이블
    
  8. ktutil 명령을 종료합니다.


    ktutil: quit
    
  9. 서비스를 다시 활성화하려면 임시(원래) 키 테이블을 원래 위치로 다시 복사합니다.

예-호스트에서 서비스를 임시로 비활성화

다음 예는 denver 호스트에서 호스트 서비스를 임시로 비활성화합니다. denver에서 호스트 서비스를 다시 활성화하려면, krb5.keytab.temp 파일을 /etc/krb5/krb5.keytab 파일로 복사합니다.


denver # cp /etc/krb5/krb5.keytab /etc/krb5/krb5.keytab.temp
denver # /usr/krb5/bin/ktutil
    ktutil:read_kt /etc/krb5/krb5.keytab
    ktutil:list
slot  KVNO 주체
---- ---- ---------------------------------------
   1    8 root/denver@ACME.COM
   2    5 host/denver@ACME.COM
    ktutil:delete_entry 2
    ktutil:list
slot KVNO 주체
---- ---- --------------------------------------
   1    8 root/denver@ACME.COM
    ktutil:write_kt /etc/krb5/krb5.keytab
    ktutil: quit