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

Windows Server-এ DNS কোয়েরি লগিং সক্ষম করা এবং লগ ফাইল পার্স করা

এই আর্টিকেলে আমরা দেখাবো কিভাবে Windows Server-এ চলমান একটি DNS সার্ভারে সব ইউজার কোয়েরির জন্য DNS লগিং সক্ষম করতে হয়, কিভাবে DNS লগ পার্স এবং বিশ্লেষণ করতে হয়। আমি এই টাস্কের সম্মুখীন হয়েছিল যখন আমাকে একটি ব্রাঞ্চ অফিসের পুরনো অ্যাক্টিভ ডিরেক্টরি ডোমেন কন্ট্রোলার ডিকমিশন করতে হতো এবং আমাকে বুঝতে হতো কোন ডিভাইসগুলো এখনও DNS সার্ভার ব্যবহার করছে। DNS লগ সক্ষম করে এবং তা বিশ্লেষণ করে, আমি ডিভাইসগুলো খুঁজে পেরেছি এবং সেগুলিকে অন্যান্য DNS সার্ভার ব্যবহার করার জন্য রিকনফিগার করেছি। এছাড়া, এই পদ্ধতি আপনার অ্যাক্টিভ ডিরেক্টরি নেটওয়ার্কে সন্দেহজনক কার্যকলাপ সম্পন্ন হোস্ট খুঁজে বের করতে সাহায্য করবে (দুর্নীতিপূর্ণ URL অ্যাক্সেস, বটনেট হোস্ট, ইত্যাদি)।

বেশक, আপনি আপনার DNS হোсте Wireshark, Microsoft Network Monitor, বা pktmon ইনস্টল করে পোর্ট 53-এ ট্রাফিক ক্যাপচার করতে পারেন, কিন্তু Windows Server-এ বিল্ট-ইন DNS কোয়েরি লগিং ব্যবহার করা সহজ।

ডিফল্টভাবে, Windows Server-এ DNS লগিং ডিজেবল থাকে। এটি সক্ষম করতে:

  1. DNS Manager স্ন্যাপ-ইন (dnsmgmt.msc) খুলুন এবং যে DNS সার্ভারটি চান সেটিতে কানেক্ট হন;
  2. তার প্রপার্টিজ খুলুন এবং Debug Logging ট্যাবে যান;
  3. Log packets for debugging অপশনটি সক্ষম করুন;
  4. তারপর লগিং অপশনগুলো কনফিগার করুন: DNS প্যাকেটের দিক, প্রোটোকল (UDP এবং/অথবা TCP), প্যাকেট টাইপ (সাম্পল DNS কোয়েরি, আপডেট বা নোটিফিকেশন);
  5. Filter packets by IP address অপশন ব্যবহার করে আপনি যেস IP অ্যাড্রেসগুলোর জন্য ইনকামিং বা আউটগোइং প্যাকেট লগ করতে চান সেগুলো নির্দিষ্ট করুন (এটি লগ সাইজ ملحو্যভাবে কমাতে সাহায্য করে);
    Windows Server-এ DNS কোয়েরি লগিং সক্ষম করা এবং লগ ফাইল পার্স করা
  6. Log file path and name বক্সে, যে টেক্সট ফাইলে সব ইভেন্ট লগ করতে চান তার নাম নির্দিষ্ট করুন। ডিফল্টভাবে, DNS লগের সাইজ 500MB-এ সীমাবদ্ধ। সেটি পূর্ণ হলে, পুরনো DNS লুকআপ ইভেন্ট নতুন দিয়ে ওভাররাইট হবে।

আপনি PowerShell ব্যবহার করেও DNS কোয়েরি লগিং সক্ষম করতে পারেন বা বর্তমান সেটিংস পেতে পারেন:

Get-DnsServerDiagnostics

Windows Server-এ DNS কোয়েরি লগিং সক্ষম করা এবং লগ ফাইল পার্স করা

নোট করুন যে অত্যধিক লোডযুক্ত Windows DNS হোস্টে, DNS কোয়েরি লগিং CPU, RAM এবং স্টোরেজে অতিরিক্ত লোড দিতে পারে (ডিস্ক পারফরম্যান্স যথেষ্ট হতে হবে)।

