suricata规则阈值设置
suricata对规则的阈值分为规则上的阈值和全局阈值,全局阈值覆盖规则上的阈值
但是按照使用的情况来说比较坑
1.规则上的阈值
格式:
threshold: type <threshold|limit|both>, track <by_src|by_dst>, count , seconds
type <threshold|limit|both>
threshold:在seconds秒内,达到count,就产生告警
limit:在seconds秒内最多只能报count次
both:在seconds秒内达到count次后产生一次告警,并且在seconds秒只会产生一次告警
track <by_src|by_dst>
坑的地方,下面讲
by_src:表示同一源
by_dst:表示同一目的
例如有规则:
alert tcp any any -> $MY_SSH_SERVER 22 (msg:"Connection to SSH server"; \
threshold: type threshold, track by_src, count 10, seconds 60,flow:to_server; flags:S,12; sid:888;)
这条规则的意思是说当同一源在1分钟内有5次ssh,就会产生告警
但是当例如有:
192.168.1.12 ->192.168.1.5 ssh链接3次然后紧跟
192.168.1.12 ->192.168.1.6 ssh 链接2次
这会触发上述规则,但是在告警中的目的主机只有192.168.1.6,而没有192.168.1.5
2.全局阈值告警
有3种,可以写在threshold.conf文件中,然后在suricata.yaml文件中开启,全局阈值会覆盖规则阈值
(1)threshold/event_filter,这两个相同,和规则阈值一样
threshold gen_id <gid>, sig_id <sid>, type <threshold|limit|both>, \
track <by_src|by_dst>, count <N>, seconds <T>
表示给sid:2002087这条规则填上(或者是覆盖)上阈值,如果sig_id 0,则表示对所有规则有效
threshold gen_id 1, sig_id 2002087, type both, track by_src, count 3, seconds 5
(2)rate_filter,改变规则中的action动作
规则中的动作有pass,drop,pass,reject,
rate_filter: rate_filter gen_id <gid>, sig_id <sid>, track <by_src|by_dst|by_rule|by_both>, \
count <c>, seconds <s>, new_action <alert|drop|pass|reject>, timeout <timeout>
(3)suppress,过滤到匹配上的IP白名单
suppress gen_id <gid>, sig_id <sid>, track <by_src|by_dst|by_either>, ip <ip|subnet|addressvar>
例如
suppress gen_id 1, sig_id 2002087, track by_src, ip 209.132.180.67
上一篇: python模块-csv模块