Перейти к основному содержимому
Версия: 4.6.X

WEC-коллектор

WEC-коллектор имитирует функции сервера Windows Event Collector, позволяя собирать события Windows удалённо, без установки агента на хостах Windows (модель Windows Event Forwarding, push с клиентов).

Для своей работы WEC-коллектор использует проект openwec и включает два исполняемых файла:

  • openwec --- консольная утилита для конфигурации базы данных сервера, управления подписками и выполнения прочих административных операций.
  • openwecd --- сервер, реализующий функционал удалённого коллектора событий Windows.

Настройка в веб-интерфейсе

Расположение: manageНастройка коллекторовКоллекторы → коллектор типа WEC.

Вкладки коллектора:

ВкладкаНазначение
Общие настройкиИмя, описание, параметры openwec/TLS, подсказка по GPO для клиентов
ЖурналыВизуальные правила журналов (каналы, уровни, keywords, коды событий, провайдеры)
ИсточникиХосты Windows, которые уже пересылают события (по heartbeats openwec)
Плагины / Логи / ОшибкиКак у других коллекторов

Вкладка «Журналы»

Правила описывают, какие события Windows должны попадать в подписку WEF. На сервере KOMRAD правила компилируются в XML QueryList и записываются в subscription.query конфигурации openwec. Редактировать «сырой» XPath в UI как основной способ не требуется.

Для каждого правила задаются:

ПолеОписание
Канал (журнал)Канал Event Log (Security, System, Application, Microsoft-Windows-…/Operational и др.). Можно выбрать из каталога или ввести своё имя
Уровни логированияCritical, Error, Warning, Information, Verbose. Пустой список = все уровни
KeywordsИменованные маски (Audit Success, Audit Failure, Correlation Hint, Classic) и/или произвольная маска HEX/decimal. Пустой выбор = без фильтра по keywords
Коды событийСписок ID через запятую: одиночные (4624), диапазоны (1000-2000), исключения (!4648 или -4648, в т.ч. !a-b)
ПровайдерыФильтр по именам провайдеров. Каталог статический (подсказки из документации); можно ввести имя вручную. Пустой список = любой провайдер на канале
подсказка

Каталог каналов и провайдеров — подсказка, а не закрытый перечень. Свободный ввод канала или провайдера, отсутствующего в каталоге, допускается.

Legacy-конфигурации

Если у коллектора задан только «сырой» subscription.query без структурированных правил, при первом сохранении правил с вкладки Журналы сервер пересоберёт QueryList из правил и запишет его в query. До этого openwec продолжает работать с прежним XML.

Добавление каналов в существующую подписку

При добавлении новых каналов в уже работающую подписку клиенты Windows могут переслать накопленный backlog по этим каналам (ограничение WEF/openwec, не зависит от флага «не читать старые события»). Планируйте изменение набора каналов с учётом возможного всплеска трафика.

Вкладка «Источники»

Отображает подключённые клиенты WEF по данным heartbeats openwec (пока коллектор в работе):

  • hostname, IP;
  • время последнего события и последнего heartbeat;
  • поиск по hostname/IP, сортировка, автообновление (около 30 с).

Индикатор «свежести» по времени последнего события (в UI):

СостояниеСмысл (ориентир)
ЗелёныйСобытия были недавно (порядка ≤ 10 минут)
ОранжевыйБыли в течение часа
СерыйДавно не было событий или событий ещё не поступало

Пустой список — нормальное состояние («источники пока не подключены»), а не ошибка. Если коллектор выключен или openwec недоступен, UI покажет ошибку загрузки с возможностью повтора.

Идентичность источника: пара hostname + UUID подписки. UUID управляемой подписки стабилен между перезапусками коллектора (сохраняется в конфигурации), чтобы история heartbeats и закладки openwec не сбрасывались.

Подсказка GPO на вкладке «Общие»

В Общих настройках доступна справка по настройке клиентов Windows. Параметры подставьте из FQDN и портов вашего WEC-коллектора.

Subscription Manager (GPO) — «Настроить конечный диспетчер подписки»:

# HTTP (пример, порт 5985)
Server=http://<FQDN>:5985/wsman/SubscriptionManager/WEC,Refresh=60

# HTTPS (пример, порт 5986)
Server=https://<FQDN>:5986/wsman/SubscriptionManager/WEC,Refresh=60

Отпечаток IssuerCA (SHA1) для HTTPS/TLS — из файла CA:

openssl x509 -in <CA>.crt -noout -fingerprint -sha1

Перед записью в реестр / GPO уберите двоеточия из отпечатка.

Security SDDL (доступ службы к журналу Security), через wevtutil или GPO:

O:BAG:SYD:(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x1;;;BO)(A;;0x1;;;SO)(A;;0x1;;;NS)
wevtutil sl Security /ca:"O:BAG:SYD:(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x1;;;BO)(A;;0x1;;;SO)(A;;0x1;;;NS)"

Пошаговая настройка TLS-сертификатов и WinRM — в разделах ниже.

Конфигурация

Конфигурация, специфичная для WEC-коллектора, расположена в блоке collector:

collector:
type: wec
value:
# Путь к исполняемому файлу CLI для сервера WEC
cli-executable-path: /usr/bin/openwec
# Путь к исполняемому файлу сервера WEC
server-executable-path: /usr/bin/openwec-server
# Конфигурация сервера WEC
server:
# Название узла, используемое в создаваемых событиях
node-name: wec-collector
# Настройки логирования сервера WEC
logging:
# Уровень подробности логов. Возможные значения: error, warn, info, debug, trace
server-log-level: warn
# Логировать доступ к WEC-серверу
enable-access-logs: false
# Путь к файлу базы данных SQLite
db-path: /var/lib/echelon/komrad/wec-collector/openwec.db
# Путь к keytab-файлу для принципалов Kerberos
keytab: ""
# Коллекторы WEC, запускаемые сервером
collectors:
- hostname: ""
listen-address: 0.0.0.0
listen-port: 5985
max-content-length: 512000
enable-proxy-protocol: false
authentication:
type: Tls
service-principal-name: ""
ca-certificate: /var/lib/echelon/komrad/certs/ca.pem
server-certificate: /var/lib/echelon/komrad/certs/server.pem
server-private-key: /var/lib/echelon/komrad/certs/server-key.pem
# Путь к файлу конфигурации сервера (если указан, используется вместо блока "server")
server-config-path: ""
# Настройки подписки WEC
subscription:
# Запрос подписки
query: >-
<QueryList><Query Id="0"><Select Path="Application">*</Select>
<Select Path="Security">*</Select><Select Path="Setup">*</Select>
<Select Path="System">*</Select></Query></QueryList>
# Формат событий. Возможные значения: Raw, RawJson, Json, Nxlog
format: Raw
subscriptions-path: ""
# Настройки Unix-сокета для приёма событий от WEC-сервера
subscription-socket:
# Путь до Unix-сокета
path: /var/lib/echelon/komrad/wec-collector/komrad-wec.sock
# Группа для создания сокета
group: null
# Режим файла сокета (по умолчанию 0755)
mode: "0744"
# Максимальный размер сообщения (по умолчанию 20 МБ)
max-message-size: 20971520
# Таймаут неактивного соединения (по умолчанию 5 минут)
timeout: 30m
# Максимальное число одновременных соединений
max-connections: null
# Символ-разделитель сообщений
line-delimiter: "\\n"
# Тип фрейминга: delimiter или rfc6587
framing: delimiter
# Тип сокета: stream или datagram
socket-type: datagram
default_capacity: 256

Параметры коллекторов

Каждый элемент массива collectors поддерживает следующие параметры:

ПараметрОписание
hostnameЛокальное имя хоста, используемое клиентами для отправки событий
listen-addressАдрес, прослушиваемый сервером
listen-portПорт, прослушиваемый сервером
max-content-lengthМаксимальный размер содержимого клиентских сообщений
enable-proxy-protocolВключение протокола PROXY для балансировщика 4-го уровня
advertized-portПорт, за который коллектор выдаёт себя (полезно при использовании балансировщика)
authentication.typeМетод аутентификации: Kerberos или Tls
authentication.service-principal-nameSPN коллектора WEC (для Kerberos)
authentication.ca-certificateКорневой сертификат для проверки клиентских сертификатов
authentication.server-certificateСертификат сервера (для TLS)
authentication.server-private-keyЗакрытый ключ сервера (для TLS)

Конфигурация сервера

Конфигурация сервера может быть задана двумя способами:

  1. Через блок server --- непосредственно внутри конфигурации WEC-коллектора.
  2. Через файл конфигурации --- путь указывается в параметре server-config-path. Пример файла конфигурации доступен в репозитории openwec.

Конфигурация подписки

WEC-коллектор поддерживает только одну управляемую подписку, которая настраивается аналогично серверу:

  • через блок subscription в конфигурации коллектора;
  • через файл, путь к которому задаётся параметром subscriptions-path. Пример доступен в репозитории openwec.

В управляемом режиме (без внешнего subscriptions-path или с перезаписью query сервером):

  • journal_rules — структурированный список правил (источник истины для UI «Журналы»);
  • subscription.query — скомпилированный QueryList XML; при наличии правил сервер перезаписывает query при сохранении;
  • subscription_uuid / subscription_name — стабильный идентификатор подписки (генерируется один раз, не меняется при каждом рестарте).

Параметр subscriptions-pathрасширенный/ops-сценарий (внешний TOML подписок). Визуальные правила журналов рассчитаны на одну управляемую подписку KOMRAD.

Важно

WEC-коллектор поддерживает для подписки только output с типом UnixDatagram. В файле конфигурации подписки необходимо указать соответствующий тип вывода и путь к сокету из конфигурации subscription-socket.

Настройка отправки событий с TLS-аутентификацией

