Computer >> 컴퓨터 >  >> 체계 >> Windows Server

Active Directory에서 Kerberos 인증을 위한 Keytab 파일 만들기

많은 Linux 서비스(apache, nginx 등)는 keytab을 사용할 수 있습니다. 암호를 입력하지 않고 Active Directory에서 Kerberos 인증을 위한 파일. keytab 파일은 Kerberos 주체의 이름과 해당하는 암호화된 키(Kerberos 암호에서 가져옴)를 유지합니다. 이 기사에서는 ktpass를 사용하여 연결된 Active Directory 계정의 SPN에 대한 keytab 파일을 만드는 방법을 보여줍니다. 도구.

대부분의 경우 keytab 파일을 사용해야 하는 서비스에 대해 별도의 Active Directory 사용자 계정이 생성됩니다. 그러나 컴퓨터 개체를 사용하여 이를 수행할 수도 있습니다. 그런 다음 서비스 이름이 계정(ServicePrincipalNameSPN ). SPN은 Kerberos 인증에서 서비스 인스턴스를 AD 계정에 매핑하는 데 사용됩니다(이것이 앱이 사용자 이름을 모르더라도 서비스로 인증할 수 있는 이유입니다).

먼저 AD에서 서비스 계정을 만들고 알려진 암호를 설정합니다. 그래픽 ADUC 콘솔(dsa.msc)에서 또는 PowerShell의 New-ADUser cmdlet(PowerShell Active Directory 모듈에서)을 사용하여 계정을 만들 수 있습니다.

New-ADUser -Name "web" -GivenName "nginx web app" -SamAccountName "web" -UserPrincipalName "web@test.com" -Path "OU=Services,OU=Munich,OU=DE,DC=test,DC=com" –AccountPassword (ConvertTo-SecureString “Sup6r!Pa$s” -AsPlainText -force) -Enabled $true

그래픽 콘솔 또는 PowerShell에서 서비스 계정에 대해 "사용자가 암호를 변경할 수 없음" 및 "암호가 만료되지 않음" 옵션을 활성화합니다.

Get-ADUser web|Set-ADUser -PasswordNeverExpires:$True -CannotChangePassword:$true

Active Directory에서 Kerberos 인증을 위한 Keytab 파일 만들기

다음 단계에서는 SPN(서비스 사용자 이름)을 사용자 계정에 바인딩합니다. ktpass는 keytab 파일을 생성할 때 자동으로 수행하기 때문에 이 단계를 별도로 수행할 필요가 없습니다(과정을 더 잘 이해할 수 있도록 할게요).

다음 SPN 레코드를 에 바인딩 계정:

setspn -A HTTP/www.test.com@test.com web

AD 사용자와 연결된 SPN 레코드 목록 표시:

setspn -L web

Active Directory에서 Kerberos 인증을 위한 Keytab 파일 만들기

keytab 파일을 생성하기 위해 다음 명령이 사용됩니다:

ktpass -princ HTTP/www.test.com@TEST.COM -mapuser web -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass Sup6r!Pa$s -target mundc01.test.com -out c:\share\web.keytab

Active Directory에서 Kerberos 인증을 위한 Keytab 파일 만들기

Successfully mapped HTTP/www.test.com to web.
Password successfully set!
Key created.
Output keytab to c:\share\webt.keytab:
Keytab version: 0x502
keysize 53 HTTP/www.test.com@test.com ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x1 (DES-CBC-CRC) keylength 8 (0x73f868856e046449)

이 명령은 HTTP/www@test.com 서비스의 SPN 레코드에 대한 keytab 파일(c:\share\webt.keytab)을 생성했습니다. SPN 레코드는 지정된 비밀번호로 웹 계정에 바인딩됩니다.

서비스에 대한 SPN 레코드가 성공적으로 생성되었는지 확인합니다(수동으로 생성하지 않은 경우):

setspn -Q */www.test.com@test.com
SPN 레코드가 발견된 것을 볼 수 있습니다(기존 SPN을 찾았습니다! ). 웹 계정에 바인딩됩니다.

Active Directory에서 Kerberos 인증을 위한 Keytab 파일 만들기

Windows에는 keytab 파일의 내용을 볼 수 있는 기본 제공 도구가 없습니다. 그러나 Java JRE가 컴퓨터에 설치되어 있으면 klist.exe를 사용할 수 있습니다. Java 배포 패키지에 포함되어 있습니다.

cd "c:\Program Files\Java\jre1.8.0_181\bin"
klist.exe -K -e -t -k c:\PS\web_host.keytab

Key tab: c:\PS\web_host.keytab, 5 entries found.

Active Directory에서 Kerberos 인증을 위한 Keytab 파일 만들기

keytab 파일의 내용을 살펴보겠습니다. SPN, 키, 타임스탬프, 암호화 알고리즘 및 키 버전(KVNO — 키 버전 번호)이 여기에 지정됩니다.

keytab 파일을 생성할 때 ktpass는 msDS-KeyVersionNumber를 증가시킵니다. 사용자 계정의 속성 값(AD Attribute Editor에서 볼 수 있음)이며 이 값을 keytab 테이블에서 KVNO로 사용합니다.

Active Directory에서 Kerberos 인증을 위한 Keytab 파일 만들기

계정 비밀번호를 변경하면 속성 값이 1씩 증가하고 이전 KVNO가 있는 모든 키탭 항목이 무효가 됩니다(새 비밀번호가 이전 비밀번호와 완전히 일치하더라도). AD의 사용자 비밀번호가 변경되면 keytab 파일을 다시 생성해야 합니다.

keytab 파일은 다른 SPN의 키를 유지할 수 있습니다. ktpass를 사용하여 추가 SPN 및 키가 keytab 파일에 추가됩니다. 매개변수(-in ,-setupn ,-setpass ).

가지고 있는 keytab 파일의 추가 사용은 적용되는 서비스에 따라 다릅니다. 예를 들어 여기에서는 Zabbix에서 투명한 SSO 사용자 인증을 위해 keytab 파일을 사용하는 방법을 배울 수 있습니다. 또한 keytab 파일을 안전하게 유지하는 것을 잊지 마십시오(keytab 파일의 내용을 읽을 수 있는 사람은 누구든지 keytab 파일의 모든 키를 사용할 수 있음).