অ্যাক্টিভ ডিরেক্টরি ডোমেনে ব্যবহারকারীর পাসওয়ার্ডের জটিলতা ব্যবহারকারীর ডেটা এবং সমগ্র ডোমেন অবকাঠামো উভয়ের জন্যই প্রধান নিরাপত্তা উপাদানগুলির মধ্যে একটি। পাসওয়ার্ড হিসাবে ব্যক্তিগত তথ্য, অভিধানের শব্দ এবং সাধারণ সংমিশ্রণগুলি ব্যবহার না করার সুপারিশ সত্ত্বেও অনেক ব্যবহারকারী সহজ এবং সহজে মনে রাখা পাসওয়ার্ড ব্যবহার করতে পছন্দ করেন। এই নিবন্ধে, আমরা আপনাকে দেখাব কিভাবে Active Directory ব্যবহারকারীর পাসওয়ার্ড অডিট করতে হয়, PowerShell ব্যবহার করে দুর্বল এবং সহজ পাসওয়ার্ড খুঁজে বের করতে হয়।
এমনকি একটি জটিল ডোমেন পাসওয়ার্ড নীতির সাথেও, একজন ব্যবহারকারী প্রযুক্তিগতভাবে একটি দুর্বল বা ডিফল্ট পাসওয়ার্ড সেট করতে পারেন, যেমন
Pa$$w0rd
অথবা P@ssw0rd
.
কিভাবে DSInternals (Directory Services Internals) PowerShell মডিউল ইনস্টল করবেন?
অ্যাক্টিভ ডিরেক্টরি ডাটাবেসে (ntds.dit ফাইল) সংরক্ষিত ব্যবহারকারীর পাসওয়ার্ডের হ্যাশগুলিকে সাধারণ এবং সাধারণ পাসওয়ার্ডের অভিধানের সাথে তুলনা করার জন্য, আপনি একটি তৃতীয় পক্ষের পাওয়ারশেল মডিউল - DSInternals ব্যবহার করতে পারেন। এই মডিউলটিতে অনেকগুলি cmdlet রয়েছে যা অনলাইন বা অফলাইন মোডে (সরাসরি ntds.dit এর সাথে) AD ডাটাবেসের সাথে বিভিন্ন ক্রিয়া সম্পাদন করতে দেয়। বিশেষ করে, আমরা টেস্ট-পাসওয়ার্ড কোয়ালিটি এ আগ্রহী cmdlet যা ব্যবহারকারীদের দুর্বল, অনুরূপ, মানক, ফাঁকা পাসওয়ার্ড (পাসওয়ার্ড প্রয়োজন নেই) বা যাদের পাসওয়ার্ড কখনই মেয়াদোত্তীর্ণ হয় না তা সনাক্ত করতে দেয়৷
দ্রষ্টব্য। স্বাভাবিকভাবেই, ব্যবহারকারীর পাসওয়ার্ড AD ডাটাবেস থেকে প্লেইন টেক্সট হিসাবে পাওয়া যাবে না। সক্রিয় ডিরেক্টরিতে সংরক্ষিত পাসওয়ার্ড হ্যাশ করা হয়। যাইহোক, আপনি একটি অভিধান ফাইল থেকে শব্দের হ্যাশের সাথে AD ব্যবহারকারীদের পাসওয়ার্ড হ্যাশের তুলনা করতে পারেন এবং দুর্বল পাসওয়ার্ডগুলি খুঁজে পেতে পারেন।PowerShell সংস্করণ 5 (এবং নতুন) এ, আপনি অফিসিয়াল পাওয়ারশেল স্ক্রিপ্ট গ্যালারি থেকে নিম্নরূপ DSInternals মডিউল অনলাইনে ইনস্টল করতে পারেন:
Install-Module DSInternals
আগের PowerShell সংস্করণে বা সংযোগ বিচ্ছিন্ন পরিবেশে, আপনাকে GitHub (https://github.com/MichaelGrafnetter/DSInternals/releases) থেকে সর্বশেষ মডিউল সংস্করণ সহ .zip সংরক্ষণাগারটি ডাউনলোড করতে হবে। এই নিবন্ধটি লেখার সময়, সর্বশেষ প্রকাশ ছিল DSInternals v4.4.1. PowerShell মডিউল ধারণকারী ডিরেক্টরিগুলির মধ্যে একটিতে এই সংরক্ষণাগারটি বের করুন:
- C:\Windows\system32\WindowsPowerShell\v1.0\Modules\DSInternals
- C:\Users\%username%\Documents\WindowsPowerShell\Modules\DSInternals
অথবা এই কমান্ডটি ব্যবহার করে আপনার বর্তমান PowerShell সেশনে DSInternals মডিউল আমদানি করুন:
Import-Module C:\distr\PS\DSInternals\DSInternals.psd1
cannot be loaded because running scripts is disabled on this system
” একটি মডিউল আমদানি করার সময় উপস্থিত হয়, আপনাকে বর্তমান PowerShell এক্সিকিউশন নীতি পরিবর্তন করতে হবে এবং অন্তত বর্তমান সেশনে বহিরাগত PS স্ক্রিপ্টগুলি চালানোর অনুমতি দিতে হবে:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass –Force
উপলব্ধ মডিউল cmdlet এর তালিকা নিম্নরূপ প্রাপ্ত করা যেতে পারে:
Get-Command -Module DSInternals
টেস্ট-পাসওয়ার্ড কোয়ালিটি Cmdlet সহ দুর্বল সক্রিয় ডিরেক্টরি পাসওয়ার্ড খুঁজুন
পরবর্তী, আপনাকে একটি পাসওয়ার্ড অভিধান তৈরি করতে হবে। এটি সাধারণভাবে ব্যবহৃত, দুর্বল এবং অন্যান্য খারাপ পাসওয়ার্ডের তালিকা সহ একটি সাধারণ পাঠ্য ফাইল হবে। আপনি ইন্টারনেট থেকে একটি পাসওয়ার্ড অভিধান ফাইল ডাউনলোড করতে পারেন বা নিজেকে তৈরি করতে পারেন। DSInternal মডিউল আপনাকে সক্রিয় ডিরেক্টরিতে আপনার ব্যবহারকারীদের পাসওয়ার্ডের হ্যাশগুলিকে এই ফাইলের শব্দের হ্যাশগুলির সাথে তুলনা করতে দেয়৷ একটি পাঠ্য ফাইল PasswordDict.txt-এ পাসওয়ার্ডগুলি সংরক্ষণ করুন৷ .
এখন একটি ছোট পাওয়ারশেল স্ক্রিপ্ট তৈরি করুন। নিম্নলিখিত ভেরিয়েবলগুলিতে, পাসওয়ার্ড ফাইলের পথ, ডোমেন নাম এবং ডোমেন কন্ট্রোলারের নাম উল্লেখ করুন:
$DictFile = "C:\distr\PS\DSInternals\PasswordDict.txt"
কোড>
$DC = "lon-dc01"
$Domain = "DC=woshub,DC=loc"
তারপর Get-ADReplAccount ব্যবহার করে cmdlet, AD এ ব্যবহারকারীদের একটি তালিকা পান (যেমন Get-ADUser)। উপরন্তু, এই cmdlet তাদের NT এবং LM হ্যাশ, সেইসাথে হ্যাশ ইতিহাস প্রদান করে। তারপর, প্রতিটি ব্যবহারকারীর জন্য, অভিধান ফাইলের হ্যাশের সাথে পাসওয়ার্ডের হ্যাশের তুলনা করুন (অক্ষম ব্যবহারকারী অ্যাকাউন্টগুলির জন্যও পরীক্ষা করা হয়):
Get-ADReplAccount -All -Server $DC -NamingContext $Domain | Test-PasswordQuality -WeakPasswordsFile $DictFile -IncludeDisabledAccounts
স্ক্রিপ্ট চালানোর ফলাফলটি এরকম দেখতে পারে:
Active Directory Password Quality Report ---------------------------------------- Passwords of these accounts are stored using reversible encryption: LM hashes of passwords of these accounts are present: These accounts have no password set: TEST\DefaultAccount TEST\Guest Passwords of these accounts have been found in the dictionary: TEST\a.adams TEST\jbrion TEST\jsanti These groups of accounts have the same passwords: Group 1: TEST\a.novak TEST\Administrator TEST\amuller TEST\k.brown Group 2: TEST\a.adams TEST\jbrion TEST\jsanti These computer accounts have default passwords: Kerberos AES keys are missing from these accounts: Kerberos pre-authentication is not required for these accounts: Only DES encryption is allowed to be used with these accounts: These administrative accounts are allowed to be delegated to a service: TEST\a.adams TEST\a.novak TEST\Administrator TEST\jbrion TEST\jsanti TEST\k.brown TEST\krbtgt Passwords of these accounts will never expire: TEST\a.adams TEST\Administrator TEST\DefaultAccount TEST\Guest TEST\k.brown TEST\krbtgt TEST\web These accounts are not required to have a password: TEST\ADFS1$ TEST\DefaultAccount TEST\Guest These accounts that require smart card authentication have a password:
DSInternal মডিউলের পূর্ববর্তী সংস্করণে,
ShowPlainText
অভিধানে হ্যাশ পাওয়া গেলে ব্যবহারকারীর পাসওয়ার্ড পরিষ্কার পাঠে প্রদর্শনের জন্য প্যারামিটার উপলব্ধ ছিল। টেস্ট-পাসওয়ার্ড কোয়ালিটির বর্তমান রিলিজে এটি অনুপস্থিত। আপনি যদি DSInternals মডিউলের একটি পুরানো সংস্করণ ব্যবহার করতে চান, তাহলে কমান্ড দিয়ে এটি ইনস্টল করুন:
Install-Module -Name DSInternals -RequiredVersion 2.23
হ্যাশ অনুসন্ধানগুলি AD এ সংরক্ষিত ব্যবহারকারীর পাসওয়ার্ড ইতিহাস সহ সঞ্চালিত হয়। আপনি দেখতে পাচ্ছেন, সহজ পাসওয়ার্ড সহ AD ব্যবহারকারী সফলভাবে পাওয়া গেছে (পাসওয়ার্ড অভিধানের সাথে মেলে)। একই পাসওয়ার্ড সহ বেশ কয়েকজন ব্যবহারকারীকেও পাওয়া গেছে। এই স্ক্রিপ্টটি আপনাকে সহজ পাসওয়ার্ড সহ অ্যাকাউন্টগুলি খুঁজে পেতে সহায়তা করবে যা কাস্টম ফাইন-গ্রেইনড পাসওয়ার্ড নীতির অধীন৷
দুর্বল পাসওয়ার্ড সহ ব্যবহারকারীদের জন্য, আপনি শক্তিশালী র্যান্ডম পাসওয়ার্ড তৈরি করতে পারেন এবং PowerShell-এর মাধ্যমে AD এ পরিবর্তন করতে বাধ্য করতে পারেন।আপনি সক্রিয় ডিরেক্টরি ডাটাবেস ফাইলের একটি অফলাইন স্ক্যানও করতে পারেন (ntds.dit)। আপনি ছায়া অনুলিপি বা একটি ডোমেন কন্ট্রোলার ব্যাকআপ থেকে ntds.dit ফাইলের একটি অনুলিপি পেতে পারেন৷
ntds.dit ফাইলে ব্যবহারকারীর হ্যাশগুলি অফলাইনে চেক করতে, নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন:
$keyboot= Get-BootKey -SystemHiveFilePath 'C:\ADBackup\registry\SYSTEM'
Get-ADDBAccount -All -DatabasePath 'C:\ADBackup\ntds.dit -BootKey $keyboot | Test-PasswordQuality -WeakPasswordsFile $DictFile
আপনি একটি পাঠ্য ফাইলে সমস্ত হ্যাশের তালিকা রপ্তানি করতে পারেন:
Get-ADDBAccount -All -DBPath 'C:\ADBackup\ntds.dit' -Bootkey $keyboot | Format-Custom -View HashcatNT | Out-File c:\ps\ad_hashes.txt -Encoding ASCII
সুতরাং, এই দৃশ্যকল্পটি ব্যবহার করে আপনি সহজেই AD ব্যবহারকারীর পাসওয়ার্ডের গুণমান, নৃশংস শক্তির আক্রমণের বিরুদ্ধে তাদের প্রতিরোধ, বর্তমান ডোমেন পাসওয়ার্ড নীতি জটিলতার উপসংহার বিশ্লেষণ করতে পারেন এবং প্রয়োজনীয় সিদ্ধান্তে আসতে পারেন। সক্রিয় ডিরেক্টরি অ্যাডমিনিস্ট্রেটররা নিয়মিত এই অডিট সম্পাদন করতে পারে (এবং করা উচিত)৷