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

উইন্ডোজ ডোমেনে NTLM অথেন্টিকেশন ডিজেবল করার পদ্ধতি

NTLM (NT LAN Manager) খুব দিন ধরে মাইক্রোসফটের বেসিক অথেন্টিকেশন প্রোটোকোল হিসেবে ব্যবহৃত হয়েছে: উইন্ডোজ NT থেকেই। যদিও মাইক্রোসফট উইন্ডোজ ২০০০-এ আরও সুরক্ষিত কেরবেরোস অথেন্টিকেশন প্রোটোকোল চালু করল, NTLM (সাধারণত NTLMv2) এখনও উইন্ডোজ ডোমেন নেটওয়ার্কে ব্যাপকভাবে অথেন্টিকেশনের জন্য ব্যবহৃত হয়। এই আর্টিকেলে আমরা NTLMv1 এবং NTLMv2 প্রোটোকোল ডিজেবল করে আপনার Active Directory ডোমেনে কেরবেরোস ব্যবহার শুরু করার পদ্ধতি আলোচনা করব।

GPO কনফিগার করে NTLMv2 বাধ্যতামূলক করা

আপনি যদি আপনার ডোমেনে NTLM ব্যবহার বন্ধ করার কথা ভাবেন, তবে প্রথমে নিশ্চিত করতে হবে যে আপনি এর আরও ভালনারেবল সংস্করণ – NTLMv1 ব্যবহার করছেন না। আপনার নেটওয়ার্কে অনেক লিগেসি ডিভাইস বা সার্ভিস থাকতে পারে যা এখনো NTLMv2 বা কেরবেরোস yerine NTLMv1 অথেন্টিকেশন ব্যবহার করছে। তাই সম্পূর্ণরূপে ডিজেবল করার আগে এই আর্টিকেলের NTLM অথেন্টিকেশন ইভেন্ট অডিট সেকশন পড়ুন।

ছোট ওপেন সোর্স প্রোডাক্ট, পুরনো মডেলের নেটওয়ার্ক স্ক্যানার (যেগুলো স্ক্যান কिये ডকুমেন্ট নেটওয়ার্ক শেয়ার্ড ফোল্ডারে সেভ করে), কিছু NAS ডিভাইস এবং অন্যান্য পুরনো হার্ডওয়্যার, সফটওয়্যার এবং OS NTLMv1 ডিজেবল করলে অথেন্টিকেশন সমস্যায় পড়তে পারে।

প্রথমে ডোমেন অ্যাডমিনিস্ট্রেটরকে নিশ্চিত করতে হবে যে ডোমেনে NTLM এবং LM প্রোটোকোল অথেন্টিকেশনের জন্য নিষিদ্ধ, কারণ কিছু কেসে অ্যাটাকার スペシャル রিকোয়েস্ট ব্যবহার করে NTLM/LM রিকোয়েস্টের রেসপন্স পেতে পারে।

ডোমেন (অথবা লোকাল) পলিসি ব্যবহার করে প্রিয়ার অথেন্টিকেশন টাইপ সেট করা যায়। Group Policy Management Editor (gpmc.msc) খুলুন এবং Default Domain Policy এডিট করুন। GPO সেকশন Computer Configurations → Policies → Windows Settings → Security Settings → Local Policies → Security Options-এ যান এবং পলিসি Network Security: LAN Manager authentication level খুঁজুন।

পলিসি সেটিংসে ৬টি অপশন আছে:

  1. Send LM & NTLM responses;
  2. Send LM & NTLM responses – use NTLMv2 session security if negotiated;
  3. Send NTLM response only;
  4. Send NTLMv2 response only;
  5. Send NTLMv2 response only. Refuse LM;
  6. Send NTLMv2 response only. Refuse LM & NTLM.

NTLM অথেন্টিকেশন ব্যবহারের পলিসিগুলো তাদের সিকিউরিটি উন্নতির ক্রমে দেওয়া হয়েছে। ডিফল্টভাবে উইন্ডোজ ৭ এবং nieuwere OS অপশন Send NTLMv2 response only ব্যবহার করে। এই অপশন সক্ষম থাকলে ক্লায়েন্ট কম্পিউটার NTLMv2 অথেন্টিকেশন ব্যবহার করে, কিন্তু AD ডোমেন কন্ট্রোলার LM, NTLM এবং NTLMv2 রিকোয়েস্ট এক্সেপ্ট করে।

NTLMv2 ব্যবহার করা হয় যদি কেরবেরোস প্রোটোকোল কাজ না করে, কিছু অপারেশনের জন্য (যেমন ডোমেন-জয়েন্ড কম্পিউটারে লোকাল গ্রুপ ও অ্যাকাউন্ট ম্যানেজমেন্ট) বা ওয়ার্কগ্রুপে।

পলিসি মান সবচেয়ে সিকিউর ৬ নম্বর অপশন: “Send NTLMv2 response only. Refuse LM & NTLM”-এ পরিবর্তন করুন। আপনি যদি এই সেটিং ডোমেন কন্ট্রোলারে কনফিগার করেন, তবে সেগুলো সকল LM এবং NTLMv1 রিকোয়েস্ট রিজেক্ট করবে।

রেজিস্ট্রি দিয়েও NTLMv1 ডিজেবল করা যায়। এর জন্য রেজিস্ট্রি কী HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa-এ LmCompatibilityLevel নামের DWORD প্যারামিটার মান ০-৫ তৈরি করুন। মান ৫ পলিসি অপশন “Send NTLMv2 response only. Refuse LM NTLM”-এর সাথে মিলে।

একই GPO সেকশনে Network security: Do not store LAN Manager hash value on next password change পলিসি ইনেবলড আছে কিনা নিশ্চিত করুন। এটি উইন্ডোজ ভিস্তা / উইন্ডোজ সার্ভার ২০০৮ থেকে ডিফল্টভাবে ইনেবলড থাকে এবং LM হ্যাশ তৈরি হওয়া বন্ধ করে।

এই পলিসি আপনার ডোমেন কন্ট্রোলারগুলোর ওপর প্রয়োগ করা ভুলবেন না।

আপনি যদি নিশ্চিত হয়ে যান যে আপনি NTLMv1 ব্যবহার করছেন না, তবে আপনি আরও এগিয়ে যেতে পারেন এবং NTLMv2 ডিজেবল করার চেষ্টা করতে পারেন। NTLMv2 একটি আরও সুরক্ষিত অথেন্টিকেশন প্রোটোকোল, কিন্তু সিকিউরিটির দৃষ্টিতে কেরবেরোসের পেছনে অনেক পেছনে। (যদিও NTLMv2-এ NTLMv1-এর চেয়ে কম ভালনারেবিলিটি আছে, কিন্তু এখনও ডেটা ক্যাপচার ও রিইউজ করার চান্স রয়েছে, এবং এটি মিউচুয়াল অথেন্টিকেশন সাপোর্ট করে না)।

NTLM ডিজেবল করার মূল রিস্ক হল লিগেসি বা ভুল কনফিগারড অ্যাপ্লিকেশনগুলোর পটেনশিয়াল ইউজ যা এখনো NTLM অথেন্টিকেশন ব্যবহার করছে। এই কেসে আপনাকে সেগুলো আপডেট বা স্পেশালি কনফিগার করে কেরবেরোস-এ স্যুইচ করতে হবে।

NTLM অথেন্টিকেশন অডিট লগিং ইনেবল করা

আপনার ডোমেনে NTLM সম্পূর্ণরূপে ডিজেবল করে কেরবেরোস-এ স্যুইচ করার আগে নিশ্চিত করুন যে ডোমেনে এমন কোনো অ্যাপ্লিকেশন নেই যা NTLM অথেন্টিকেশন ব্যবহার করে এবং প্রয়োজন।

অ্যাকাউন্ট বা অ্যাপ্লিকেশন যেগুলো NTLM অথেন্টিকেশন ব্যবহার করছে সেগুলো ট্র্যাক করতে আপনি সকল কম্পিউটারে GPO ব্যবহার করে অডিট লগিং পলিসি ইনেবল করতে পারেন। Computer Configuration → Windows Settings → Security Settings → Local Policies → Security Options সেকশনে খুঁজে Network Security: Restrict NTLM: Audit NTLM authentication in this domain পলিসি ইনেবল করুন এবং এর মান Enable all-এ সেট করুন।

একইভাবে পলিসি Network Security: Restrict NTLM: Audit Incoming NTLM Traffic ইনেবল করুন এবং এর মান Enable auditing for domain accounts-এ সেট করুন।

