इस लेख में, हम दिखाएंगे कि विंडोज सर्वर चलाने वाले डीएनएस सर्वर पर सभी उपयोगकर्ता प्रश्नों के लिए डीएनएस लॉगिंग कैसे सक्षम करें, डीएनएस लॉग का विश्लेषण और विश्लेषण कैसे करें। मुझे इस कार्य का सामना करना पड़ा जब मुझे एक शाखा कार्यालय में एक पुराने सक्रिय निर्देशिका डोमेन नियंत्रक को हटाना पड़ा और मुझे यह समझने की आवश्यकता थी कि कौन से डिवाइस अभी भी DNS सर्वर का उपयोग कर रहे थे। एक DNS लॉग को सक्षम करने और उसका विश्लेषण करने के बाद, मैं उपकरणों को खोजने और उन्हें अन्य DNS सर्वरों का उपयोग करने के लिए पुन:कॉन्फ़िगर करने में सक्षम था। साथ ही, यह विधि आपको अपने सक्रिय निर्देशिका नेटवर्क (दुर्भावनापूर्ण URL, बॉटनेट होस्ट, आदि तक पहुँच) में संदिग्ध गतिविधि वाले होस्ट खोजने में मदद करेगी।
बेशक, आप पोर्ट 53 पर ट्रैफ़िक कैप्चर करने के लिए अपने DNS होस्ट पर Wireshark, Microsoft Network Monitor, या pktmon स्थापित कर सकते हैं, लेकिन Windows सर्वर पर अंतर्निहित DNS क्वेरी लॉगिंग का उपयोग करना आसान है।
डिफ़ॉल्ट रूप से, Windows सर्वर पर DNS लॉगिंग अक्षम है। इसे सक्षम करने के लिए:
- DNS प्रबंधक खोलें स्नैप-इन (
dnsmgmt.msc
) और अपने इच्छित DNS सर्वर से कनेक्ट करें; - इसके गुण खोलें और डीबग लॉगिंग पर जाएं टैब;
- डीबगिंग के लिए लॉग पैकेट सक्षम करें विकल्प;
- फिर आप लॉगिंग विकल्पों को कॉन्फ़िगर कर सकते हैं:DNS पैकेट दिशा, एक प्रोटोकॉल (UDP और/या TCP), पैकेट प्रकार (साधारण DNS क्वेरी, अपडेट या सूचनाएं) चुनें;
- आईपी पते के आधार पर पैकेट फ़िल्टर करें . का उपयोग करना विकल्प, आप आने वाले या बाहर जाने वाले पैकेटों को लॉग करने के लिए आईपी पते निर्दिष्ट कर सकते हैं (यह लॉग आकार को काफी कम करने की अनुमति देता है);
- लॉग फ़ाइल पथ और नाम में बॉक्स में, उस टेक्स्ट फ़ाइल का नाम निर्दिष्ट करें जिसमें आप सभी ईवेंट लॉग करना चाहते हैं। डिफ़ॉल्ट रूप से, DNS लॉग का आकार 500MB तक सीमित है। इसके पहुंचने के बाद, पुराने DNS लुकअप इवेंट को नए के साथ अधिलेखित कर दिया जाएगा।
साथ ही, आप DNS क्वेरी लॉगिंग को सक्षम कर सकते हैं या PowerShell का उपयोग करके वर्तमान सेटिंग्स प्राप्त कर सकते हैं:
Get-DnsServerDiagnostics
ध्यान दें कि अत्यधिक लोड किए गए विंडोज डीएनएस होस्ट पर, डीएनएस क्वेरी लॉगिंग सीपीयू, रैम और स्टोरेज पर अतिरिक्त लोड का कारण बन सकती है (डिस्क प्रदर्शन काफी पर्याप्त होना चाहिए)।
फिर किसी भी कंप्यूटर से अपने सर्वर के विरुद्ध एक DNS क्वेरी चलाएँ। उदाहरण के लिए, अगर विंडोज सर्वर चलाने वाले हमारे डीएनएस होस्ट का आईपी एड्रेस 192.168.13.10 है:
nslookup woshub.com 192.168.13.10
या PowerShell का उपयोग करके DNS पते को हल करने का प्रयास चलाएँ:
Resolve-DnsName -Name woshub.com -Server 192.168.13.10
एक DNS लुकअप क्वेरी ने अनुरोधित होस्ट का क्लाइंट IP पता लौटा दिया।
आइए सुनिश्चित करें कि क्वेरी DNS सर्वर लॉग में दिखाई दे रही है।
ऐसा करने के लिए, क्लाइंट आईपी पते (192.168.13.130
) द्वारा टेक्स्ट लॉग फ़ाइल खोजें ) आप नोटपैड में लॉग फ़ाइल खोल सकते हैं या पावरशेल का उपयोग करके इसे ग्रीप कर सकते हैं:
get-content "C:\Logs\dc01dns.log" | Out-String -Stream | Select-String "192.168.13.130"
यहां घटना का उदाहरण दिया गया है:
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)
जैसा कि आप देख सकते हैं, एक नाम को हल करने के लिए एक DNS क्वेरी (8)woshub(2)com(0)
प्राप्त हुआ था (rcv
) क्लाइंट से 192.168.13.130
UDP
से अधिक , फिर 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 क्वेरी लॉग को अधिक सुविधाजनक प्रारूप में बदलने की आवश्यकता है। स्क्रिप्ट।
यह पॉवरशेल स्क्रिप्ट मेरी नहीं है, लेकिन यह वर्तमान में 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
या आप Excel में आगे के विश्लेषण के लिए परिणाम को CSV फ़ाइल में निर्यात कर सकते हैं (या आप PowerShell से सीधे Excel फ़ाइल तक पहुँच सकते हैं और अपनी इच्छित DNS क्वेरीज़ लिख सकते हैं)।
Get-DNSDebugLog -DNSLog C:\Logs\dc01dns.log | Export-Csv C:\log\ProperlyFormatedDNSLog.csv –NoTypeInformation
आप फ़ाइल को Excel में निर्यात कर सकते हैं और DNS प्रश्नों का विश्लेषण करने के लिए इसका उपयोग कर सकते हैं (फ़ाइल में होस्ट IP पते और DNS नाम हैं जिनका उन्होंने आपके DNS सर्वर से अनुरोध किया है)।
साथ ही, आप लॉग पार्सर 2.2 का उपयोग कर सकते हैं (https://docs.microsoft.com/en-us/archive/blogs/secadv/parsing-dns-server-log-to-track-active-clients) DNS लॉग फ़ाइल को पार्स और विश्लेषण करने के लिए। उदाहरण के लिए, नीचे दिया गया आदेश प्रत्येक आईपी पते से 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"
इस उदाहरण में, हमने DNS लॉग एकत्र करने के लिए टेक्स्ट फ़ाइलों का उपयोग किया है। विंडोज सर्वर 2012 और नए में आप सीधे इवेंट व्यूअर (Microsoft-Windows-DNS-Server/Audit
पर डीएनएस प्रश्नों को लॉग कर सकते हैं। ) लेकिन मेरी राय में, टेक्स्ट डीएनएस लॉग का विश्लेषण करना बहुत आसान है।
DNS क्वेरी लॉग को सक्षम करने और उसका विश्लेषण करने के बाद, मुझे उन उपकरणों के IP पते मिले जो अभी भी DNS सर्वर का उपयोग कर रहे थे और उन्हें अन्य DNS सर्वरों में पुन:कॉन्फ़िगर किया। यदि पुराने DC में कोई FSMO भूमिकाएँ नहीं हैं, तो आप इसे हटा सकते हैं (AD उपयोगकर्ता लॉगऑन ईवेंट यहाँ कोई मायने नहीं रखते)।