这是 Snort 中的一个常见问题,但我不确定为什么会触发该规则。
下面的规则来自 Debian 存储库。显然,该规则设计为在端口 5060 上有超过 300 次点击时触发,并且如果这种情况持续发生,则每 60 秒仅发出一次警报。
/etc/snort/rules/community-sip.rules(添加了空格,删除了其他规则):
...
alert ip any any -> any 5060 (
msg:"COMMUNITY SIP TCP/IP message flooding directed to SIP proxy";
threshold: type both, track by_src, count 300, seconds 60;
classtype:attempted-dos;
sid:100000160;
rev:2;
)
...
http://manual.snort.org/node35.html
但该规则似乎触发了与端口 5060 完全无关的内容。例如,这是一个警报:
例如,
[**] [1:100000160:2] COMMUNITY SIP TCP/IP message flooding directed to SIP proxy [**]
[Classification: Attempted Denial of Service] [Priority: 2]
08/06-12:19:07.399163 1.2.3.4:61253 -> 5.6.7.8:22
TCP TTL:55 TOS:0x10 ID:59727 IpLen:20 DgmLen:52 DF
***A**** Seq: 0xE2B759E9 Ack: 0xB01D0B90 Win: 0xFFFF TcpLen: 32
TCP Options (3) => NOP NOP TS: 129954676 287277196
一些谷歌搜索显示人们说“这是一个糟糕的规则”,但我不明白为什么。
答案1
我想我明白了。在 snort.org 的文档中,我找不到有关“警报 IP”和端口号的信息。
下面说明这是编写 Snort 规则时常见的错误:
http://leonward.wordpress.com/2009/06/07/dumbpig-automated-checking-for-snort-rulesets/
我通过复制规则、指定 TCP 和 UDP 并更改规则 SID 来修复此问题。我对 community-sip.rules 文件中的多个规则重复了此操作。
例如,
alert tcp any any -> any 5060 (msg:"COMMUNITY SIP TCP/IP message flooding directed to SIP proxy"; threshold: type both, track by_src, count 300, seconds 60; classtype:attempted-dos; sid:900000160; rev:2;)
alert udp any any -> any 5060 (msg:"COMMUNITY SIP TCP/IP message flooding directed to SIP proxy"; threshold: type both, track by_src, count 300, seconds 60; classtype:attempted-dos; sid:910000160; rev:2;)
现在警报很安静。当我测试某些测试规则(计数较低)时,它们会正确触发。