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

Почтовый модуль rsyslog не работает

Я хотел бы отправлять по электронной почте предупреждения о 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 на этой неделе и обнаружил в нем несколько ошибок. Я обновил его до резервного копирования, и теперь все работает. Вы можете попробовать это, так как это серьезное обновление.