তারপর যেকোনো কম্পিউটার থেকে আপনার সার্ভারের বিপরীতে একটি DNS কোয়েরি চালান। উদাহরণস্বরূপ, যদি আমাদের Windows Server-এ চলমান DNS হোস্টের IP অড্রেস 192.168.13.10 হয়:

nslookup woshub.com 192.168.13.10

Windows Server-এ DNS কোয়েরি লগিং সক্ষম করা এবং লগ ফাইল পার্স করা

অথবা PowerShell ব্যবহার করে DNS ঠিকানা রেজল্ভ করার চেষ্টা করুন:

Resolve-DnsName -Name woshub.com -Server 192.168.13.10

একটি DNS লুকআপ কোয়েরি ক্লায়েন্ট IP অড্রেস রিটার্ন করেছে অনুরোধ করা হোস্টের।

আসুন নিশ্চিত করি যে কোয়েরিটি DNS সার্ভার লগে দিয়েছে।

সেজন্য, ক্লায়েন্ট IP অড্রেস (192.168.13.130) দিয়ে টেক্সট লগ ফাইলটি সার্চ করুন। আপনি লগ ফাইলটি নোটপ্যাডে খুলতে পারেন বা PowerShell ব্যবহার করে grep করতে পারেন:

get-content "C:\Logs\dc01dns.log" | Out-String -Stream | Select-String "192.168.13.130"

Windows Server-এ DNS কোয়েরি লগিং সক্ষম করা এবং লগ ফাইল পার্স করা

এখানে একটি ইভেন্ট উদাহরণ:

11/17/2021 6:00:00 AM 0D0C PACKET 00000272D98DD0B0 UDP Rcv 192.168.13.130 0002 Q [0001 D NOERROR] A (8)woshub(2)com(0)

আপনি দেখতে পাচ্ছেন, ক্লায়েন্ট 192.168.13.130 থেকে UDP এর মাধ্যমে একটি ডোমেন নাম রেজল্ভ করার DNS কোয়েরি রিসিভ করা হয়েছে (rcv), তারপর DNS সার্ভার সফলভাবে (NOERROR) রেসপন্স পাঠিয়েছে (snd)।

ফাইলটির শুরুতে সব ফিল্ড বর্ণনা করা আছে:

Field # Information Values ------- ----------- ------ 1 Date 2 Time 3 Thread ID 4 Context 5 Internal packet identifier 6 UDP/TCP indicator 7 Send/Receive indicator 8 Remote IP 9 Xid (hex) 10 Query/Response R = Response blank = Query 11 Opcode Q = Standard Query N = Notify U = Update ? = Unknown 12 Flags (hex) 13 Flags (char codes) A = Authoritative Answer T = Truncated Response D = Recursion Desired R = Recursion Available 14 ResponseCode 15 Question Type 16 Question Name

নির্দিষ্ট ফরম্যাটের কারণে, এমন DNS লগ ফাইল ম্যানুয়ালি পার্স এবং বিশ্লেষণ করা কঠিন। তাই আপনাকে Get-DNSDebugLog.ps1 স্ক্রিপ্ট ব্যবহার করে DNS কোয়েরি লগকে আরও সুবিধাজনক ফরম্যাটে কনভার্ট করতে হবে।

এই PowerShell স্ক্রিপ্টটি আমার নয়, কিন্তু এটি বর্তমানে TechNet Scriptcenter-এ উপলব্ধ নয়, তাই আমি এটি আমার GitHub রিপোজিটরিতে সংরক্ষণ করেছি: https://github.com/maxbakhub/winposh/blob/main/Get-DNSDebugLog.ps1।

ফাইলটি আপনার ডিস্কে ডাউনলোড করুন। তারপর বর্তমান কনসোল সেশনে PowerShell স্ক্রিপ্ট এক্সিকিউশন অনুমতি দিন:

Set-ExecutionPolicy -Scope Process Unrestricted

Get-DNSDebugLog.ps1 থেকে ফাংশনটি আপনার সেশনে ইম্পোর্ট করুন:

. C:\ps\Get-DNSDebugLog.ps1

তারপর DNS লগকে আরও সুবিধাজনক ফরম্যাটে রূপান্তর করুন:

Get-DNSDebugLog -DNSLog C:\Logs\dc01dns.log | format-table

Windows Server-এ DNS কোয়েরি লগিং সক্ষম করা এবং লগ ফাইল পার্স করা

অথবা আপনি ফলাফলটি CSV ফাইলে এক্সপোর্ট করতে পারেন এক্সেলে дальterior বিশ্লেষণের জন্য (অথবা আপনি সরাসরি PowerShell থেকে এক্সেল ফাইল অ্যাক্সেস করে আপনার চাওয়া DNS কোয়েরি লিখতে পারেন)।

Get-DNSDebugLog -DNSLog C:\Logs\dc01dns.log | Export-Csv C:\log\ProperlyFormatedDNSLog.csv –NoTypeInformation

আপনি ফাইলটি এক্সেলে এক্সপোর্ট করে DNS কোয়েরি বিশ্লেষণ করতে পারেন (ফাইলটিতে হোস্ট IP অড্রেস এবং সেগুলো আপনার DNS সার্ভার থেকে কী DNS নাম অনুরোধ করেছে তা থাকে)।

আপনি Log Parser 2.2 (https://docs.microsoft.com/en-us/archive/blogs/secadv/parsing-dns-server-log-to-track-active-clients) ব্যবহার করেও DNS লগ ফাইল পার্স এবং বিশ্লেষণ করতে পারেন। উদাহরণস্বরূপ, নিচের কমান্ডটি প্রতিটি IP অড্রেস থেকে কতগুলো DNS কোয়েরি হয়েছে তা দেখাবে:

LogParser.exe -i:TSV -nskiplines:30 -headerRow:off -iSeparator:space -nSep:1 -fixedSep:off -rtp:-1 "SELECT field9 AS IP, REVERSEDNS(IP) AS Name, count(IP) as QueryCount FROM "C:\Logs\dc01dns.log" WHERE field11 = 'Q' GROUP BY IP ORDER BY QueryCount DESC"

Windows Server-এ DNS কোয়েরি লগিং সক্ষম করা এবং লগ ফাইল পার্স করা

এই উদাহরণে, আমরা DNS লগ সংগ্রহের জন্য টেক্সট ফাইল ব্যবহার করেছি। Windows Server 2012 এবং নতুন ভার্সনে আপনি DNS কোয়েরি সরাসরি Event Viewer-এ (Microsoft-Windows-DNS-Server/Audit) লগ করতে পারেন। لكن আমার মতে, টেক্সট DNS লগ বিশ্লেষণ করা অনেক সহজ।

বেশক, যদি আপনি একাধিক সার্ভারে DNS কোয়েরি লগ করতে চান, তবে লগ সংগ্রহ, সংরক্ষণ এবং প্রসেস করার জন্য একটি বিশেষ সমাধান ব্যবহার করা ভালো, যেমন Splunk, ELK, Graylog, বা Azure Log Analytics।

DNS কোয়েরি লগ সক্ষম করে এবং তা বিশ্লেষণ করার পর, আমি এখনও DNS সার্ভার ব্যবহার করা ডিভাইসগুলোর IP অড্রেস খুঁজে পেলাম এবং সেগুলিকে অন্যান্য DNS সার্ভারে রিকনফিগার করলাম। পুরনো DC-তে কোন FSMO রোল না থাকলে, আপনি এটি রিমুভ করতে পারেন (AD ইউজার লগ অন ইভেন্ট এখানে মোনদership)।

  1. উইন্ডোজ ১০-এ DNS কীভাবে পরিবর্তন করবেন

  2. উইন্ডোজ ১০-এ DLNA সার্ভার সক্রিয় করার ধাপে ধাপে গাইড

  3. উইন্ডোজ ১১-এ DNS সেটিংস পরিবর্তন: ধাপে ধাপে গাইড

  4. উইন্ডোজ ১১-এ DNS সার্ভার পরিবর্তন করুন আরও নিরাপত্তার জন্য: ধাপে ধাপে গাইড