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