कई Linux सेवाएं (apache, nginx, आदि) कीटैब . का उपयोग कर सकती हैं बिना पासवर्ड डाले सक्रिय निर्देशिका में Kerberos प्रमाणीकरण के लिए फ़ाइलें। कीटैब फ़ाइल केर्बेरोस प्रिंसिपल के नाम और संबंधित एन्क्रिप्टेड कुंजी (केर्बरोस पासवर्ड से प्राप्त) रखती है। इस लेख में हम दिखाएंगे कि ktpass का उपयोग करके लिंक किए गए सक्रिय निर्देशिका खाते के SPN के लिए कीटैब फ़ाइल कैसे बनाई जाती है उपकरण।
सबसे अधिक बार, एक अलग सक्रिय निर्देशिका उपयोगकर्ता खाता उस सेवा के लिए बनाया जाता है जिसके लिए कीटैब फ़ाइल का उपयोग करने की आवश्यकता होती है। हालाँकि, आप इसे करने के लिए कंप्यूटर ऑब्जेक्ट का भी उपयोग कर सकते हैं। फिर सेवा का नाम खाते से जुड़ जाता है (ServicePrincipalName — एसपीएन ) 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 "[email protected]" -Path "OU=Services,OU=Munich,OU=DE,DC=test,DC=com" –AccountPassword (ConvertTo-SecureString “Sup6r!Pa$s” -AsPlainText -force) -Enabled $true
ग्राफ़िक कंसोल या पावरशेल में सेवा खाते के लिए "उपयोगकर्ता पासवर्ड नहीं बदल सकता" और "पासवर्ड कभी समाप्त नहीं होता" विकल्प सक्षम करें:
Get-ADUser web|Set-ADUser -PasswordNeverExpires:$True -CannotChangePassword:$true
अगले चरण में एक सर्विस प्रिंसिपल नेम (SPN) को यूजर अकाउंट से बाइंड करें। आपको इस चरण को अलग से करने की आवश्यकता नहीं है, क्योंकि ktpass यह स्वचालित रूप से कीटैब फ़ाइल बनाते समय करता है (मैं आपको प्रक्रिया को बेहतर ढंग से समझने के लिए ऐसा करूँगा)।
निम्नलिखित एसपीएन रिकॉर्ड को वेब . से आबद्ध करें खाता:
setspn -A HTTP/[email protected] web
AD उपयोगकर्ता से जुड़े SPN रिकॉर्ड की सूची प्रदर्शित करें:
setspn -L web
कीटैब फ़ाइल बनाने के लिए, निम्न कमांड का उपयोग किया जाता है:
ktpass -princ HTTP/[email protected] -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/[email protected] ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x1 (DES-CBC-CRC) keylength 8 (0x73f868856e046449)
कमांड ने HTTP/[email protected] सेवा के SPN रिकॉर्ड के लिए एक कीटैब फ़ाइल (c:\share\webt.keytab) बनाई है। SPN रिकॉर्ड निर्दिष्ट पासवर्ड के साथ वेब खाते से जुड़ा होता है।
सुनिश्चित करें कि सेवा के लिए एसपीएन रिकॉर्ड सफलतापूर्वक बनाया गया है (यदि आपने इसे मैन्युअल रूप से नहीं बनाया है):
setspn -Q */[email protected]
आप देख सकते हैं कि SPN रिकॉर्ड मिल गया है (मौजूदा SPN मिला! ) यह वेब खाते से जुड़ा है।
कीटैब फ़ाइल की सामग्री को देखने के लिए विंडोज़ में अंतर्निहित उपकरण नहीं हैं। लेकिन अगर आपके कंप्यूटर पर जावा जेआरई स्थापित है, तो आप 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.
आइए कीटैब फ़ाइल की सामग्री देखें। एसपीएन, कुंजी, टाइमस्टैम्प, एक एन्क्रिप्शन एल्गोरिदम और एक कुंजी संस्करण (केवीएनओ - कुंजी संस्करण संख्या) यहां निर्दिष्ट हैं।
कीटैब फ़ाइल बनाते समय, ktpass msDS-KeyVersionNumber को बढ़ा देता है उपयोगकर्ता खाते का विशेषता मान (आप इसे AD विशेषता संपादक में देख सकते हैं) और कीटैब तालिका में मान को KVNO के रूप में उपयोग करता है।
यदि आप खाता पासवर्ड बदलते हैं, तो विशेषता मान एक से बढ़ जाता है, और पिछले केवीएनओ के साथ सभी कीटैब प्रविष्टियां अमान्य हो जाती हैं (भले ही नया पासवर्ड पुराने से पूरी तरह मेल खाता हो)। अगर एडी में यूजर पासवर्ड बदलता है, तो आपको फिर से कीटैब फाइल जेनरेट करनी होगी।
एक कीटैब फ़ाइल विभिन्न एसपीएन की कुंजी रख सकती है। ktpass . का उपयोग करके कीटैब फ़ाइल में अतिरिक्त SPN और कुंजियाँ जोड़ी जाती हैं पैरामीटर (-in
,-setupn
,-setpass
)।
आपके द्वारा प्राप्त की गई कीटैब फ़ाइल का आगे उपयोग उस सेवा पर निर्भर करता है जिस पर इसे लागू किया गया है। उदाहरण के लिए, यहां आप ज़ैबिक्स में एक पारदर्शी एसएसओ उपयोगकर्ता प्रमाणीकरण के लिए कीटैब फ़ाइल का उपयोग करना सीख सकते हैं। साथ ही, अपनी कीटैब फ़ाइलों को सुरक्षित रखने के बारे में न भूलें (कोई भी जो कीटैब फ़ाइल की सामग्री को पढ़ने में सक्षम है, वह इसकी किसी भी कुंजी का उपयोग करने में सक्षम होगा)।