Snort 未检测到传出流量

Snort 未检测到传出流量

我在 Windows Server 2008 R2 x64 上使用 Snort 2.9,其配置非常简单,如下所示:

# Entire content of Snort.conf:
alert tcp any any -> any any (sid:5000000; content:"_secret_"; msg:"TRIGGERED";)

# command line:
snort.exe -c etc/Snort.conf -l etc/log -A console

使用我的浏览器,我将 URL 中的字符串“_secret_”发送到我的服务器(Snort 所在的位置)。示例:http://myserver.com/index.php?_secret_

Snort 收到该消息并发出警报,一切正常!但是当我尝试以下操作时:

<?php // (index.php)
header('XTest: _secret_'); // header
echo '_secret_'; // data
?>

如果我只是请求http://myserver.com/index.php,它不起作用或检测不到任何来自传出流量的内容,即使 php 文件在标头和数据中发送相同的字符串,且没有压缩/编码或任何其他内容。 (我使用 Wireshark 检查过)

在我看来,这似乎是 Snort 的问题。无论我做什么,它都只能检测到接收数据包。有人在使用 Snort 时遇到过这种问题吗?有办法解决吗?

答案1

经过 6 个小时痛苦的尝试,我终于解决了它!

只需添加-k none到命令行。

由于某种原因,在我的台式电脑上,它无需参数即可工作-k none。如果有人愿意解释一下发生了什么,那将非常有帮助。谢谢。

答案2

听起来就像是校验和卸载导致了你的问题。

校验和卸载允许 NIC 计算 TCP 校验和,从而节省了 CPU 执行计算的时间。NIC 在发送数据包之前执行每个计算,不幸的是,Snort 可以在计算之前捕获本地数据包。因此,Snort 的内部校验和验证看到校验和为 0(因为尚未完成),将其解释为错误校验和,并且不会进一步分析数据包。

这就是为什么-k none向 snort.exe 添加选项可以修复此问题的原因;它禁用 Snort 的内部校验和验证,从而可以分析数据包。

请注意,可以检查并禁用校验和卸载,但由于这样做存在一些性能风险,我认为该-k解决方案更好。

答案3

有时 snaplen (-P) 也可能是一个问题。增加该值(默认为 MTU 的大小),您将获得更多数据。

相关内容