Настройка пересылки событий на хосте Windows

  1. Запустите службу WinRM на хосте Windows.

  2. Откройте Редактор локальной групповой политики и перейдите по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Пересылка событий.

  3. Выберите пункт Настроить конечный диспетчер подписки и введите строку подключения:

    Server=https://hostname:port/wsman/,Refresh=14400,IssuerCA=<отпечаток>

    Например:

    Server=https://wecserver.local:5986/wsman/,Refresh=14400,IssuerCA=03F1E7DADB1A9A1D439FF7522CA4050314070A3D

    О том, как определить значение IssuerCA, описано ниже в разделе настройки TLS.

  4. Настройте доступ к журналам. В редакторе локальной групповой политики перейдите по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Служба журнала событий -> Безопасность.

  5. В пунктах Настроить доступ к журналу и Настроить доступ к журналу (прежние версии) включите доступ и в поле Доступ к журналу введите:

    O:BAG:SYD:(A;;0xf0005;;;SY)(A;;0x5;;;BA)(A;;0x1;;;S-1-5-32-573)(A;;0x1;;;NS)

Настройка TLS

Для настройки отправки событий по TLS необходимо подготовить три файла:

  • корневой сертификат (CA);
  • сертификат сервера (WEC-коллектора);
  • закрытый ключ сервера.

Корневой сертификат передаётся в конфигурацию WEC-коллектора в параметре authentication.ca-certificate.

Импорт сертификатов на хост Windows

  1. Объедините клиентский сертификат и ключ в файл PKCS#12.
  2. Откройте Управление сертификатами компьютеров (именно компьютеров, не пользователя).
  3. Импортируйте корневой сертификат в хранилище Доверенные корневые сертификаты.
  4. Импортируйте клиентский набор (PKCS#12) в хранилище Личное. Убедитесь, что установлена галочка Включить все расширенные настройки.
  5. Предоставьте доступ к клиентскому сертификату для сетевой службы:
    • Нажмите правой кнопкой мыши на клиентский сертификат.
    • Выберите Все задачи -> Управление закрытыми ключами.
    • Добавьте учётную запись NETWORK SERVICE.

Получение отпечатка IssuerCA

Для получения значения IssuerCA используйте утилиту openssl:

openssl x509 -in ca-cert.pem -noout -sha1 -fingerprint | sed 's/^SHA1 Fingerprint=//i' | sed 's/://g'

Генерация сертификата WEC-коллектора

  1. Сгенерируйте ключ на основе эллиптических кривых:

    openssl ecparam -out wec-collector-key.pem -name secp384r1 -genkey
  2. Создайте запрос на сертификат:

    openssl req -new -key wec-collector-key.pem -out wec-collector-req.pem \
    -batch -subj "/CN=wecserver.local" -config gencert.cnf

    В качестве CN (CommonName) укажите домен или адрес хоста, по которому клиенты будут обращаться к WEC-коллектору.

    Альтернативный способ --- указать Subject Alternative Names (SAN) через конфигурацию. Для этого добавьте в конфигурационный файл gencert.cnf блок:

    [ alt_names ]
    IP.1 = 127.0.0.1
    DNS.1 = host.domain.local

    [ server_cert ]
    # ... предыдущие параметры
    subjectAltName = @alt_names

    [ v3_req ]
    # ... предыдущие параметры
    subjectAltName = @alt_names
  3. Создайте сертификат:

    openssl x509 -req -days 1024 -in wec-collector-req.pem \
    -CA ca.pem -CAkey ca-key.pem -out wec-collector.pem \
    -set_serial 01 -extensions server_cert -extfile gencert.cnf

Пути к созданным ключу и сертификату укажите в конфигурации WEC-коллектора:

  • authentication.server-private-key --- путь к ключу;
  • authentication.server-certificate --- путь к сертификату.
Совет

Для генерации сертификатов можно использовать скрипт из репозитория openwec и конфигурацию nxlog в качестве основы.

Важно

Стандартные сертификаты, сгенерированные установщиком KOMRAD, могут не подойти. Может потребоваться генерация отдельных сертификатов для WEC-коллектора и клиентских машин.

Генерация клиентского сертификата

  1. Сгенерируйте приватный ключ:

    openssl ecparam -out wec-client-key.pem -name secp384r1 -genkey
  2. Создайте запрос на сертификат, указав адрес клиентской машины в качестве имени. При использовании SAN применяйте расширение client_cert вместо server_cert.

  3. Сгенерируйте сертификат:

    openssl x509 -req -days 1024 -in wec-client-req.pem \
    -CA ca.pem -CAkey ca-key.pem -out wec-client.pem \
    -set_serial 01 -extensions client_cert -extfile gencert.cnf
  4. Объедините клиентский сертификат и ключ в набор PKCS#12:

    openssl pkcs12 -export -out wec-client.pfx \
    -inkey wec-client-key.pem -in wec-client.pem -certfile ca-cert.pem
  5. Импортируйте созданный файл wec-client.pfx в хранилище сертификатов компьютера на клиентском хосте Windows.