我尝试将snort作为IPS运行。所以我在ubuntu服务器上通过apt-get和config daq_type 将snort安装为 afpacket ,将 daq_mode 安装为 inline 。和 2接口,如 eth1:eth2 然后我写了一个测试规则
reject tcp any any -> any any (sid: 1000005;)
它可以正常工作,但当我将其更改为
时drop tcp any any -> any any (sid: 1000005;)
它不起作用。当我将动作改为sdrop时,结果是一样的。 我从源代码安装snort但结果是一样的。 你能帮忙写出真正的规则吗?
答案 0 :(得分:7)
Snort可以在三种不同模式下运行,即分接(被动),内联和内联测试。 如果要使用丢弃规则丢弃数据包,则需要确保以串联模式运行。从它的外观来看,你可能不是内联模式。 “拒绝”的原因是因为它将为TCP发送重置,这将停止该流的其余部分,或者它将为UDP发送ICMP端口不可达消息。请参阅规则标题上的snort手册(http://manual.snort.org/node29.html)中的以下说明:
drop - 阻止并记录数据包
拒绝 - 阻止数据包,记录它,然后如果协议是TCP则发送TCP重置,或者如果协议是UDP,则发送ICMP端口不可达消息。
sdrop - 阻止数据包但不记录它。
如果snort没有以内联模式运行,它实际上不会丢弃数据包,它只会生成一个警报(用于丢弃)并传递数据包。
有关三种模式的snort手册,请参阅以下内容:http://manual.snort.org/node11.html#SECTION00295100000000000000 具体而言,内联模式描述如下:
当Snort处于Inline模式时,它充当IPS,允许触发删除规则。可以使用命令行参数-Q和snort config选项policy_mode将Snort配置为以内联模式运行,如下所示:
snort -Q
config policy_mode:inline
您需要确保“config policy_mode:inline”行是snort.conf并且在运行snort时传递“-Q”选项。如果两者都没有完成,它就不会掉落。希望这有帮助!