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-name | SPN коллектора WEC (для Kerberos) |
authentication.ca-certificate | Корневой сертификат для проверки клиентских сертификатов |
authentication.server-certificate | Сертификат сервера (для TLS) |
authentication.server-private-key | Закрытый ключ сервера (для TLS) |
Конфигурация сервера
Конфигурация сервера может быть задана двумя способами:
- Через блок
server--- непосредственно внутри конфигурации WEC-коллектора. - Через файл конфигурации --- путь указывается в параметре
server-config-path. Пример файла конфигурации доступен в репозитории openwec.
Конфигурация подписки
WEC-коллектор поддерживает только одну подписку, которая настраивается аналогично серверу:
- через блок
subscriptionв конфигурации коллектора; - через файл, путь к которому задаётся параметром
subscriptions-path. Пример доступен в репозитории openwec.
WEC-коллектор поддерживает для подписки только output с типом UnixDatagram. В файле конфигурации подписки необходимо указать соответствующий тип вывода и путь к сокету из конфигурации subscription-socket.
Настройка отправки событий с TLS-аутентификацией
Настройка пересылки событий на хосте Windows
-
Запустите службу WinRM на хосте Windows.
-
Откройте Редактор локальной групповой политики и перейдите по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Пересылка событий.
-
Выберите пункт Настроить конечный диспетчер подписки и введите строку подключения:
Server=https://hostname:port/wsman/,Refresh=14400,IssuerCA=<отпечаток>Например:
Server=https://wecserver.local:5986/wsman/,Refresh=14400,IssuerCA=03F1E7DADB1A9A1D439FF7522CA4050314070A3DО том, как определить значение
IssuerCA, описано ниже в разделе настройки TLS. -
Настройте доступ к журналам. В редакторе локальной групповой политики перейдите по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Служба журнала событий -> Безопасность.
-
В пунктах Настроить доступ к журналу и Настроить доступ к журналу (прежние версии) включите доступ и в поле Доступ к журналу введите:
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
- Объедините клиентский сертификат и ключ в файл PKCS#12.
- Откройте Управление сертификатами компьютеров (именно компьютеров, не пользователя).
- Импортируйте корневой сертификат в хранилище Доверенные корневые сертификаты.
- Импортируйте клиентский набор (PKCS#12) в хранилище Личное. Убедитесь, что установлена галочка Включить все расширенные настройки.
- Предоставьте доступ к клиентскому сертификату для сетевой службы:
- Нажмите правой кнопкой мыши на клиентский сертификат.
- Выберите Все задачи -> Управление закрытыми ключами.
- Добавьте учётную запись NETWORK SERVICE.
Получение отпечатка IssuerCA
Для получения значения IssuerCA используйте утилиту openssl:
openssl x509 -in ca-cert.pem -noout -sha1 -fingerprint | sed 's/^SHA1 Fingerprint=//i' | sed 's/://g'
Генерация сертификата WEC-коллектора
-
Сгенерируйте ключ на основе эллиптических кривых:
openssl ecparam -out wec-collector-key.pem -name secp384r1 -genkey -
Создайте запрос на сертификат:
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 -
Создайте сертификат:
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-коллектора и клиентских машин.
Генерация клиентского сертификата
-
Сгенерируйте приватный ключ:
openssl ecparam -out wec-client-key.pem -name secp384r1 -genkey -
Создайте запрос на сертификат, указав адрес клиентской машины в качестве имени. При использовании SAN применяйте расширение
client_certвместоserver_cert. -
Сгенерируйте сертификат:
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 -
Объедините клиентский сертификат и ключ в набор PKCS#12:
openssl pkcs12 -export -out wec-client.pfx \
-inkey wec-client-key.pem -in wec-client.pem -certfile ca-cert.pem -
Импортируйте созданный файл
wec-client.pfxв хранилище сертификатов компьютера на клиентском хосте Windows.