Еще не пользуетесь Windows Event Forwarding? — Тогда мы идем к вам!

Какие есть механизмы сбора журналов событий в OSSIM с серверов и рабочих станций под управлением ОС Windows?
Сам производитель заявляет безагентский сбор с помощью интерфейса WMI, который, к слову, не является рекомендуемым вариантом т.к. данный механизм сбора ресурсоемкий и на больших потоках событий работает не стабильно. Ведь интерфейс WMI изначально не предназначен, для сбора журналов событий. Делать он это может, но плохо.
Еще один вариант, на сей раз рекомендованный производителем – это агенты OSSEC, которые можно устанавливать как напрямую из интерфейса OSSIM, так и генерируя установочные файлы и вручную устанавливая их на целевые машины. Но не всегда есть возможность установки агентов на серверы.
Есть еще вариант использовать, например, Nxlog, который также, как и агенты OSSEC, требует установки на целевую систему.
Однако, есть также вариант безагентского сбора журналов Windows с использованием EventLog самой операционной системы, а точнее технологии Windows Event Forwarding (сокращенно — WEF), которая появилась еще в Windows 2008R2.
Суть технологии в том, что один сервер или рабочая станция может собирать журналы Windows Event Log по сети с других серверов и рабочих станций. Т.е. возможно организовать централизованный сбор журналов событий со всей Windows инфраструктуры не используя дополнительных агентов, а целиком полагаясь на механизмы, уже реализованные в операционной системе. Одна рабочая станция или сервер в данном случае выступает в роли коллектора логов (Windows Event Collector, WEC), а все рабочие станции или другие серверы – в роли клиентов. Для наглядности ниже приведен рисунок.

Рисунок 1 — Архитектура Windows Event Forwarding

Для отправки всех собранных событий в OSSIM или любой другой SIEM достаточно установить агента OSSEС или Nxlog на сам WEC сервер. Всего одного агента. Звучит неплохо!
У данной технологии есть следующие существенные преимущества:

  • Фильтрация передаваемых на WEC сервер логов, причем на стороне источников(т.е. не нужные нам данные даже по сети гоняться не будут),
  • Поддержка двух типов подписок (Subscription) – инициируемая сервером (WEC сервер периодически стучится на клиентов и запрашивает логи) и инициируемая клиентами (клиенты с заданной периодичностью передают логи на сервер),
  • Шифрование передаваемых данных,
  • Возможность настройки клиентов через групповые политики.

Howto

Для настройки Windows Event Forwarding необходимо на сервере, который будет выступать в роли колектора логов, (сервер WEC) выполнить следующие действия:

  1. Настроить подписку (Subscription);
  2. Включить и настроить службу Windows Remote Management (WinRM).

На серверах и рабочих станциях, с которых будут собираться логи коллектором нужно выполнить:

  1. Включить отправку логов на удаленный WEC сервер;
  2. Создать разрешение для сервиса Network Logon на чтение Event Log;
  3. Включить службу

1. Настройка сервера

1.1. Создание подписки

Подписка предназначена для того, чтобы все клиенты, обращающиеся к серверу WEC знали какие логи, с каким интервалом на него следует передавать. А также подписка задает список т.н. «полписчиков», т.е. рабочих станций и серверов, которые будут подключаться к данному WEC серверу и собственно имя EventLog’а, в который будут помещаться собранные события.

Сразу нужно отметить, что подписок может быть несколько, например, одна – для сбора и отправки всех Security Event Log’ов в локальный лог под названием, скажем «Forwarded Security Events», еще одна подписка – для отправки всех логов, собираемых от приложения Sysmon, работающего на клиентсих станциях, в лог «Forwarded Sysmon Events» и т.д. Все зависит от потребностей конкретной инфраструктуры.

Создать новую подписку можно в меню Event Viewer -> Subscriptions кликнув в меню справа на «Create Subscription». Если служба Windows Event Collector не запущена, то появится приглашение запустить ее и добавить в автостарт. Окно настройки подписки выглядит как показано на рисунке ниже.

Рисунок 2 — Окно настройки подписки (subscription)

В поле «Subscription Name» нужно указать произвольное имя для новой подписки, в поле «Destination log» указать тот самый лог, куда будут записываться все получаемые по данной подписке события от клиентов WEC. По-умолчанию в Windows есть для этих целей только лог «Forwarded Events». В следующей статье я расскажу как создать собственные дополнительные логи, чтобы аккуратно обрабатывать собираемые события. Мы же не хотим все сваливать в одну кучу, правильно?

Далее, в разделе «Subscription types and source computers» нужно указать тип подписки: Collector Initiated (WEC сервер подключается к клиентам и собирает логи) или Source Computer Initiated (клиенты с заданной периодичностью стучатся на сервер и передают логи). На данный момент я использую Source Computer Initiated чтобы не заставлять сервер стучаться на клиентов. Пусть лучше сами присылают журналы событий. Хотя, возможно, в другой инфраструктуре этот вариант будет уместнее. Список компьютеров – клиентов WEC сервера — можно задать указав отдельные машины или группы машин в AD. Также можно указать отдельные машины, не входящие в домен Windows.

Рисунок 3 — Добавление «подписчиков»

После указания всех машин и групп машин, нажмите «ОК» для возврата в предыдущее окно.

