Kerberos 인증 구성

Kerberos 인증은 클라이언트 및 서버의 호스트 환경에 따라 다양한 구성 시나리오를 지원합니다. 시나리오마다 조금씩 차이는 있지만 Kerberos 인증을 구현하려면 관리자가 다음과 같은 태스크를 수행해야 합니다.
casso127kkr
Kerberos 인증은 클라이언트 및 서버의 호스트 환경에 따라 다양한 구성 시나리오를 지원합니다. 시나리오마다 조금씩 차이는 있지만 Kerberos 인증을 구현하려면 관리자가 다음과 같은 태스크를 수행해야 합니다.
  1. KDC(Key Distribution Center) 구성
  2. Kerberos 인증을 위한 정책 서버 구성
  3. Kerberos 인증을 위한 웹 에이전트 구성
  4. Kerberos 구성 파일 생성
  5. 브라우저가 Kerberos 자격 증명을 보낼 수 있도록 설정
  6. (선택 사항) Windows 호스트가 UNIX KDC 및 영역과 통신할 수 있도록 설정
다음 섹션에서는 KDC를 설정하는 방법에 대해 설명합니다.
3
Kerberos 인증을 위한 KDC(Key Distribution Center) 구성
KDC(Key Distribution Center)는 네트워크 서비스입니다. 특히 KDC는 사용자 및 서비스를 인증하는 AS(인증 서비스)와 서비스에 액세스하기 위한 티켓을 발급하는 TGS(Ticket-Granting Service)를 제공합니다. Active Directory는 KDC 역할을 할 수 있는 서비스의 예입니다. 서비스 및 응용 프로그램을 호스트하는 서버는 클라이언트의 Kerberos 인증 요청을 수락하는 끝점입니다.
다음 다이어그램에서는 Kerberos 트랜잭션을 간략히 보여 줍니다.
Kerberos Environment
  1. 클라이언트가 인증 서비스에 요청을 보낸 후 인증됩니다.
  2. 인증 서비스가 TGS에 대한 티켓을 포함하여 응답을 보냅니다.
  3. 클라이언트가 특정 서버에 대한 티켓을 요청합니다.
  4. TGS가 적절한 티켓이 포함된 응답을 반환합니다.
  5. 클라이언트가 서버 호스트에 서비스를 요청합니다.
  6. 서비스가 응답하고 액세스 권한이 부여됩니다.
KDC 구성 데이터 예
Windows와 UNIX에서 KDC를 구성하는 절차에는 다음 예와 같은 서버 및 계정 이름이 사용됩니다.
서버
이름
Active Directory 도메인
EXAMPLE(웹 도메인이 아니라 AD 도메인임)
Kerberos 영역
EXAMPLE.COM
KDC(예: Active Directory 컨트롤러 또는 UNIX KDC)
kdc.example.com 
정책 서버
pserver.example.comhttp://pserver1.example.com/
정책 서버 서비스 프린서펄 이름
HTTP 서비스를 호스트하는 웹 서버
webagentname.example.comhttp://www.example.com/
웹 에이전트 서비스 프린서펄 이름
중요!
SPN(서비스 프린서펄 이름)은 대/소문자를 구분하며
service_type
/
fqdn
_service
_host_name
@
KERBEROS
_
REALM 형식을 따라야 합니다.
호스트 이름은 소문자로 지정하고 Kerberos 영역 이름은 대문자로 지정하십시오.
계정
이름
사용자 계정
testkrb
정책 서버 서비스 계정
krbsvc-smps
웹 에이전트 서비스 계정
krbsvc-smwa
Kerberos 규칙은 호스트 도메인 이름을 Kerberos 영역 이름과 동일하게 지정하는 것입니다. 영역 이름의 경우 모두 대문자라는 점만 다릅니다. 위 표에서
example.com
도메인의 호스트는 Kerberos 영역
EXAMPLE.COM
에 있습니다.
Windows의 KDC 구성
다음 절차에서는 Window 시스템에 KDC를 구성하는 방법에 대해 설명합니다. 예로 사용된 값은 이 지침 전체에 적용됩니다.
이 절차에서는 keytab 파일을 두 개 만듭니다. keytab 파일은 Kerberos 인증에 필요합니다. 이 파일은 서비스 계정이 암호를 입력할 필요 없이 KDC로 인증되도록 합니다. Windows 플랫폼의 경우 keytab 파일은
ktpass
지원 도구를 사용하여 생성됩니다. ktpass 도구는 Active Directory 서버를 도메인 컨트롤러로 승격한 후에 사용할 수 있습니다.
다음 단계를 수행하십시오.
  1. Windows Active Directory 도메인에 사용자 계정(testkrb)을 만듭니다.  이 계정에 대한 암호를 제공합니다.
    다음 로그온 시 사용자가 반드시 암호를 변경해야 함
    옵션을 선택 취소합니다. Windows 워크스테이션은 이 계정을 사용하여 example.com 도메인에 로그인합니다.
  2. 정책 서버의 서비스 계정(예: krbsvc-smps)을 생성합니다. 이 계정에 대한 암호를 제공합니다.
    다음 로그온 시 사용자가 반드시 암호를 변경해야 함
    옵션을 선택 취소합니다
    .
  3. 웹 에이전트의 서비스 계정(krbsvc smwa)을 만듭니다. 이 계정에 대한 암호를 제공합니다.
    다음 로그온 시 사용자가 반드시 암호를 변경해야 함
    옵션을 선택 취소합니다
    .
  4. 정책 서버 호스트의 keytab 파일을 만듭니다. 이 keytab 파일은 정책 서버 서비스 계정(krbsvc-smps)을 정책 서버 서비스 프린서펄 이름(smps/[email protected])과 연결합니다.
    keytab 파일을 만들려면 다음 ktpass 명령을 입력하십시오.
    ktpass -out c:\krbsvc-smps.keytab -princ smps/[email protected] -ptype KRB5_NT_PRINCIPAL
    -mapuser EXAMPLE\krbsvc-smps -mapOp set -pass "*"
    암호는 정책 서버의 서비스 계정을 만드는 데 사용한 암호와 동일합니다. 
    참고:
    Kerberos 서비스 유형은 일반적으로 모두 대문자로 지정됩니다. 하지만
    smps
    서비스 유형은 소문자여야 합니다.
  5. 웹 에이전트의 keytab 파일을 만듭니다. 이 keytab 파일은 웹 에이전트 서비스 계정(krbsvc-smwa)을 웹 에이전트 서비스 프린서펄 이름(HTTP/[email protected])과 연결합니다. 
    다음 ktpass 명령을 입력하십시오.
    ktpass -out C:\krbsvc-smwa.keytab -princ HTTP/[email protected] -ptype KRB5_NT_PRINCIPAL
    -mapuser EXAMPLE\krbsvc-smwa -mapOp set -pass "*"
    암호는 웹 서버의 서비스 계정을 생성하는 데 사용한 암호와 동일합니다.
    참고:
    keytab 파일의 기본 암호화 유형은 RC4-HMAC입니다. 명령 프롬프트에서
    ktpass /?
    를 입력하여 유형을 확인하십시오. 
  6. 정책 서버 및 웹 에이전트 서비스 계정이 위임용으로 트러스트되고 위임된 자격 증명을 제공할 수 있도록 구성합니다. 정책 서버 및 웹 에이전트 계정에는 사용자를 가장하여 다른 네트워크 서비스를 사용하기 위한 권한이 필요합니다. ADUC(Active Directory 사용자 및 컴퓨터) 관리 도구를 사용하여 위임을 구성하십시오. 다음 단계를 수행하십시오.
    1. 서비스 계정(정책 서버: krbsvc-smps, 웹 에이전트: krbsvc-smwa)을 마우스 오른쪽 단추로 클릭하고 "속성"을 선택합니다.
    2. "위임" 탭을 선택합니다.
    3. "모든 서비스에 대한 위임용으로 이 사용자 트러스트(Kerberos만)" 옵션을 선택합니다.
