Splunk Enterprise через Fluentd¶
Обзор примера¶
Вебхуки могут использоваться как один из источников логов в системе. Общее количество подобных источников зависит от сложности системы: чем больше компонентов в системе, тем больше количество источников и объем логов. Наиболее распространенная схема логирования в сложных системах состоит из компонентов:
-
Сборщик логов: принимает логи от нескольких источников и выгружает логи в SIEM-систему.
-
SIEM-система: используется для анализа логов и мониторинга состояния системы.
В приведенном примере уведомления о событиях отправляются через вебхуки в сборщик логов Fluentd и выгружаются в SIEM‑систему Splunk.
Используемые ресурсы¶
-
Splunk Enterprise с веб‑интерфейсом на URL
https://109.111.35.11:8000
и с API на URLhttps://109.111.35.11:8088
-
Fluentd, установленный на Debian 10.4 (Buster) и доступный по адресу
https://fluentd‑example‑domain.com
-
Доступ администратора к Консоли управления Валарм в EU‑облаке для настройки webhook‑интеграции
Настройка Splunk Enterprise¶
Логи Fluentd отправляются в Splunk HTTP Event Collector с названием Wallarm Fluentd logs
и остальными настройками по умолчанию:
Для доступа к HTTP Event Collector сгенерирован токен: f44b3179-91aa-44f5-a6f7-202265e10475
.
Более подробная информация о настройке HTTPS Event Collector в Splunk доступна в официальной документации Splunk.
Настройка Fluentd¶
Настройка Fluentd описана в конфигурационном файле td-agent.conf
:
-
Обработка входящих вебхуков настроена в директиве
source
:- Весь HTTP и HTTPS‑трафик поступает на порт Fluentd 9880
- TLS‑сертификат для HTTPS‑подключения расположен в файле
/etc/pki/ca.pem
-
Отправка логов в Splunk и вывод логов настроены в директиве
match
:- Логи всех событий копируются из Fluentd и отправляются в Splunk HTTP Event Controller через output‑плагин fluent-plugin-splunk-hec
- Логи Fluentd дополнительно выводятся в командную строку в формате JSON (19-22 строки кода). Настройка используется для проверки, что события записываются в логи Fluentd
<source>
@type http # input‑плагин для HTTP и HTTPS‑трафика
port 9880 # порт для входящих запросов
<transport tls> # сертификаты для HTTPS‑подключения
ca_path /etc/pki/ca.pem
</transport>
</source>
<match **>
@type copy
<store>
@type splunk_hec # output‑плагин fluent-plugin-splunk-hec для отправки логов из Fluentd в Splunk API через HTTP Event Controller
hec_host 109.111.35.11 # адрес Splunk
hec_port 8088 # порт Splunk API
hec_token f44b3179-91aa-44f5-a6f7-202265e10475 # токен HTTP Event Controller
<format>
@type json # формат отправки логов в Splunk
</format>
</store>
<store>
@type stdout # output‑плагин для вывода логов Fluentd в командную строку
output_type json # формат вывода логов Fluentd в командную строку
</store>
</match>
Более подробное описание конфигурационного файла доступно в официальной документации Fluentd.
Тестирование настроек Fluentd
Чтобы протестировать запись логов в Fluentd и выгрузку данных в Splunk, можно отправить POST или PUT‑запрос в Fluentd.
Пример запроса:
curl -X POST 'https://fluentd‑example‑domain.com' -H "Content-Type: application/json" -H "Authorization: Splunk f44b3179-91aa-44f5-a6f7-202265e10475" -d '{"key1":"value1", "key2":"value2"}'
Логи Fluentd:
Событие в Splunk:
Настройка webhook‑интеграции¶
-
Вебхуки отправляются на
https://fluentd-example-domain.com
-
Для отправки вебхуков используются запросы типа POST
-
В запросе передается дополнительный параметр аутентификации
X-Auth-Token
-
Вебхуки отправляют на Webhook URL все доступные события: хиты, системные события, уязвимости, изменения сетевого периметра
Тестирование примера¶
Для тестирования настроек в Консоли управления Валарм добавляется новый пользователь:
В логах Fluentd появится запись:
В событиях Splunk появится запись: