কম্পিউটার টিউটোরিয়াল

এক্টিভ ডিরেক্টরিতে দুর্বল পাসওয়ার্ডের অডিট করা

এক্টিভ ডিরেক্টরি ডোমেনে ব্যবহারকারীর পাসওয়ার্ডের জটিলতা ব্যবহারকারীর ডেটা এবং পুরো ডোমেন ইনফ্রাস্ট্রাকচারের জন্য একটি মূল নিরাপত্তা উপাদান। অনেক ব্যবহারকারী ব্যক্তিগত তথ্য, ডিকশনারি শব্দ এবং সাধারণ সংমিশ্রণ পাসওয়ার্ড হিসেবে ব্যবহার না করার পরামর্শের বावजूद সহজ ও মনে রাখা সহজ পাসওয়ার্ড পছন্দ করেন। এই লেখায় আমরা দেখাব কিভাবে পাওয়ারশেল ব্যবহার করে এক্টিভ ডিরেক্টরি ব্যবহারকারীর পাসওয়ার্ড অডিট করতে হয়, দুর্বল এবং সহজ পাসওয়ার্ড খুঁজে বের করতে হয়।

জটিল ডোমেন পাসওয়ার্ড নীতিরساتেও একজন ব্যবহারকারী টেকনিক্যালি দুর্বল বা ডিফল্ট পাসওয়ার্ড সেট করতে পারে, যেমন Pa$$w0rd বা P@ssw0rd।

DSInternals (ডায়RECTORY সার্ভিসেস ইন্টারন্যালস) পাওয়ারশেল মডিউল ইনস্টল করা

এক্টিভ ডিরেক্টরি ডাটাবেসে (ntds.dit ফাইল) সংরক্ষিত ব্যবহারকারীর পাসওয়ার্ড হ্যাশের সাথে সাধারণ ও সাধারণ পাসওয়ার্ডের একটি ডিকশনারি তুলনা করতে আপনি একটি 서드-পার্টি পাওয়ারশেল মডিউল - DSInternals ব্যবহার করতে পারেন। এই মডিউলে এমন অনেক কmdлет রয়েছে যা AD ডাটাবেসের সাথে অনলাইন বা অফলাইন মোডে (সিডি ntds.dit এর সাথে সরাসরি) বিভিন্ন ক্রিয়া সম্পাদন করতে দেয়। বিশেষ করে, আমরা Test-PasswordQuality কmdলেটে আগ্রহী যা দুর্বল, মিলতুল্য, স্ট্যান্ডার্ড, খালি পাসওয়ার্ড (Password Not Required), বা যাদের পাসওয়ার্ড কখনো মেয়াদোত্তীর্ণ হয় না তাদের শনাক্ত করতে দেয়।

দ্রষ্টব্য।

পাওয়ারশেল ভার্সন ৫ (এবং নতুনতর) এ, আপনি অফিসিয়াল পাওয়ারশেল স্ক্রিপ্ট গ্যালারি থেকে DSInternals মডিউল অনলাইন ইনস্টল করতে পারেন:

Install-Module DSInternals

