Я пробую 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
Проблема может заключаться в том, что вам нужно изменить порядок Конфигурация процессоров сообщений
на экране Конфигурации
.
По умолчанию это Процессор GeoIP > Обработчик конвейера> Цепочка фильтров сообщений
.
Как описано в официальных документах Greylog об использовании конвейеров в разделе «Настройка процессора сообщений», вам необходимо изменить это на Цепочка фильтров сообщений > Конвейерный процессор> Процессор GeoIP
.
Я забыл сделать это на недавно установленном Graylog 2.2, после того как он несколько недель работал под 2.1. Симптомы были такими же, как у вас, правила потока snort и правила конвейера совпадали, симуляции работали, но на самом деле поля не были установлены и никаких признаков ошибок, но, что любопытно, это сработало бы, если бы я подключил конвейер к потоку по умолчанию «Все сообщения», чего я не хочу. Теперь я изменил порядок обработки сообщений, конвейер snort работает должным образом.
Я не уверен, что это правильный способ сделать это, но я добавил все свои правила конвейера в поток По умолчанию ( Система / Конвейеры> Конвейеры > Поток по умолчанию> Изменить соединения .. затем добавьте свой собственный конвейер), а затем все мои поля начали отображаться в данных поиска.