এই পলিসিগুলো ইনেবল করার পর NTLM অথেন্টিকেশন ব্যবহারের ইভেন্টগুলো Application and Services Logs → Microsoft → Windows → NTLM সেকশনে Event Viewer-এ দেখাবে।

আপনি প্রতিটি সার্ভারে ইভেন্টগুলো অ্যানালাইজ করতে পারেন বা সেগুলো সেন্ট্রাল Windows Event Log Collector-এ সংগ্রহ করতে পারেন।

আপনাকে Microsoft-Windows-Security-Auditing সোর্স থেকে Event ID 4624 – “An Account was successfully logged on“ ইভেন্ট খুঁজতে হবে। " Detailed Authentication Information " সেকশনের ইনফরমেশনে মনোযোগ দিন। যদি Authentication Package ভ্যালুতে NTLM থাকে, তবে এই ব্যবহারকারীকে অথেন্টিকেট করার জন্য NTLM প্রোটোকোল ব্যবহৃত হয়েছে।

Package Name (NTLM only) ভ্যালুটি দেখুন। এই লাইনটি দেখায় কোন প্রোটোকোল (LM, NTLMv1 বা NTLMv2) অথেন্টিকেশনের জন্য ব্যবহার হয়েছে। এইভাবে আপনাকে লিগেসি প্রোটোকোল ব্যবহারকারী সকল সার্ভার/অ্যাপ্লিকেশন শনাক্ত করতে হবে।

উদাহরণস্বরূপ, সকল ডোমেন কন্ট্রোলারে সকল NTLMv1 অথেন্টিকেশন ইভেন্ট খুঁজতে নিচের পাওয়ারশেল স্ক্রিপ্ট ব্যবহার করা যাবে:

$ADDCs = Get-ADDomainController -filter
$Now = Get-Date
$Yesterday = $Now.AddDays(-1)
$NewOutputFile = "c:\Events\$($Yesterday.ToString('yyyyddMM'))_AD_NTLMv1_events.log"
function GetEvents($DC){
Write-Host "Searching log on " $DC.HostName
$Events = Get-EventLog "Security" -After $Yesterday.Date -Before $Now.Date -ComputerName $DC.HostName -Message "*V1*" -instanceid 4624
foreach($Event in $Events){
Write-Host $DC.HostName $Event.EventID $Event.TimeGenerated
Out-File -FilePath $NewOutputFile -InputObject "$($Event.EventID), $($Event.MachineName), $($Event.TimeGenerated), $($Event.ReplacementStrings),($Event.message)" -Append
}
}
foreach($DC in $ADDCs){GetEvents($DC)}

আপনি ডোমেনে NTLM ব্যবহারকারী ব্যবহারকারী এবং অ্যাপ্লিকেশন খুঁজে পেলে, সেগুলো কেরবেরোস-এ স্যুইচ করার চেষ্টা করুন (সম্ভবত SPN ব্যবহার করে)। কিছু অ্যাপ্লিকেশন কেরবেরোস অথেন্টিকেশন ব্যবহার করার জন্য কিছুটা রিকনফিগারেশন চায় (দেখুন Kerberos Authentication in IIS, How to configure different browsers for Kerberos authentication? আর্টিকেলগুলো)। আমার নিজের অভিজ্ঞতা থেকে বলতে পারি বড় বাণিজ্যিক প্রোডাক্টগুলোও এখনো NTLM ব্যবহার করে কেরবেরোসের বদলে, কিছু প্রোডাক্ট আপডেট বা কনফিগারেশন চেঞ্জ চায়। সেটি শুধু শনাক্ত করার কথা যে কোন অ্যাপ্লিকেশন NTLM অথেন্টিকেশন ব্যবহার করছে, এবং এখন আপনার কাছে সেটি শনাক্ত করার উপযুক্ত মেথড আছে।

কেরবেরোস অথেন্টিকেশনের জন্য আপনার সার্ভারের DNS নাম ব্যবহার করতে হবে IP ঠিকানার বদলে। আপনি যদি রিসোর্সে কানেক্ট করার সময় IP ঠিকানা স্পেসিফাই করেন, তবে NTLM অথেন্টিকেশন ব্যবহার হবে।