পুরানো পাওয়ারশেল ভার্সনে বা ডিসকানেক্টেড এনভায়রনমেন্টে, আপনাকে GitHub (https://github.com/MichaelGrafnetter/DSInternals/releases) থেকে লেটেস্ট মডিউল ভার্সনের .zip আর্কাইভ ডাউনলোড করতে হবে। এই লেখা লেখার সময় লেটেস্ট রিলিজ ছিল DSInternals v4.4.1। এই আর্কাইভটি পাওয়ারশেল মডিউল সংরক্ষণকারী ডিরেক্টরির যেকোনো একটি তে এক্সট্র্যাক্ট করুন:

  • C:\Windows\system32\WindowsPowerShell\v1.0\Modules\DSInternals
  • C:\Users\%username%\Documents\WindowsPowerShell\Modules\DSInternals

বা বর্তমান পাওয়ারশেল সেশনে DSInternals মডিউল ইম্পোর্ট করতে এই কমান্ড ব্যবহার করুন:

Import-Module C:\distr\PS\DSInternals\DSInternals.psd1

যদি মডিউল ইম্পোর্ট করার সময় "cannot be loaded because running scripts is disabled on this system" এরর আসে, তবে আপনাকে বর্তমান পাওয়ারশেল এক্সিকিউশন পলিসি পরিবর্তন করতে হবে এবং বর্তমান সেশনে কমপক্ষে এক্সটার্নাল PS স্ক্রিপ্ট চালানোর অনুমতি দিতে হবে:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass –Force

উপলব্ধ মডিউল কmdলেটের তালিকা নিম্নরূপ পেতে পারেন:

Get-Command -Module DSInternals

Test-PasswordQuality কmdলেট দিয়ে দুর্বল এক্টিভ ডিরেক্টরি পাসওয়ার্ড খুঁজে বের করা

এরপর, আপনাকে একটি পাসওয়ার্ড ডিকশনারি তৈরি করতে হবে। এটি একটি সাধারণ টেক্সট ফাইল হবে যেখানে সাধারণভাবে ব্যবহৃত, দুর্বল এবং অন্যান্য খারাপ পাসওয়ার্ডের তালিকা থাকবে। আপনি ইন্টারনেট থেকে পাসওয়ার্ড ডিকশনারি ফাইল ডাউনলোড করতে পারেন বা নিজে তৈরি করতে পারেন। DSInternals মডিউল আপনাকে এক্টিভ ডিরেক্টরিতে আপনার ব্যবহারকারীদের পাসওয়ার্ড হ্যাশের সাথে এই ফাইলের শব্দগুলোর হ্যাশ তুলনা করতে দেয়। পাসওয়ার্ডগুলো PasswordDict.txt টেক্সট ফাইলে সংরক্ষণ করুন।

এখন একটি ছোট পাওয়ারশেল স্ক্রিপ্ট তৈরি করুন। নিচের ভেরিয়েবলগুলিতে পাসওয়ার্ড ফাইলের পাথ, ডোমেন নাম এবং ডোমেন কন্ট্রোলারের নাম নির্দিষ্ট করুন:

$DictFile = "C:\distr\PS\DSInternals\PasswordDict.txt"
$DC = "lon-dc01"
$Domain = "DC=woshub,DC=loc"

তারপর Get-ADReplAccount কmdলেট ব্যবহার করে AD-এ ব্যবহারকারীদের তালিকা পান (Get-ADUser-এর মতো)। এছাড়া, এই কmdলেট তাদের 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: 

DSInternals মডিউলের পূর্বের ভার্সনে, ShowPlainText প্যারামিটার ছিল যা ডিকশনারিতে হ্যাশ পাওয়া গেলে ব্যবহারকারীর পাসওয়ার্ড ক্লিয়ার টেক্সটে দেখাত। বর্তমান রিলিজে Test-PasswordQuality-তে এটি নেই। আপনি যদি DSInternals মডিউলের পুরানো ভার্সন ব্যবহার করতে চান, তবে নিম্নলিখিত কমান্ড দিয়ে ইনস্টল করুন:

Install-Module -Name DSInternals -RequiredVersion 2.23

হ্যাশ সার্চ AD-এ সংরক্ষিত ব্যবহারকারীর পাসওয়ার্ড ইতিহাস সহ করা হয়। আপনি দেখতে পাচ্ছেন, সাধারণ পাসওয়ার্ড والے AD ব্যবহারকারীদের সফলভাবে শনাক্ত করা হয়েছে (পাসওয়ার্ড ডিকশনারির সাথে মিলে)। একই পাসওয়ার্ড ব্যবহারকারী பல ব্যবহারকারিও পাওয়া গেছে। এই স্ক্রিপ্ট আপনাকে সাদা পাসওয়ার্ড ব্যবহারকারী অ্যাকাউন্ট খুঁজে বের করতে সাহায্য করবে যারা কাস্টম ফাইন-গ্রেইন্ড পাসওয়ার্ড পলিসির অধীন।

দুর্বল পাসওয়ার্ডের ব্যবহারকারীদের জন্য, আপনি বালিশ র‍্যান্ডম পাসওয়ার্ড জেনারেট করে পাওয়ারশেলের মাধ্যমে 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

এক্টিভ ডিরেক্টরি ডোমেন সার্ভিসের জন্য খারাপ পাসওয়ার্ডের তালিকা সেট করার কোনো বিল্ট-ইন টুল নেই। যাচ্ছে, Azure AD পাসওয়ার্ড প্রোটেকশন দিয়ে আপনি নির্দিষ্ট পাসওয়ার্ড (ব্ল্যাকলিস্ট) আপনার অন-প্রিমাইসেস এক্টিভ ডিরেক্টরিতেও ব্লক করতে পারেন।

সুতরাং, এই সিন্যারিও ব্যবহার করে আপনি সহজে AD ব্যবহারকারীর পাসওয়ার্ডের গুণমান, ব্রুট ফোর্স আক্রমণের বিরুদ্ধে তাদের প্রতিরোধক্ষমতা, বর্তমান ডোমেন পাসওয়ার্ড পলিসির জটিলতা বিশ্লেষণ করতে পারেন এবং প্রয়োজনীয় সিদ্ধান্ত নিতে পারেন। এক্টিভ ডিরেক্টরি অ্যাডমিনিস্ট্রেটররা এই অডিট নিয়মিতভাবে করতে পারেন (এবং করা উচিত)।

  1. Active Directory ডোমেন নাম কীভাবে রিনেম করবেন?

  2. RSAT ইনস্টল না করে PowerShell Active Directory মডিউল ডিপ্লয় করা

  3. Zabbix: এক্টিভ ডিরেক্টরিতে সিংগল সাইন-অন (SSO) অথেন্টিকেশন

  4. উইন্ডোজ ১০-এ Active Directory সক্ষম করা: ধাপে ধাপে সম্পূর্ণ গাইড