Snort没有检测到传出stream量

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

# 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中的string“_secret_”发送到我的服务器(Snort所在的位置)。 例如: http://myserver.com/index.php?_secret_ : http://myserver.com/index.php?_secret_

Snort收到它并抛出警报,它工作,没问题! 但是当我尝试这样的事情:

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

如果我只是请求http://myserver.com/index.php ,即使php文件在头文件和数据中都发送相同的string,但没有压缩/编码,任何。 (我使用Wireshark进行检查)

这在我看来像一个Snort问题。 不pipe我做什么,它只检测接收数据包。 Snort有没有人遇到过这种问题? 任何想法如何解决它?

经过6个小时的努力,我终于修好了!

只需要在命令行中添加-k none即可。

出于某种原因,在我的台式电脑,它没有-k none参数工作。 如果有人在意解释发生了什么,那将会非常有帮助。 谢谢。

有时候snaplen( -P )也可能是一个问题。 增加值(默认是MTU的大小),你会得到更多的数据。

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

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

这就是为什么将-k none选项添加到snort.exe修复它; 它会禁用Snort的内部校验和validation,从而让数据包得到分析。

只是所以你知道,可以检查和禁用校验和卸载 ,但是由于存在一些性能风险,我认为-k解决scheme更好。