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

WEC-коллектор

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

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

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

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

Конфигурация, специфичная для 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.
Важно

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.