В разделе «Events to collect» можно задать фильтр для сбора только интересующих нас событий безопасности, причем фильтр этот работает на стороне клиентов. Таким образом, ненужные, «мусорные» события даже не будут передаваться по сети от клиентов к серверу – очень удачное решение. В качестве фильтра можно использовать:

  • заранее подготовленные EventLog View,
  • отдельные логи EventLog (Security, System, и т.д.) и коды событий EventID,
  • или же создать собственный фильтр в xml формате для еще более гранулированной фильтрации.

!! ВНИМАНИЕ !! Также необходимо отметить архитектурную «особенность» данного решения. Если вы указываете EventID событий, которые нужно собирать в поле «Includes/Excludes Event IDs:…» как показано на рисунке ниже, то помните, что строка с перечислением EventID должна быть не длиннее 150 символов. Иначе XML получится размера большего, чем система может обработать, логи перестанут приходить и на клиентах в логе Windows Remote Management вы будете видеть ошибку 5004, которая говорит о том, что у Network Service нет прав на чтение лога. Но это не так, дело в длинне XML. Проверил и сам набил на этом шишку, а подробнее проблема описана вот здесь. Если же необходимо сделать список EventID такой, что 150 символов никак не хватает, то по приведенной ссылке описано и решение для этого — нужно сгенерировать XML вручную.

Рисунок 4 — Настройка фильтров собираемых событий через графический интерфейс

Сразу нужно уточнить, что если тип фильтра вы выберете «XML», то вернуться обратно, к графическому режиму будет не возможно.

Рисунок 5 — Настройка фильтров событий через XML

По окончании настройки фильтров вернитесь в главное окно подписки нажав «ОК».

В разделе «Advanced settings» можно выбрать один из профилей настройки частоты передачи логов от клиентов к серверу.

Рисунок 6 — Настройка дополнительных параметров. Выбор профилей.

Встроенные профили имеют следующие настройки:

  • Normal – каждые 15 минут;
  • Minimize Bandwidth –каждые 6 часов;
  • Minimize Latency – каждые 30 секунд.

В графическом интерфейсе нет возможности задать собственную частоту отправки журналов. Это можно сделать через командную строку командой wecutil.Для смены интервала выполните две команды:
«wecutil ss /cm:Custom»
«wecutil ss /hi: миллисекунды»

Эти две команды настроят тот самый профиль «Custom», который отображается на рисунке выше.

1.2 Включение службы WinRM

Включение службы на сервере выполняется командами:

Winrm qc –q

Wecutil qc -q

Данные команды включают службу winrm (в том числе ее доступность по сети), добавляют ее в автозапуск при старте операционной системы, создают правило на локальном межсетевом экране для разрешения трафика winrm.

2. Настройка клиентов WEC

Настройка показана на примере настройки машины-клиента не через GPO. Однако все эти действия в рабочей инфраструктуре рекомендуется делать именно политиками GPO.

2.1. Включить отправку логов на удаленный WEC сервер

В редакторе политик перейти в раздел Computer Configuration -> Administrative Templates -> Windows Components -> Event Forwarding.

Дважды кликнуть на «Configure Target Subscription Manager» в окне слева.

В открывшемся окне (рисунок ниже) выбрать «Enabled», нажать на кнопку «Show» в окне «Subscription Managers». Ввести в поле «Value» адрес WEC сервера как показано на рисунке ниже.

Рисунок 7 — Настройка подписки на клиентах

Рисунок 8 — Добавление url сервера подписки

Также необходимо включить опцию «Allow Unencrypted Traffic» в разделе GPO:

Computer Configuration -> Administrative Templates -> Windows Components -> Windows Remote Management (WinRM) -> WinRM Client.

В данном примере логи отправляются от клиентов к серверу по http, без шифрования. Возможно также использовать шифрование и отправлять логи на сервер по https, но об этом в отдельной статье. Такая схема может быть использована для сбора логов с лаптопов мобильных сотрудников, которые большую часть времени находятся «в полях». В этом случае, конечно, порт сервера WEC, по которому осуществляется прием логов, придется выставить в Интернет со всеми вытекающими.

2.2. Создать разрешение для сервиса Network Logon на чтение Event Log

Это разрешение необходимо для того, чтобы данный сервис мог читать Security Log. Для доступа к этому логу требуются дополнительные права, которые необходимо предоставить.

Для этого нужно включить пользователя «Network Service» в локальную группу «Event Log Readers».

2.3. Включить службу WinRM

Самым обыкновенным образом, через ComputerManagement -> Services. Нужно запустить службу Windows Remote Management (WinRM) и настроить ее автоматический запуск.

3. Заключение

Если все сделано верно, то на сервере WEC в разделе подписок будет отображаться кол-во подключенных клиентских машин, например вот так:

Рисунок 9 — Настроенные подписки

Ах да, с сервера WEC все логи Windows систем можно далее передавать на OSSIM с помощью того же агента OSSEC или NXLog.

4. Траблшутинг

В качестве траблшутинга можно предпринять следующее:

На клиенте:

    • Проверить настройки межсетевого экрана,
    • Проверить запущена ли служба WinRM,
    • Изучить на предмет ошибок логи Eventlog-Forwarding-Plugin и Windows Remote Management в разделе Event Viewer -> Application and Services Logs -> Microsoft -> Windows.

</ul
На сервере WEC:

    • Проверить настройки межсетевого экрана,
    • Проверить запущена ли служба WinRM и прослушивает ли она указанный порт (5985 в случае http),
    • Изучить на предмет ошибок логи EventCollector и Windows Remote Management в разделе Event Viewer -> Application and Services Logs -> Microsoft -> Windows.