অনেক লিনাক্স সার্ভিস (apache, nginx, ইত্যাদি) keytab ফাইল ব্যবহার করে এক্টিভ ডিরেক্টরিতে কেরবেরোস অথেনটিকেশন করতে পারে পাসওয়ার্ড লিখতে না হয়। কীট্যাব ফাইলটি কেরবেরোস প্রিন্সিপালের নাম এবং সংশ্লিষ্ট এনক্রিপ্টেড কী (কেরবেরোস পাসওয়ার্ড থেকে প্রাপ্ত) সংরক্ষণ করে। এই লেখায় আমরা দেখব ktpass টুল ব্যবহার করে একটি লিংকড এক্টিভ ডিরেক্টরি অ্যাকাউন্টের SPN-এর জন্য কীট্যাব ফাইল কীভাবে তৈরি করা যায়।
সাধারণত, একটি সার্ভিসের জন্য যেটি কীট্যাব ফাইল ব্যবহার করতে চায়, একটি আলাদা এক্টিভ ডিরেক্টরি ব্যবহারকারীর অ্যাকাউন্ট তৈরি করা হয়। যাচ্ছে, আপনি একটি কম্পিউটার অবজেক্টও ব্যবহার করতে পারেন। তারপর সার্ভিসের নাম অ্যাকাউন্টের সাথে বাইন্ড করা হয় (ServicePrincipalName — SPN)। SPN কেরবেরোস অথেনটিকেশন দ্বারা একটি সার্ভিস ইনস্ট্যান্সকে একটি AD অ্যাকাউন্টের সাথে ম্যাপ করতে ব্যবহৃত হয় (এটি কারণ অ্যাপগুলো সার্ভিস হিসেবে অথেনটিকেট হতে পারে এমনকি যদি তারা একটি ব্যবহারকারীর নাম না জানে)।
প্রথমে, AD-এ একটি সার্ভিস অ্যাকাউন্ট তৈরি করুন এবং এর জন্য একটি পরিচিত পাসওয়ার্ড সেট করুন। আপনি গ্রাফিক্যাল ADUC কনসোল (dsa.msc) থেকে অথবা পাওয়ারশেলে New-ADUser কmdলেট ব্যবহার করে (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
গ্রাফিক্যাল কনসোল বা পাওয়ারশেলে সার্ভিস অ্যাকাউন্টের জন্য "User cannot change password" এবং "Password never expires" অপশন সক্রিয় করুন:
Get-ADUser web|Set-ADUser -PasswordNeverExpires:$True -CannotChangePassword:$true
পরবর্তী ধাপে, একটি সার্ভিস প্রিন্সিপাল নেম (SPN) ব্যবহারকারীর অ্যাকাউন্টের সাথে বাইন্ড করুন। আপনাকে এই ধাপটি আলাদা করে করার দরকার নেই, কারণ ktpass কীট্যাব ফাইল তৈরি করার সময় এটি অটোমেটিক্যালি করে (আমি এটি করছি যাতে আপনি প্রসেসটি ভালোভাবে বুঝতে পারেন)।
web অ্যাকাউন্টের সাথে নিচের SPN রেকর্ড বাইন্ড করুন:
setspn -A HTTP/www.test.com@test.com web
AD ব্যবহারকারীর সাথে যুক্ত SPN রেকর্ডের তালিকা দেখান:
setspn -L web
কীট্যাব ফাইল তৈরি করতে নিচের কমান্ড ব্যবহার করা হয়:
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)
কমান্ডটি web অ্যাকাউন্টের সাথে নির্দিষ্ট পাসওয়ার্ড দিয়ে HTTP/www@test.com সার্ভিসের SPN রেকর্ডের জন্য একটি কীট্যাব ফাইল (c:\share\webt.keytab) তৈরি করেছে। SPN রেকর্ড web অ্যাকাউন্টের সাথে বাইন্ড করা হয়েছে।
নিশ্চিত করুন যে সার্ভিসের জন্য SPN রেকর্ড সফলভাবে তৈরি হয়েছে (আপনি যদি ম্যানুয়ালি তৈরি না করে থাকেন):
setspn -Q */www.test.com@test.com
আপনি দেখতে পাচ্ছেন যে SPN রেকর্ড পাওয়া গেছে (Existing SPN found!)। এটি web অ্যাকাউন্টের সাথে বাইন্ড করা আছে।
উইন্ডোজে কীট্যাব ফাইল কন্টেন্ট देखने এর কোনো বিল্ট-ইন টুল নেই। কিন্তু আপনার কম্পিউটারে যদি 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.
কীট্যাব ফাইলের কন্টেন্ট দেখুন। এখানে SPN-গুলো, কী-গুলো, টাইমস্ট্যাম্প, একটি এনক্রিপশন অ্যালগরিদম এবং একটি কী ভার্সন (KVNO — key version number) নির্দিষ্ট করা আছে।
কীট্যাব ফাইল তৈরি করার সময়, ktpass ব্যবহারকারীর অ্যাকাউন্টের msDS-KeyVersionNumber অ্যাট্রিবিউটের মান এক বাড়ায় (আপনি এড অ্যাট্রিবিউট এডিটরে এটি দেখতে পারেন) এবং এই মানটি কীট্যাব টেবিলে KVNO হিসেবে ব্যবহার করে।
আপনি যদি অ্যাকাউন্ট পাসওয়ার্ড পরিবর্তন করেন, তবে অ্যাট্রিবিউট মান এক বাড়ে যায়, এবং পূর্বের KVNO-সহ সকল কীট্যাব এন্ট্রি অবৈধ হয়ে যায় (যদি নতুন পাসওয়ার্ড পুরানো পাসওয়ার্ডের সাথে সম্পূর্ণ মিলে যায়)। AD-এ ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন হলে, আপনাকে আবার কীট্যাব ফাইল জেনারেট করতে হবে।
একটি কীট্যাব ফাইল ভিন্ন SPN-দের কী সংরক্ষণ করতে পারে। অতিরিক্ত SPN এবং কী কীট্যাব ফাইলে ktpass প্যারামিটার (-in, -setupn, -setpass) ব্যবহার করে যোগ করা যায়।
আপনি যে সার্ভিসের জন্য কীট্যাব ফাইল পেয়েছেন তার ব্যবহার সার্ভিসের উপর নির্ভর করে। উদাহরণস্বরূপ, এখানে আপনি শিখতে পারেন কীট্যাব ফাইল Zabbix-এ ট্রান্সপারেন্ট SSO ব্যবহারকারীর অথেনটিকেশনের জন্য কীভাবে ব্যবহার করা যায়। এছাড়া, আপনার কীট্যাব ফাইলগুলো সুরক্ষিত রাখার বিষয়েও ভাববেন (যে কেউ কীট্যাব ফাইল কন্টেন্ট পড়তে পারলে, সে সেটি থেকে যেকোনো কী ব্যবহার করতে পারবে)।