我设置了三台运行 Ubuntu 的虚拟机 - 服务器、客户端和网关。我的任务是在网关上设置 Snort,以监控从客户端到服务器的“攻击”。Snort 应该将日志文件发送到我在服务器上设置的 rsyslog 服务器。我在发送这些日志时遇到了麻烦。
在 snort.conf 文件中,我设置了:
output alert_syslog: LOG_AUTH LOG_ALERT
我刷新了 iptables 并打开了所有内容以进行测试(nmap 显示 514 确实已打开)。我编辑了网关上的 rsyslog.conf 文件并添加了:
*.* @192.168.50.5
在服务器上的 rsyslog.conf 文件中,我添加了:
*.* /var/log/snort.log
并取消注释以下两项:
$ModLoad imudp.so
$UDPServerRun 514
当我运行(eth2 = Client)时:
snort -A console -i eth2 -c /etc/snort/snort.conf
并从客户端 ping 服务器(我有一个 Snort 规则来捕获 ICMP),网关上的 /var/log/snort/snort.log.xxxxxxxxxx 中会创建一个日志文件。但是服务器上什么也没有显示。在 Wireshark 上查看数据包,启动 Snort 时我收到两条 Syslog 消息,退出时又收到两条消息(^C)。AUTHPRIV.INFO 只显示“为用户 root 打开会话”和“为用户 root 关闭会话”:
为了记录在案,我试图按照此处的教程进行操作:
有人知道发生了什么事吗?
谢谢您的任何建议。
答案1
我想说的是,如果有关会话打开和关闭的 syslog 消息能够通过,那么 rsyslog 可能正在两端执行其工作(但通过使用 发送到网关上的 syslog 来确认这一点logger
)。此外,在网关上创建日志文件这一事实表明,日志消息在网关上被错误处理,而不是在链式处理过程中的后期。
我想确认 snort 确实将 UDP 发送到 syslog。端口 514 上是否有预期的数据包(大概是在网关的环回接口上)?
看起来您可以绕过本地系统日志,直接转到服务器主机:
输出警报系统日志:主机=192.168.50.5:514,LOG_AUTH LOG_ALERT
如果这不吸引人,那么如果您明确将 snort 输出发送到 localhost:514 会发生什么情况?或者发送到该主机上的其他 IP。
是否存在防火墙问题,可能会阻止发往网关端口 514 的数据包?
您重启了 snort 来获取新配置了吗?您认为它正在读取配置文件吗?(尝试使用 明确指定它-c
,和/或使用 确认它是您看到的命令行的一部分ps
)。
(在某些时候,您会想要限制被归档为 snort 消息的内容,但这不是您当前所陷入的)。
答案2
请注意,Ubuntu Snort 默认使用 LOG_AUTH 功能进行日志记录,因此您需要tail -f /var/log/auth.log
而不是/var/log/syslog
。这只是一个被这个问题困扰了一段时间的人的留言 :)