Windows Server'da DNS Sorgu Kaydı Nasıl Etkinleştirilir ve Günlük Dosyası Ayrıştırılır?
Bu yazıda, Windows Server çalıştıran bir DNS sunucusundaki tüm kullanıcı sorguları için DNS günlüğünün nasıl etkinleştirileceğini, DNS günlüklerinin nasıl ayrıştırılacağını ve analiz edileceğini göstereceğiz. Bir şubedeki eski bir Active Directory etki alanı denetleyicisini devre dışı bırakmam gerektiğinde bu görevle karşılaştım ve hangi aygıtların hala DNS sunucusunu kullandığını anlamam gerekiyordu. Bir DNS günlüğünü etkinleştirip analiz ettikten sonra, cihazları bulabildim ve diğer DNS sunucularını kullanacak şekilde yeniden yapılandırabildim. Ayrıca, bu yöntem, Active Directory ağınızda şüpheli etkinliği olan (kötü amaçlı URL'lere erişim, botnet ana bilgisayarları vb.) ana bilgisayarları bulmanıza da yardımcı olacaktır.
Elbette, Bağlantı Noktası 53'teki trafiği yakalamak için DNS sunucunuza Wireshark, Microsoft Ağ İzleyicisi veya pktmon yükleyebilirsiniz, ancak Windows Server'da yerleşik DNS sorgusu günlüğünü kullanmak daha kolaydır.
Varsayılan olarak, Windows Server'da DNS günlüğü devre dışıdır. Etkinleştirmek için:
DNS Yöneticisi ek bileşenini açın (
dnsmgmt.msc) ve istediğiniz DNS sunucusuna bağlanın;
-
Özelliklerini açın ve Hata Ayıklama Günlüğü sekmesine gidin;
Hata ayıklama için günlük paketleri seçeneğini etkinleştirin;
Ardından, günlüğe kaydetme seçeneklerini yapılandırabilirsiniz: DNS paket yönünü, bir protokolü (UDP ve/veya TCP), paket türlerini (basit DNS sorguları, güncellemeler veya bildirimler) seçin;
Paketleri IP adresine göre filtrele seçeneğini kullanarak, gelen veya giden paketlerin günlüğe kaydedileceği IP adreslerini belirtebilirsiniz (günlük boyutunu önemli ölçüde azaltmaya olanak tanır);
Günlük dosyası yolu ve adı kutusunda, tüm olayları kaydetmek istediğiniz metin dosyasının adını belirtin. Varsayılan olarak, DNS günlüğünün boyutu 500 MB ile sınırlıdır. Ulaşıldıktan sonra, eski DNS arama olaylarının üzerine yenileri yazılacaktır.
Ayrıca, PowerShell'i kullanarak DNS sorgu günlüğünü etkinleştirebilir veya geçerli ayarları alabilirsiniz:
Get-DnsServerDiagnosticsYüksek oranda yüklenmiş Windows DNS ana bilgisayarlarında, DNS sorgu günlüğü tutmanın CPU, RAM ve depolama üzerinde fazladan yüke neden olabileceğini unutmayın (disk performansı oldukça yeterli olmalıdır).
Ardından, herhangi bir bilgisayardan sunucunuza karşı bir DNS sorgusu çalıştırın. Örneğin, Windows Server çalıştıran DNS ana bilgisayarımızın IP adresi 192.168.13.10 ise:
nslookup a-d.site 192.168.13.10
Veya PowerShell kullanarak DNS adresini çözmeyi deneyin:
Resolve-DnsName -Name a-d.site -Server 192.168.13.10Bir DNS arama sorgusu, istenen ana bilgisayarın istemci IP adresini döndürdü.
Sorgunun DNS sunucusu günlüğünde göründüğünden emin olalım.
Bunu yapmak için metin günlük dosyasını istemci IP adresine göre arayın (
192.168.13.130). Günlük dosyasını NotePad'de açabilir veya PowerShell kullanarak grep yapabilirsiniz:
get-content "C:\Logs\dc01dns.log" | Out-String -Stream | Select-String "192.168.13.130"İşte olay örneği:
11/17/2021 6:00:00 AM 0D0C PACKET 00000272D98DD0B0 UDP Rcv 192.168.13.130 0002 Q [0001 D NOERROR] A (8)a-d(2)com(0)Gördüğünüz gibi, bir adı çözmek için bir DNS sorgusu
(8)a-d(2)com(0)teslim alındı (
rcv
) müşteriden
192.168.13.130üzerinde
UDP, ardından DNS sunucusu başarıyla (
NOERROR) yanıtladı (
snd).
Tüm alanlar dosyanın başında açıklanmıştır:
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 NameBelirli bir biçim nedeniyle, böyle bir DNS günlük dosyasını manuel olarak ayrıştırmak ve analiz etmek zordur. Bu nedenle, Get-DNSDebugLog.ps1 komut dosyasını kullanarak DNS sorgu günlüğünü daha uygun bir biçime dönüştürmeniz gerekir.
Bu PowerShell betiği benim değil ama şu anda TechNet Scriptcenter'da mevcut değil, bu yüzden onu GitHub depoma kaydettim: https://github.com/maxbakhub/winposh/blob/main/Get-DNSDebugLog.ps1.
Dosyayı diskinize indirin. Ardından, PowerShell betiklerinin mevcut konsol oturumunda çalışmasına izin verin:
Set-ExecutionPolicy -Scope Process UnrestrictedGet-DNSDebugLog.ps1'den işlevi oturumunuza aktarın:
. C:\ps\Get-DNSDebugLog.ps1Ardından, DNS günlüğünü daha uygun bir biçime dönüştürün:
Get-DNSDebugLog -DNSLog C:\Logs\dc01dns.log | format-tableVeya Excel'de daha fazla analiz için sonucu bir CSV dosyasına aktarabilirsiniz (veya bir Excel dosyasına doğrudan PowerShell'den erişebilir ve istediğiniz DNS sorgularını ona yazabilirsiniz).
Get-DNSDebugLog -DNSLog C:\Logs\dc01dns.log | Export-Csv C:\log\ProperlyFormatedDNSLog.csv -NoTypeInformationDosyayı Excel'e aktarabilir ve DNS sorgularını analiz etmek için kullanabilirsiniz (dosya, ana bilgisayar IP adreslerini ve DNS sunucunuzdan talep ettikleri DNS adlarını içerir).
Ayrıca Log Parser 2.2'yi de kullanabilirsiniz (https://docs.microsoft.com/en-us/archive/blogs/secadv/parsing-dns-server-log-to-track-active- istemciler) DNS günlük dosyasını ayrıştırmak ve analiz etmek için. Örneğin, aşağıdaki komut her bir IP adresinden gelen DNS sorgularının sayısını gösterecektir:
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"Bu örnekte, DNS günlüklerini toplamak için metin dosyaları kullandık. Windows Server 2012 ve daha yeni sürümlerde, DNS sorgularını doğrudan Olay Görüntüleyiciye (
Microsoft-Windows-DNS-Server/Audit). Ancak bence metin DNS günlüklerini analiz etmek çok daha kolay.
Elbette, DNS sorgularını birden çok sunucuda günlüğe kaydetmek istiyorsanız, günlükleri toplamak, depolamak ve işlemek için Splunk, ELK, Graylog veya Azure Log Analytics gibi özel bir çözüm kullanmanız tercih edilir.
DNS sorgu günlüğünü etkinleştirip analiz ettikten sonra, halen DNS sunucusunu kullanan cihazların IP adreslerini buldum ve diğer DNS sunucularına göre yeniden yapılandırdım. Eski DC herhangi bir FSMO rolü içermiyorsa onu kaldırabilirsiniz (AD kullanıcı oturum açma olaylarının burada önemi yoktur).





