Я хотел бы отправлять по электронной почте предупреждения о snort от моего Debian Lenny fw. Системный журнал отправляет сообщения журнала от брандмауэров в центральный rsyslog.
В моем центральном rsyslog я получил что-то вроде:
$ModLoad ommail
$ActionMailSMTPServer server.company.local
$ActionMailFrom rsyslog@company.local
$ActionMailTo syslog@company.net
$ActionExecOnlyOnceEveryInterval 1
$template mailSubject,"[SNORT] Alert from %hostname%"
$template mailBody,"Snort message\r\nmsg='%msg%'"
$ActionMailSubject mailSubject
if $msg regexp 'snort\[[0-9]*\]: \[[0-9]*:[0-9]*:[0-9]*].*' then ommail:;mailBody
Но я не получаю писем, я даже могу запустить snort с чем-то вроде ping -s 1400
, он записывает такие вещи, как подписка, но все равно не получает почту!
2010-01-08T09:25:58+00:00 Hostname snort[4429]: [1:499:4] ICMP Large ICMP Packet [Classification: Potentially Bad Traffic] [Priority: 2]: {ICMP} ip_dest -> ip_src
У вас отсутствует двоеточие в начале письма ommail.
if $msg regexp 'snort[[0-9]]: [[0-9]:[0-9]:[0-9]].*' then :ommail:;mailBody
Я не могу говорить о точности вашего RegEx, но вы можете попробовать «содержит», а не «регулярное выражение», и попробовать более простой тест, чтобы сузить проблему, если она сохраняется за пределами синтаксиса, упомянутого выше.
Я бы также рекомендовал увеличить $ ActionExecOnlyOnceEveryInterval после того, как разобрались.
Опровергая старый, но поскольку проблема все еще может укусить тех, кто использует Debian Squeeze, даже с rsyslog из backports (5.8.11-1 ~ bpo60 + 2 на данный момент), возможно, стоит поделиться этим благодаря @abeverley Вот, Я мог бы решить эту проблему, сбросив значение, "добавив $ActionExecOnlyOnceEveryInterval 0
в конце правил уведомления по электронной почте ".
Например, вот теперь мой /etc/rsyslog.d/bonding.conf
:
$template bondingMailSubject,"%hostname%: bonding Event"
$template bondingMailBody,"%msg%"
$ActionMailSubject bondingMailSubject
$ActionMailTo root
$ActionExecOnlyOnceEveryInterval 300
if $programname == 'bonding' and ($msg contains 'WARNING' or $msg contains 'CRITICAL') then :ommail:;bondingMailBody
$ActionExecOnlyOnceEveryInterval 0
Я сам боролся с этим и могу подтвердить, что следующая комбинация rsyslog и синтаксиса ДЕЙСТВИТЕЛЬНО работает (прямо сейчас у меня это работает). У меня Ubuntu 10.4.1, который по какой-то странной причине поставляется с rsyslog 4.2 (он действительно старый). Итак, после удаления и установки 4.6.4.1 я готов к работе.
Получите rsyslog 4.6.4.1 из репозитория Debian Squeeze Вот. Версия 4.6.4 (или один или два более ранних выпуска; сейчас не могу вспомнить) исправляет ошибку в ActionExecOnlyOnceEveryInterval, которая игнорируется.
Я использую следующий синтаксис для Snort и могу подтвердить, что он действительно работает:
$IncludeConfig /etc/rsyslog.d/mail-settings.conf
$template mailSubjectSnort,"Snort Alert"
$template mailBodySnort,"this is the body, here's the host: %hostname%, here's the time it was reported: %timereported% and heres the message: %msg%"
$ActionMailSubject mailSubjectSnort
# make sure we receive an email only once per hour
$ActionExecOnlyOnceEveryInterval 3600
:msg, contains, "some_string" :ommail:;mailBodySnort
Я разделил свои различные устройства регистрации на отдельные файлы журналов с соответствующим файлом .conf. Я также установил директивы почтового сервера в файле с именем mail-settings.conf
которые я включаю в начало каждой конф.
Я также использую уникальное имя для каждой переменной шаблона (mailBodySnort
, mailBodySquid
и т. д.) в каждом conf, поскольку это похоже на константу, поскольку каждое последующее включение другого файла .conf не перезаписывает значение, присвоенное в предыдущем .conf.
Я только что протестировал rsyslog на этой неделе и обнаружил в нем несколько ошибок. Я обновил его до резервного копирования, и теперь все работает. Вы можете попробовать это, так как это серьезное обновление.