Назад | Перейти на главную страницу

Graylog: поля из правила конвейера не отображаются в данных поиска

Я пробую Graylog для системных журналов и предупреждений Snort. Я последовал примеру Вот чтобы получить мои предупреждения snort в Graylog, а затем приступил к добавлению еще одного потока, конвейера и правила для отдельного источника журнала IDS. Я в основном скопировал пример Snort и изменил Regex, чтобы извлечь соответствующие поля из нового источника журнала. Новое Regex проверяет ОК, когда я выбираю сообщение на вкладке поиска, а затем выбираю «Проверить против потока». Сообщения также отображаются в моем новом потоке, если они выбраны из Streams пункт меню в верхней части Graylog.

Дело в том, что в правиле конвейера я использую set_field() функция для присвоения значения соответствующей группе из регулярного выражения. У меня есть девять полей в Правиле, используя set_field() однако ни один из них не отображается в данных поиска. Почему это? Мне нужно использовать add_field() сначала как в примерах GELF? Я предполагал set_field() автоматически сделал это, поскольку именно так работает пример snort по ссылке выше. Приложил мое правило конвейера ниже, которое прикреплено к моему потоку IDrops в Graylog.

rule "Extract IDropS fields"
when
  has_field("message")
then
  let m = regex("^([a-z]+)\\s.*(TCP|UDP|ICMP)\\s([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}):(\\d{1,5})\\s([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}):(\\d{1,5}).*SnortSid.*:([0-9]+):([0-9]+)\\s(.*)$", to_string($message.message));

  set_field("snort_alert", false);

  set_field("sd_host", m["0"]);
  set_field("sd_proto", m["1"]);
  set_field("sd_src", m["2"]);
  set_field("sd_sport", m["3"]);

  set_field("sd_dst", m["4"]);
  set_field("sd_dport", m["5"]);
  set_field("sd_sid", (m["6"]));
  set_field("sd_rev", m["7"]);

  set_field("sd_desc", m["8"]);
end

Проблема может быть в том, что вам нужно изменить Message Processors Configuration заказ под Configurations экран.

По умолчанию это GeoIP Processor > Pipeline Processor > Message Filter Chain.

Как указано на Официальные документы Greylog об использовании конвейеров в разделе «Настроить обработчик сообщений» вам необходимо изменить это на Message Filter Chain > Pipeline Processor > GeoIP Processor.

Я забыл сделать это на недавно установленном 2.2 Graylog после того, как он несколько недель работал под 2.1. Симптомы были такими же, как у вас, правила потока snort и правила конвейера совпали, симуляции работали, но на самом деле поля не были установлены и никаких признаков ошибок, но любопытно, что это сработало бы, если бы я подключил конвейер к потоку по умолчанию «Все сообщения», чего я не хочу. Теперь я изменил порядок обработки сообщений - конвейер snort работает должным образом.

Я не уверен, что это правильный способ сделать это, но я добавил все свои правила конвейера в По умолчанию поток (Система / Конвейеры> Конвейеры> Поток по умолчанию> Редактировать соединения .. затем добавьте свой собственный конвейер), а затем все мои поля начали отображаться в данных поиска.