Перейти к содержанию

Splunk Enterprise через Fluentd

Обзор примера

Вебхуки могут использоваться как один из источников логов в системе. Общее количество подобных источников зависит от сложности системы: чем больше компонентов в системе, тем больше количество источников и объем логов. Наиболее распространенная схема логирования в сложных системах состоит из компонентов:

  • Сборщик логов: принимает логи от нескольких источников и выгружает логи в SIEM-систему.

  • SIEM-система: используется для анализа логов и мониторинга состояния системы.

В приведенном примере уведомления о событиях отправляются через вебхуки в сборщик логов Fluentd и выгружаются в SIEM‑систему Splunk.

Движение вебхука

Используемые ресурсы

Настройка Splunk Enterprise

Логи Fluentd отправляются в Splunk HTTP Event Collector с названием Wallarm Fluentd logs и остальными настройками по умолчанию:

Настройка HTTP Event Collector

Для доступа к 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
 1<source>
 2  @type http # input‑плагин для HTTP и HTTPS‑трафика
 3  port 9880 # порт для входящих запросов
 4  <transport tls> # сертификаты для HTTPS‑подключения
 5    ca_path /etc/pki/ca.pem
 6  </transport>
 7</source>
 8<match **>
 9  @type copy
10  <store>
11      @type splunk_hec # output‑плагин fluent-plugin-splunk-hec для отправки логов из Fluentd в Splunk API через HTTP Event Controller
12      hec_host 109.111.35.11 # адрес Splunk
13      hec_port 8088 # порт Splunk API
14      hec_token f44b3179-91aa-44f5-a6f7-202265e10475 # токен HTTP Event Controller
15    <format>
16      @type json # формат отправки логов в Splunk
17    </format>
18  </store>
19  <store>
20     @type stdout # output‑плагин для вывода логов Fluentd в командную строку
21     output_type json # формат вывода логов Fluentd в командную строку
22  </store>
23</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:

Логи Fluentd

Событие в Splunk:

События Splunk

Настройка webhook‑интеграции

  • Вебхуки отправляются на https://fluentd-example-domain.com

  • Для отправки вебхуков используются запросы типа POST

  • В запросе передается дополнительный параметр аутентификации X-Auth-Token

  • Вебхуки отправляют на Webhook URL все доступные события: хиты, системные события, уязвимости, изменения сетевого периметра

Webhook-интеграция с Fluentd

Тестирование примера

Для тестирования настроек в Консоли управления Валарм добавляется новый пользователь:

Добавление пользователя

В логах Fluentd появится запись:

Запись о новом пользователе в логах Fluentd

В событиях Splunk появится запись:

Карточка о новом пользователе Fluentd в Splunk