我想通过我的 Debian Lenny fw 通过电子邮件发送 snort 警报。Syslog 将日志消息从防火墙发送到中央 rsyslog。
在我的中央 rsyslog 上,我得到了类似的内容:
$ModLoad ommail
$ActionMailSMTPServer server.company.local
$ActionMailFrom [email protected]
$ActionMailTo [email protected]
$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。
这周我刚刚测试了 rsyslog 并遇到了一些错误。我将它升级到备份端口,现在一切正常。您可以尝试一下,因为它是一次重大升级。
我自己为此苦苦挣扎,可以确认以下 rsyslog 和语法的组合确实有效(我现在正在生产中)。由于某些奇怪的原因(它真的很旧),我有 rsyslog 4.2 附带的 Ubuntu 10.4.1。所以在删除它并安装 4.6.4.1 之后,我就可以运行了。
从此处的 Debian Squeeze 存储库获取 rsyslog 4.6.4.1 。版本 4.6.4(或一两个早期版本;现在不记得了)修复了 ActionExecOnlyOnceEveryInterval 被忽略的错误。
我对 Snort 使用以下语法,并且可以确认它确实有效:
我将各种日志记录设备拆分为带有相应 .conf 文件的单独日志文件。我还在一个名为的文件中设置了邮件服务器指令,该文件
mail-settings.conf
包含在每个 conf 的顶部。我还在每个 conf 中为每个模板变量( , 等)使用一个唯一的名称,
mailBodySnort
因为mailBodySquid
它似乎是一个常量,因为另一个 .conf 文件的每个后续包含都不会覆盖之前分配的值。 conf。揭穿一个旧的,但由于问题仍然会困扰那些运行 Debian Squeeze 的人,即使使用来自 backports 的 rsyslog(目前为 5.8.11-1~bpo60+2),感谢@abeverley here可能值得分享,我可以通过“
$ActionExecOnlyOnceEveryInterval 0
在电子邮件通知规则的末尾添加”来解决重置值的问题。例如,现在是我的
/etc/rsyslog.d/bonding.conf
: