कई लिनक्स सेवाएं (apache, nginx, आदि) keytab फ़ाइलों का उपयोग एक्टिव डायरेक्टरी में Kerberos प्रमाणीकरण के लिए पासवर्ड दर्ज किए बिना कर सकती हैं। Keytab फ़ाइल Kerberos प्रिंसिपल्स के नाम और उनके संबंधित एन्क्रिप्टेड कुंजियों (Kerberos पासवर्ड से प्राप्त) को रखती है। इस लेख में हम दिखाएंगे कि लिंक किए गए एक्टिव डायरेक्टरी खाते के SPN के लिए ktpass टूल का उपयोग करके keytab फ़ाइल कैसे बनाएं।
अक्सर, एक अलग एक्टिव डायरेक्टरी उपयोगकर्ता खाता उस सेवा के लिए बनाया जाता है जिसे keytab फ़ाइल का उपयोग करने की आवश्यकता होती है। हालांकि, आप इसे करने के लिए कंप्यूटर ऑब्जेक्ट का भी उपयोग कर सकते हैं। फिर सर्विस नाम खाते से बंधा होता है (ServicePrincipalName — SPN)। 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 में सर्विस अकाउंट के लिए "User cannot change password" और "Password never expires" विकल्प सक्षम करें:
Get-ADUser web|Set-ADUser -PasswordNeverExpires:$True -CannotChangePassword:$true
अगले चरण में सर्विस प्रिंसिपल नेम (SPN) को उपयोगकर्ता खाते से बांधें। आपको यह चरण अलग से करने की आवश्यकता नहीं है, क्योंकि ktpass keytab फ़ाइल बनाते समय इसे स्वचालित रूप से करता है (मैं आपको प्रक्रिया को बेहतर ढंग से समझने के लिए इसे करूंगा)।
web खाते से निम्न SPN रिकॉर्ड बांधें:
setspn -A HTTP/www.test.com@test.com web
AD उपयोगकर्ता से जुड़े SPN रिकॉर्ड की सूची प्रदर्शित करें:
setspn -L web
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
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 रिकॉर्ड निर्दिष्ट पासवर्ड के साथ web खाते से बंधा हुआ है।
सुनिश्चित करें कि सर्विस के लिए SPN रिकॉर्ड सफलतापूर्वक बनाया गया है (यदि आपने इसे मैन्युअली नहीं बनाया):
setspn -Q */www.test.com@test.com
आप देख सकते हैं कि SPN रिकॉर्ड मिल गया है (Existing SPN found!)। यह web खाते से बंधा हुआ है।
विंडोज में keytab फ़ाइल की सामग्री देखने के लिए कोई बिल्ट-इन टूल नहीं है। लेकिन यदि आपके कंप्यूटर पर Java JRE इंस्टॉल है, तो आप Java डिस्ट्रीब्यूशन पैकेज में शामिल klist.exe का उपयोग कर सकते हैं।
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.
आइए keytab फ़ाइल की सामग्री देखें। यहां SPNs, कुंजियाँ, टाइमस्टैम्प्स, एक एन्क्रिप्शन एल्गोरिदम और एक कुंजी संस्करण (KVNO — कुंजी संस्करण संख्या) निर्दिष्ट हैं।
keytab फ़ाइल बनाते समय, ktpass उपयोगकर्ता खाते के msDS-KeyVersionNumber एट्रिब्यूट मान को बढ़ाता है (आप इसे AD एट्रिब्यूट एडिटर में देख सकते हैं) और मान को keytab टेबल में KVNO के रूप में उपयोग करता है।
यदि आप खाता पासवर्ड बदलते हैं, तो एट्रिब्यूट मान एक से बढ़ जाता है, और पिछले KVNO के साथ सभी keytab एंट्रीज़ अमान्य हो जाती हैं (यहां तक कि यदि नया पासवर्ड पुराने से पूरी तरह मेल खाता है)। यदि AD में उपयोगकर्ता पासवर्ड बदलता है, तो आपको keytab फ़ाइल फिर से जनरेट करनी होगी।
एक keytab फ़ाइल अलग-अलग SPNs की कुंजियाँ रख सकती है। अतिरिक्त SPNs और कुंजियों को keytab फ़ाइल में ktpass पैरामीटर्स (-in,-setupn,-setpass) का उपयोग करके जोड़ा जाता है।
आपके द्वारा प्राप्त keytab फ़ाइल का आगे का उपयोग उस सर्विस पर निर्भर करता है जिस पर इसे लागू किया जाता है। उदाहरण के लिए, यहां आप सीख सकते हैं कि Zabbix में पारदर्शी SSO उपयोगकर्ता प्रमाणीकरण के लिए keytab फ़ाइल का उपयोग कैसे करें। साथ ही, अपने keytab फ़ाइलों को सुरक्षित रखना न भूलें (कोई भी जो keytab फ़ाइल की सामग्री पढ़ने में सक्षम है, वह इसमें से किसी भी कुंजी का उपयोग कर सकेगा)।