全局阈值¶
阈值可以在规则本身中配置,参见 阈值设置关键词。规则编写者通常会根据情报创建规则,并结合对规则警报频率的判断来设置阈值。
阈值存储在一个根据配置调整大小的哈希表中,参见: suricata-yaml-thresholds。
阈值配置¶
除了规则阈值外,还可以使用 threshold.config 在传感器上配置更多阈值。
threshold/event_filter¶
语法:
threshold gen_id <gid>, sig_id <sid>, type <threshold|limit|both>, \
track <by_src|by_dst|by_rule|by_both|by_flow>, count <N>, seconds <T>
rate_filter¶
速率过滤器允许在规则匹配时更改规则动作。
语法::
- rate_filter: rate_filter gen_id <gid>, sig_id <sid>, track <tracker>,
count <c>, seconds <s>, new_action <action>, timeout <timeout>
示例::
- rate_filter gen_id 1, sig_id 1000, track by_rule, count 100, seconds 60,
new_action alert, timeout 30
gen_id¶
生成器 ID。通常为 1,但如果规则使用 gid
关键字设置其他值,则必须在 gen_id
中匹配。
sig_id¶
规则/签名 ID,由规则的 sid
关键字设置。
track¶
跟踪规则匹配的位置。使用 by_src/by_dst 时,跟踪是按 IP 地址进行的。主机表用于存储。使用 by_rule 时,跟踪是针对规则全局进行的。 选项 by_both 用于跟踪源和目的地的 IP 对。相同地址之间方向相反的包被视为同一对进行跟踪。by_flow 选项在流中跟踪规则匹配。
count¶
激活 rate_filter
所需的规则命中次数。
seconds¶
在达到 count
以激活 rate_filter
的时间段。
new_action¶
当 rate_filter
生效时应用于匹配流量的新动作。
值::
<alert|drop|pass|reject>
注意:解析器支持 'sdrop' 和 'log',但未实现其他功能。
timeout¶
rate_filter
保持激活状态的时间(秒)。
示例¶
假设我们想限制到 SSH 服务器的传入连接。下面的规则 888
简单地对到 SSH 服务器端口 22 的 SYN 包发出警报。如果一个 IP 地址在一分钟内触发此规则 10 次或更多,则设置 drop
的 rate_filter
,超时为 5 分钟。
规则::
- alert tcp any any -> $MY_SSH_SERVER 22 (msg:"Connection to SSH server";
flow:to_server; flags:S,12; sid:888;)
速率过滤器::
- rate_filter gen_id 1, sig_id 888, track by_src, count 10, seconds 60,
new_action drop, timeout 300
suppress¶
抑制可用于抑制规则或主机/网络的警报。规则匹配时执行的操作(如设置 flowbit)仍会执行。
语法:
suppress gen_id <gid>, sig_id <sid>
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
这将确保签名 2002087 永远不会对源主机 209.132.180.67 匹配。
其他可能性/示例::
suppress gen_id 1, sig_id 2003614, track by_src, ip 217.110.97.128/25 suppress gen_id 1, sig_id 2003614, track by_src, ip [192.168.0.0/16,10.0.0.0/8,172.16.0.0/12] suppress gen_id 1, sig_id 2003614, track by_src, ip $HOME_NET suppress gen_id 1, sig_id 2003614, track by_either, ip 217.110.97.128/25
在上面的最后一个示例中,by_either
跟踪意味着如果 源 IP
或 目的 IP
匹配 217.110.97.128/25
,则 sid 为 2003614 的规则将被抑制。
全局阈值与规则阈值¶
注意:本节适用于 1.4+ 版本。在 1.3 及之前版本中,不支持混合使用规则和全局阈值。
当规则设置了 threshold/detection_filter 时,规则仍可能受到全局阈值文件的影响。
下面的规则仅在 60 秒内从一个主机发送/接收 10 封或更多电子邮件时触发。
alert tcp any any -> any 25 (msg:"ET POLICY Inbound Frequent Emails - Possible Spambot Inbound"; \
flow:established; content:"mail from|3a|"; nocase; \
threshold: type threshold, track by_src, count 10, seconds 60; \
reference:url,doc.emergingthreats.net/2002087; classtype:misc-activity; sid:2002087; rev:10;)
接下来,我们将看到全局设置如何影响此规则。
Suppress¶
抑制可以与带有 thresholds/detection_filters 的规则结合使用,没有例外。
suppress gen_id 1, sig_id 2002087, track by_src, ip 209.132.180.67
suppress gen_id 0, sig_id 0, track by_src, ip 209.132.180.67
suppress gen_id 1, sig_id 0, track by_src, ip 209.132.180.67
上述每条规则都将确保 2002087 在电子邮件的来源是 209.132.180.67 时不发出警报。对于所有其他主机,它 会 发出警报。
suppress gen_id 1, sig_id 2002087
此抑制将简单地将规则转换为 "noalert",意味着它在任何情况下都不会发出警报。如果规则设置了 flowbit,那仍会发生。
Threshold/event_filter¶
当应用于特定签名时,thresholds 和 event_filters(从现在起称为 threshold)将覆盖签名设置。这在签名中的默认设置不适合您的环境时非常有用。
threshold gen_id 1, sig_id 2002087, type both, track by_src, count 3, seconds 5
threshold gen_id 1, sig_id 2002087, type threshold, track by_src, count 10, seconds 60
threshold gen_id 1, sig_id 2002087, type limit, track by_src, count 1, seconds 15
这些设置中的每一个都将用新的 threshold 设置替换 2002087 的 threshold 设置。
注意: 不支持覆盖所有 gid 或 sid(通过使用 gen_id 0 或 sig_id 0)。错误 https://redmine.openinfosecfoundation.org/issues/425。