Active Directory'de Kerberos Kimlik Doğrulaması için Keytab Dosyası Oluşturma
Birçok Linux hizmeti (apache, nginx, vb.), Active Directory'de parola girmeden Kerberos kimlik doğrulaması için keytab dosyalarını kullanabilir. keytab dosyası, Kerberos sorumlularının adlarını ve karşılık gelen şifrelenmiş anahtarları (Kerberos parolalarından elde edilen) tutar. Bu yazıda, ktpass aracını kullanarak bağlı bir Active Directory hesabının SPN'si için bir keytab dosyasının nasıl oluşturulacağını göstereceğiz.
Çoğunlukla, bir keytab dosyası kullanılmasını gerektiren bir hizmet için ayrı bir Active Directory kullanıcı hesabı oluşturulur. Ancak, bunu yapmak için bir bilgisayar nesnesi de kullanabilirsiniz. Ardından, hizmet adı hesaba bağlanır (ServicePrincipalName — SPN). SPN, Kerberos kimlik doğrulaması tarafından bir hizmet örneğini bir AD hesabına eşlemek için kullanılır (bu nedenle uygulamalar, kullanıcı adını bilmeseler bile hizmet olarak kimlik doğrulaması yapabilir).
Öncelikle, AD'de bir hizmet hesabı oluşturun ve bunun için bilinen bir parola belirleyin. Grafik ADUC konsolundan (dsa.msc) veya PowerShell'de (PowerShell Active Directory modülünden) New-ADUser cmdlet'ini kullanarak bir hesap oluşturabilirsiniz:
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 $trueGrafik konsolunda veya PowerShell'de hizmet hesabı için "Kullanıcı parolayı değiştiremez" ve "Parola asla sona ermez" seçeneklerini etkinleştirin:
Get-ADUser web|Set-ADUser -PasswordNeverExpires:$True -CannotChangePassword:$true
Bir sonraki adımda, kullanıcı hesabına bir hizmet asıl adı (SPN) bağlayın. Bu adımı ayrıca yapmanıza gerek yok, çünkü ktpass bunu bir keytab dosyası oluştururken otomatik olarak yapıyor (Süreci daha iyi anlamanız için yapacağım).
Aşağıdaki SPN kaydını web hesabına bağlayın:
setspn -A HTTP/www.test.com@test.com webAD kullanıcısı ile ilişkili SPN kayıtlarının listesini görüntüleyin:
setspn -L webBir keytab dosyası oluşturmak için aşağıdaki komut kullanılır:
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.keytabSuccessfully 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)Komut, HTTP/www@test.com hizmetinin SPN kaydı için bir keytab dosyası (c:\share\webt.keytab) oluşturmuştur. SPN kaydı belirtilen şifre ile web hesabına bağlanır.
Hizmet için SPN kaydının başarıyla oluşturulduğundan emin olun (manuel olarak oluşturmadıysanız):
setspn -Q */www.test.com@test.comSPN kaydının bulunduğunu görebilirsiniz (Mevcut SPN bulundu!). Web hesabına bağlıdır.
Windows, keytab dosyasının içeriğini görüntülemek için yerleşik araçlara sahip değildir. Ancak bilgisayarınızda Java JRE kuruluysa, Java dağıtım paketinde bulunan klist.exe'yi kullanabilirsiniz.
cd "c:\Program Files\Java\jre1.8.0_181\bin"
klist.exe -K -e -t -k c:\PS\web_host.keytabKey tab: c:\PS\web_host.keytab, 5 entries found.Keytab dosyasının içeriğini görelim. SPN'ler, anahtarlar, zaman damgaları, bir şifreleme algoritması ve bir anahtar sürümü (KVNO — anahtar sürüm numarası) burada belirtilir.
Bir keytab dosyası oluştururken ktpass, kullanıcı hesabının msDS-KeyVersionNumber öznitelik değerini artırır (bunu AD Öznitelik Düzenleyicide görebilirsiniz) ve değeri keytab tablosunda bir KVNO olarak kullanır.
Hesap şifresini değiştirirseniz, öznitelik değeri bir artar ve önceki KVNO ile ll keytab girişleri geçersiz olur (yeni bir şifre eskisi ile tamamen eşleşse bile). AD'deki bir kullanıcı parolası değişirse, yeniden bir keytab dosyası oluşturmanız gerekir.
Bir keytab dosyası, farklı SPN'lerin anahtarlarını tutabilir. ktpass parametreleri kullanılarak keytab dosyasına ek SPN'ler ve anahtarlar eklenir (
-in,-
setupn,
-setpass).
Sahip olduğunuz keytab dosyasının başka bir kullanımı, uygulandığı hizmete bağlıdır. Örneğin, burada Zabbix'te şeffaf bir SSO kullanıcı kimlik doğrulaması için bir keytab dosyasının nasıl kullanılacağını öğrenebilirsiniz. Ayrıca, keytab dosyalarınızı güvende tutmayı da unutmayın (keytab dosyasının içeriğini okuyabilen herkes, dosyadaki tüm anahtarları kullanabilir).





