А АSunday 6 October 2019

Передача событий сервера в Syslog.

Всем привет.

Как то мы разбирали ранее что события с Windows-сервера можно перенаправить на другой Windows-сервер.

Это легко можно устроить с помощью групповой политики. Для этого в групповой политике в ветке “Computer Configuration –> Policies –> Administrative Templates –> Windows components –> Event Forwarding” установить параметр “Configure the server address, refresh interval, and issuer certificate authority of a target Subscription Manager” в значение “Enabled” со следующим значением опции “SubscriptionManagers”: Server=http://<Event Collector FQDN>:5985/wsman/SubscriptionManager/WEC

Для протокола HTTPS прописываете обмен через порт 5986.

И надо не забыть сказать кто(hostname or IP-adr) имеет право эти события забирать в политике Windows Components/Windows Remote Management (WinRM)/WinRM Service. This policy setting allows you to manage whether the Windows Remote Management (WinRM) service automatically listens on the network for requests on the HTTP transport over the default HTTP port. If you enable this policy setting, the WinRM service automatically listens on the network for requests on the HTTP transport over the default HTTP port. To allow WinRM service to receive requests over the network, configure the Windows Firewall policy setting with exceptions for Port 5985 (port for HTTP).

Но я решил такую трансляцию разнообразить и передавать все события и на сервер syslog для страховки. Для начала решаем чем же сделать шлюз.

Еvtsys.

Для того чтобы включить трансляцию событий из журналов сервера в syslog надо доставить на него один маленький сервис. Этот сервис Еvtsys хорошо известен в сети, и не менее популярно описан как самим автором так и благодарными пользователями.

Его установка весьма проста.

copy evtsys.* %systemroot%\system32
%systemroot%\system32\evtsys.exe -h SYSLOGSRV -s 240 -i
net start evtsys

где SYSLOGSRV это имя нашего Syslog-сервера.

Далее неплохо бы поправить файл конфига %systemroot%\system32\evtsys.cfg
net stop evtsys
...правка...
net start evtsys

По умолчанию фильтр указанный в Evtsys.cfg выглядит так, что передаются события со всех четырех основных журналов.

XPath:Application:<Select Path="Application">*</Select>
XPath:Security:<Select Path="Security">*</Select>
XPath:Setup:<Select Path="Setup">*</Select>
XPath:System:<Select Path="System">*</Select>



Разумеется мне столько информации не надо, поэтому я его переписал по другому. Т.е. передаем полностью два специализированных журнала плюс фильтруем на передачу журнал Security по кодам событий.

XPath:Microsoft-Windows-Sysmon/Operational:<Select Path="Microsoft-Windows-Sysmon/Operational">*</Select>
XPath:Directory Service:<Select Path="Directory Service">*</Select>
XPath:Security:<Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Security-Auditing' or @Name='EvtSys']
and (EventID=4624 or EventID=4625 or EventID=4720 or EventID=4725 or EventID=4726 or EventID=4740 or EventID=4767 or EventID=4771)]]</Select>

Краткая справка по Facility.
0 kernel messages
1 user-level messages
2 mail system
3 system daemons
4 security/authorization messages
5 messages generated internally by syslogd
6 line printer subsystem
7 network news subsystem
8 UUCP subsystem
9 clock daemon
10 security/authorization messages
11 FTP daemon
12 NTP subsystem
13 log audit
14 log alert
15 clock daemon
16 local use 0 (local0)
17 local use 1 (local1)
18 local use 2 (local2)
19 local use 3 (local3)
20 local use 4 (local4)
21 local use 5 (local5)
22 local use 6 (local6)
23 local use 7 (local7)
По умолчанию system daemons пишет в local1.

Logparser.

Есть еще одна возможность тянуть события с журналов сервера ничего дополнительно не устанавливая на сервер. Оказывается горячо любимый Logparser может не только отобрать то что мне надо, но и передать результат в формате Syslog на другой сервер. К примеру формируем SQL-запрос в диапазоне прошедших суток.

