Оскільки логування DNS запитів в ОС Windows задача не тривіальна, для її вирішення використано 2 компоненти:
-
DigitalStakeout PDNS (https://pdns.digitalstakeout.com/resources/free-windows-dns-log-parser)
-
NXLog Community Edition (https://nxlog.co/downloads/nxlog-ce#nxlog-community-edition)
DigitalStakeout PDNS підтримує парсинг логів та відображеня подій в форматі JSON в режимі реального часу. Результат роботи DigitalStakeout PDNS показаний нижче –
Результат роботи DigitalStakeout PDNS передається в буфер компонента NXLog Community Edition та передається на SYSLOG сервер.
Компонент NXLog Community Edition виконується на DNS серверах як сервіс з правами Local System, додаткових скриптів або scheduled tasks створювати немає необхідності –
Конфігураційний файл NXLog наведено нижче.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# # DigitalStakeout configuration for converting and sending Windows DNS logs to # Scout. Both Community and Enterprise Editions of NXLog are supported. # # Version: 0.1.0 # Last modification: 2019-12-11 # # # Uncomment the proper path depending on whether your NXLog is the 32-bit or 64-bit version define ROOT C:\Program Files\nxlog #define ROOT C:\Program Files (x86)\nxlog # Set DigitalStakeout Account Parameters define DNSLOGPATH "C:\Program Files\DigitalStakeout\DigitalStakeout.DNSLogCE.exe" # define TOKEN "Your-Token" # define SECRET "Your-Secret" Moduledir %ROOT%\modules CacheDir %ROOT%\data Pidfile %ROOT%\data\nxlog.pid SpoolDir %ROOT%\data LogFile %ROOT%\data\nxlog.log define LOGFILE %ROOT%\data\nxlog.log ####################################################################### #### WINDOWS DNSLOG ##### ####################################################################### <Extension json> Module xm_json </Extension> <Extension syslog> Module xm_syslog </Extension> <Extension fileop> Module xm_fileop # Check the log file size every hour and rotate if larger than 1 MB <Schedule> Every 1 hour Exec if (file_size('%LOGFILE%') >= 1M) file_cycle('%LOGFILE%', 2); </Schedule> </Extension> <Input in_dnslog> Module im_exec Command %DNSLOGPATH% # 5 minute lookback cache Arg --time Arg 5 # 32 MB memory limit Arg --size Arg 32 </Input> <Processor buffer> Module pm_buffer # 100 MB disk buffer MaxSize 102400 Type disk </Processor> <Output out_scout> Module om_http URL http://10.10.10.10:12471 #ContentType application/json # Drop empty messages #Exec if not defined $raw_event{ drop(); } # Ensure we send in the proper format Exec delete($EventReceivedTime); Exec delete($SourceModuleName); Exec delete($SourceModuleType); Exec $eventGenerator = "windowsdns"; Exec $eventPayload = $raw_event; #Exec $token = %TOKEN%; #Exec $secret = %SECRET%; #Exec to_json(); </Output> #<Route route_dnslog_buffer_scout> # Path in_dnslog => buffer => out_scout #</Route> <Output file> Module om_file Exec delete($EventReceivedTime); Exec delete($SourceModuleName); Exec delete($SourceModuleType); Exec $eventGenerator = "windowsdns"; Exec $eventPayload = $raw_event; Exec $token = %TOKEN%; Exec $secret = %SECRET%; #Exec to_json(); File "C:\logs\logmsg.txt" </Output> <Output udp> Module om_udp Host 10.10.10.10 Port 514 Exec delete($EventReceivedTime); Exec delete($SourceModuleName); Exec delete($SourceModuleType); Exec $eventGenerator = "windowsdns"; Exec $eventPayload = $raw_event; Exec to_syslog_bsd(); </Output> <Route route_dnslog_buffer_scout> # Path in_dnslog => buffer => out_scout # Path in_dnslog => buffer => file Path in_dnslog => buffer => udp </Route> |
Конфігураційний файл містить закоментовані секції, які можуть бути використані на етапі налаштування та діагностики.
Додаткова вінформація щодо конфігураційних параметрів NXLog доступна за посиланням – https://docs.nxlog.co/userguide/