যেসব অ্যাপ্লিকেশন কেরবেরোস ব্যবহার করতে পারে না সেগুলো এক্সসেপশন হিসেবে যোগ করা যাবে। এতে ডোমেন লেভেলে NTLM ডিজেবল থাকা সত্ত্বেও সেগুলো NTLM অথেন্টিকেশন ব্যবহার করতে পারবে। এর জন্য Network security: Restrict NTLM: Add server exceptions for NTLM authentication in this domain পলিসি ব্যবহার করা হয়। এক্সসেপশন লিস্টে সেসে সার্ভারদের নাম যোগ করুন যেগুলোতে NTLM অথেন্টিকেশন ব্যবহার করা যাবে। আদর্শভাবে এই এক্সসেপশন লিস্ট খালি থাকা উচিত। ওয়াইল্ডকার্ড * ব্যবহার করা যায়।

Active Directory ডোমেনে NTLM সম্পূর্ণরূপে সীমাবদ্ধ করা

আপনার ডোমেনে বিভিন্ন অ্যাপ্লিকেশনের জন্য NTLM ছাড়া অথেন্টিকেশন কীভাবে কাজ করবে সেটি চেক করতে আপনি ব্যবহারকারী অ্যাকাউন্টগুলো "Protected Users" ডোমেন গ্রুপে (উইন্ডোজ সার্ভার ২০১২ R2 থেকে উপলব্ধ) যোগ করতে পারেন। এই সিকিউরিটি গ্রুপের মেম্বাররা শুধু কেরবেরোস ব্যবহার করে অথেন্টিকেট করতে পারবে (NTLM, Digest Authentication বা CredSSP অ্যালোড নয়)। এইভাবে আপনি ভিন্ন অ্যাপ্লিকেশনে কেরবেরোস ইউজার অথেন্টিকেশন সঠিকভাবে কাজ করছে কিনা যাচাই করতে পারেন।

তারপর আপনি Active Directory ডোমেনে NTLM সম্পূর্ণরূপে ডিজেবল করতে পারেন Network Security: Restrict NTLM: NTLM authentication in this domain পলিসি ব্যবহার করে।

পলিসির ৫টি অপশন আছে:

  • Disable: পলিসি ডিজেবলড (ডোমেনে NTLM অথেন্টিকেশন অ্যালোড);
  • Deny for domain accounts to domain servers: ডোমেন কন্ট্রোলার ডোমেন অ্যাকাউন্টের অধীনে সকল সার্ভারের NTLM অথেন্টিকেশন চেষ্টা ডেনাই করবে, এবং "NTLM is blocked" এরর আসবে;
  • Deny for domain accounts: ডোমেন কন্ট্রোলার সকল ডোমেন অ্যাকাউন্টের NTLM অথেন্টিকেশন চেষ্টা প্রতিরোধ করবে, এবং "NTLM is blocked" এরর আসবে;
  • Deny for domain servers: NTLM অথেন্টিকেশন রিকোয়েস্ট সকল সার্ভারের জন্য নিষিদ্ধ, বাদে সেই সার্ভারের নাম "Network security: Restrict NTLM: Add server exceptions for NTLM authentication in this domain" পলিসির এক্সসেপশন লিস্টে থাকে;
  • Deny all: ডোমেন কন্ট্রোলার সকল ডোমেন সার্ভার এবং অ্যাকাউন্টের জন্য সকল NTLM রিকোয়েস্ট ব্লক করবে।

Active Directory সিকিউরিটি আরও উন্নত করতে আমি এই আর্টিকেলগুলো পড়তে পরামর্শ দিচ্ছি: Mitigations against Mimikatz Style Attacks, Securing of Priveleged Administrator Accounts, How to Disable LLMNR and NetBIOS over TCP/IP.

  1. উইন্ডোজ ১০ ও ১১-এ উইন্ডোজ ফায়ারওয়াল নিরাপদে ডিজেবল করার স্টেপ-বাই-স্টেপ গাইড

  2. Windows 10-এ Windows Defender নিরাপদে নিষ্ক্রিয় করার ধাপাবধি গাইড

  3. Windows 11-এ OneDrive ডিজেবল করুন: গোপনীয়তা রক্ষার সহজ গাইড

  4. উইন্ডোজ ১১-এ বিজ্ঞাপন বন্ধ করুন: ক্লিনার সিস্টেমের জন্য ধাপে ধাপে গাইড