fexp2.sql:
=========
SELECT  TimeGenerated,
        CASE SourceName
          WHEN 'EventLog' THEN 'local0'
          WHEN 'Service Control Manager' THEN 'daemon'
          WHEN 'Print' THEN 'lpr'
          WHEN 'Kerberos' THEN 'auth'
          WHEN 'NETLOGON' THEN 'logaudit'
          WHEN 'Application Popup' THEN 'local7'
          ELSE 'local0'
        END AS MyFacility,
        CASE EventTypeName
          WHEN 'Error event' THEN 'err'
          WHEN 'Warning event' THEN 'warning'
          WHEN 'Information event' THEN 'info'
          ELSE 'info'
        END AS MySeverity,
        ComputerName,
        STRCAT(SourceName, ':'),
        EventID,
        Message
INTO @%Output%
FROM \\%Source%\Security
WHERE (EventID IN (4624;4625;4720;4725;4726;4740;4767;4771)
AND (TimeGenerated > TO_TIMESTAMP('%DY%','yyyy-MM-dd') AND TimeGenerated <= TO_TIMESTAMP('%DT%','yyyy-MM-dd')))

И не забываем в конце вызова Logparser указать параметр -o:SYSLOG

@echo off
set Source=DC01
set Output=SYSLOGSRV

set D=%date:~-10,2%
set /A D -= 1
set DateT=%date:~6,4%-%date:~3,2%-%D:~0,2%

set D=%date:~-10,2%
set /A D -= 2
set DateY=%date:~6,4%-%date:~3,2%-%D:~0,2%

Logparser.exe file:fexp2.sql?Out=%Output%+Src=%Source%+DT=%DateT%+DY=%DateY% -o:SYSLOG

Работает! Отличие от первого варианта - да, это будет не в режиме онлайн. Но можно исправить код запроса и установить вызов Logparser-а каждые 5 минут в планировщик задач. Или даже чаще.

Итак наш источник событий настроен, а что же у нас там с приемником т.е. Syslog-севером.

Tftpd64 сервер.

Самый простой SYSLOG-сервер для проверки что с сервера DC01 сообщения приходят успешно поднимается на щелчок пальцами. Есть такая отдельная программа Tftpd64, обладающая целым рядом интегрированных сервисов для быстрой передачи файлов. Инсталляция не требуется. Она имеет встроенный TFTP-клиент и сервер, серверы SNTP, SYSLOG, DHCP и DNS. После запуска Tftpd64 все необходимые серверы уже будут доступны, вам нужно будет внести все необходимые настройки для соответствия программы вашим потребностям в вашем окружении. Благо, это не потребует значительных усилий, благодаря простому и понятному интерфейсу. Для доступа к каждому серверу, в главном окне программы предусмотрена отдельная вкладка.


Все просто, все понятно - единственное что нет никаких фильтров на приеме сообщений и их просмотре. Поэтому я временно задействовал другой SYSLOG-сервер.

Visual Syslog сервер.


Visual Syslog сервер для Windows это программа для получения и просмотра сообщений syslog. Программа бесплатная с открытым исходным кодом. Лицензия GPL. После установки Visual Syslog Сервер для Windows сразу готов к работе, настройка не требуется. По умолчанию ожидает сообщений на портах 514 UDP и 514 TCP. Программа установки добавляет исключения брандмауэра для Visual Syslog сервер. В Visual Syslog сервере можно донастроить фильтры на приеме сообщений (Processing) чтобы не писать в файл журнала то что нам мне надо. Или распределить сообщения по разных файлам в зависимости от источника и дня недели. Visual Syslog также можно использовать и для визуального просмотра старых журналов Syslog.



Все ему хорошо за исключением того что он не запускается как служба и больше не развивается. Но скорее всего я много хочу от бесплатной программы.

Успехов.


1 comment:

Anonymous said...

Конфиги VisualSyslog-a ложаться в c:\Users\username\AppData\Local\visualsyslog\

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное