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
1
задан 27 December 2016 в 17:41
2 ответа

Проблема может заключаться в том, что вам нужно изменить порядок Конфигурация процессоров сообщений на экране Конфигурации .

По умолчанию это Процессор GeoIP > Обработчик конвейера> Цепочка фильтров сообщений .

Как описано в официальных документах Greylog об использовании конвейеров в разделе «Настройка процессора сообщений», вам необходимо изменить это на Цепочка фильтров сообщений > Конвейерный процессор> Процессор GeoIP .

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

1
ответ дан 3 December 2019 в 23:36

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

0
ответ дан 3 December 2019 в 23:36