Windows 플랫폼의 KDC가 구성되었습니다.
UNIX의 KDC 구성
다음 절차에서는 UNIX 호스트에서 KDC를 구성하는 방법을 보여 줍니다. 이 절차에서는
Single Sign-On
과 함께 제공되는 MIT Kerberos를 사용한다고 가정합니다.
이 절차에서는 keytab 파일을 두 개 만듭니다. keytab 파일은 Kerberos 인증에 필요합니다. 이 파일은 서비스 계정이 암호를 입력할 필요 없이 KDC로 인증되도록 합니다. UNIX 플랫폼의 경우 keytab 파일은
ktadd
도구를 사용하여 생성됩니다.
다음 단계를 수행하십시오.
  1.  Kerberos 영역을 아직 만들지 않은 경우 다음 kdb5_util 명령을 입력합니다. 
     kdb5_util create -r EXAMPLE.COM -s
    위의 명령에서
    -s
    인수는 stash 파일을 만듭니다. stash 파일과 keytab 파일은 잠재적인 보안 취약점입니다. stash 파일을 설치할 경우 이 파일은 루트에서만 읽을 수 있고 백업되지 않아야 하며 KDC 로컬 디스크에만 있어야 합니다.  stash 파일이 필요하지 않으면
    -s
    옵션 없이 kdb5_util을 실행하십시오.
  2. KDC가 있는 도메인에 사용자 계정(testkrb)을 만듭니다.
  3. 정책 서버 호스트의 경우 다음을 만듭니다.
    • 사용자 프린서펄(testpskrb)
    • 정책 서버 서비스 프린서펄(smps/pserver.example.com)
    • 정책 서버 호스트의 정책 서버 서비스 계정(krbsvc-smps). 이 계정의 암호를 제공하십시오.
    서비스 프린서펄 이름의 Kerberos 영역은 지정할 필요가 없습니다. UNIX 플랫폼의 경우 해당 영역이 포함되어 있습니다. 
  4. 정책 서버 서비스 프린서펄에 대한 keytab 파일을 만듭니다. 다음
    kadmin
    명령을 입력합니다.
    kadmin.local -q "ktadd -k krbsvc-smps.keytab smps/[email protected]"
  5. 웹 서버 호스트에 있는 웹 에이전트에 대해 다음을 만듭니다.
    • 사용자 프린서펄 이름(testwakrb)
    • 웹 에이전트 서비스 프린서펄(HTTP/[email protected])
    • 웹 에이전트 서비스 계정(krbsvc-smwa) 
    • 웹 에이전트 서비스 계정의 암호
  6. keytab 파일을 만들고 keytab 파일에 웹 에이전트 서비스 프린서펄을 추가합니다. 다음
    kadmin
    명령을 입력합니다
    .
    kadmin.local -q "ktadd -k krbsvc-smwa.keytab HTTP/[email protected]"
  7. 정책 서버 및 웹 서버 서비스 계정이 위임용으로 트러스트되고 위임된 자격 증명을 제공할 수 있도록 구성합니다. 정책 서버 및 웹 에이전트 계정에는 사용자를 가장하여 다른 네트워크 서비스를 사용하기 위한 권한이 필요합니다. 다음 명령을 입력하십시오.
    정책 서버 서비스 계정: 
    kadmin.local -q "modify_principal +ok_to_auth_as_delegate smps/[email protected]"
    웹 에이전트 서비스 계정:
    kadmin.local -q "modify_principal +ok_to_auth_as_delegate HTTP/[email protected]"
UNIX 호스트에 KDC가 구성되었습니다.