У цій статті ми розглянемо, як включити логістику всіх запитів користувачів DNS, які отримує сервер DNS на сервері Windows та виконує їх аналіз. У мене це було, коли було потрібно прикрасити (видалити) старий контролер домену Active Directory у гілці, і необхідно було зрозуміти, які пристрої все ще використовують цей DNS -сервер. Після включення журналу DNS та його аналізу я зміг знайти решту пристроїв та перенастроювати їх на інші сервери DNS. Крім того, ця методика допоможе вам знайти хостів у мережі з підозрілою активністю (звернення до шкідливих URL -адрес, хостів хостів тощо.D.).
Звичайно, ви можете надіти Wireshark, Network Monitor або PKTMON SERVER і відстежувати весь трафік на 53 портах, але використовувати запити DNS -функції вбудованого входу набагато простіше.За замовчуванням Windows Server відключив DNS, що реєструють усі пакети. Щоб увімкнути його:
- Запустіть консоль DNS Manager (
Dnsmgmt.MSC
) і підключитися до потрібного сервера DNS; - Відкрийте свої властивості та перейдіть на вкладку Реєстрація налагодження;
- Увімкніть опцію Пакети журналів для налагодження;
- Далі ви можете налаштувати параметри логістики: виберіть напрямок DNS, протокол (UDP та/або TCP), типи пакетів (прості запити DNS, запити на оновлення записів, сповіщення);
- За допомогою варіанту Фільтр -пакети за IP -адресою Ви можете вказати IP -адреси, для яких вам потрібно увійти в надсилання пакетів (допоможіть значно зменшити розмір журналу).
- В полі Шлях та ім'я файлу журналу Вкажіть назву текстового файлу, в якому потрібно записати всі події. За замовчуванням розмір журналу DNS обмежений 500 Мб. Після досягнення цієї межі старі події почнуть перезавантажуватись новими.
Ви також можете ввімкнути журнал DNS або отримати поточні налаштування за допомогою PowerShell:
Get-dnsserverdiagnostics
Тепер слідкуйте за будь -яким комп'ютером DNS запит на цей сервер (IP -адреса нашого хоста DNS з Windows Server 192.168.13.10), наприклад:
Nslookup winitpro.RU 192.168.13.10
Resolve -dnsname -name winitpro.ru -server 192.168.13.10
Цей запит повернувся клієнту IP -адресу запитуваного сервера.
Тепер ми перевіримо, чи відображається цей запит у журналі сервера DNS.
Для цього ми будемо шукати текстовий журнал за IP -адресою клієнта (192.168.13.200). Ви можете відкрити файл журналу в зошиті, або ви можете шукати його за допомогою PowerShell:
Get-content "c: \ logs \ dc01_dns.журнал "| out-sting -stream | select-rning" 192.168.13.200 "
Подія виглядає так:
29.04.2021 2:30:20 ранку 0D0C Пакет 00000272D98DD0B0 UDP RCV 192.168.13.200 0002 Q [0001 D Номер] A (8) WinitPro (2) RU (0)
Як бачите, журнал вказує: від клієнта 192.168.13.200 отриманий (RCV) запит DNS протоколу UDP для вирішення (8) WinitPro (2) RU (0), а потім сервер DNS успішно (Noerror) надіслав йому відповідь (SND).
Усі поля описані на початку файлу:Поле # Інформаційні значення ------------------------ 1 Дата 2 Час 3 Ідентифікатор потоку 4 Контекст 5 Ідентифікатор Інтернету 6 Індикатор UDP/TCP 7 Надіслати/ Індикатор прийому 8 Віддалений IP 9 XID (шістнадцятковий) 10 Запит/Відповідь r = Відповідь порожній = Запит 11 Опкод Q = Стандартний запит n = Повідомлення u = оновлення ? = Невідомий 12 [прапори (шістнадцять) 13 прапорів (коди чар) a = авторський asswer t = усічена відповідь d = recursion бажана r = recursion avainable 14 Відповідь 15 Питання тип 16 quessecode
Через конкретний формат досить складно проаналізувати журнал DNS, отже, перетворити запити DNS у більш зручний формат, ви можете використовувати готовий сценарій PowerShell Get-dnsdebuglog.PS1.
Сценарій не мій, але, на жаль, він зараз недоступний у Technet ScriptCenter через наступні зміни в Microsoft, тому я врятував його в своєму сховищі в Github https: // github.Com/winadm/posh/blob/master/dns/get-dnsdebuglog.PS1Завантажте цей файл на свій диск. Потім дозвольте запустити сценарії PowerShell на поточній консолі:
Встановити -executionPolicy -cope процес необмежено
Імпортуйте функцію з файлу get-dnsdebuglog.PS1 до вашого сеансу:
. C: \ ps \ get-dnsdebuglog.PS1
Тепер ви можете перетворити журнал DNS у більш зручний вигляд:
Get -dnsdebuglog -dnslog c: \ logs \ dc01_dns.Журнал | Таблиця формату
[Або ви можете експортувати результат у файл CSV для подальшого аналізу в Excel (або ви можете безпосередньо звернутися до PowerShell у файл Excel і ввести в нього необхідні рядки).
Get -dnsdebuglog -dnslog c: \ logs \ dc01_dns.Журнал | Export-CSV C: \ log \ truglyformeddnslog.CSV -notypeInformation
Ви можете експортувати цей файл для Excel та використовувати його для аналізу запитів DNS (файли містять хост -адреси та DNS, для яких вони звернулися до вашого сервера DNS).
Також для аналізу файлу журналу за допомогою DNS ви можете використовувати запити Лєг -аналізатор 2.2 (https: // docs.Microsoft.Com/en-sus/archive/blogs/secadv/parsing-dns-server-log-track-clients). Наприклад, наступна команда відображатиме інформацію про кількість запитів DNS з кожної IP -адреси:
Logparser.Exe -i: tsv -nskiplines: 30 -headerrow: Off -EiseParator: Простір -nsep: 1 -fixedsep: Off -rtp: -1 "Виберіть поле9 як ip, reversens (ip) як ім'я, кількість (ip) як -qurecuunt Forom "c: \ logs \ dc01_dns.Повідомте "What Field11 =" Q "за IP -замовленням за допомогою QueryCount DESC"
У цьому прикладі ми використовували текстові файли для збору журналів DNS. У Windows Server 2012+ ви можете записувати запити DNS безпосередньо в журнал «Переглядач подій» ( Microsoft-Windows-DNS-Server/Audit
). Але на мою думку, текстові журнали набагато простіше аналізувати.
Увімкнувши журнал DNS та його аналіз, я знайшов IP -адреси пристроїв, які все ще використовують цей DNS -сервер, і переобладнали їх на інші сервери DNS. Тепер, якщо старий постійний струм не містить ролей FSMO, то його можна спокійно видалити (події логотипу користувача не відіграють роль).