6.34. 阈值关键字

阈值可以按规则配置,也可以全局配置,请参见 全局阈值 .

Note: mixing rule and global thresholds is not supported in 1.3 and before. See bug #425. 有关1.4中的支持状态,请参见 全局阈值与规则阈值

6.34.1. 门槛

阈值关键字可用于控制规则的警报频率。它有三种模式:阈值、极限和两者。

语法::

threshold: type <threshold|limit|both>, track <by_src|by_dst|by_rule|by_both>, count <N>, seconds <T>

6.34.1.1. “阈值”类型

此类型可用于设置规则生成警报之前的最小阈值。n的阈值设置意味着在第n次规则匹配警报时生成。

例子::

alert tcp !$HOME_NET any -> $HOME_NET 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;)

仅当我们在一分钟内从同一服务器收到10封或更多的入站电子邮件时,此签名才会生成警报。

如果签名设置了一个flowbit、flowint等,那么这些操作仍然针对每个匹配项执行。

规则操作丢弃(IPS模式)和拒绝应用于每个数据包(不仅是满足阈值条件的数据包)。

6.34.1.2. “限制”类型

此类型可用于确保不会被警报淹没。如果设置为限制n,则最多警告n次。

例子::

alert http $HOME_NET any -> any $HTTP_PORTS (msg:"ET USER_AGENTS Internet Explorer 6 in use - Significant Security Risk"; \
flow:to_server,established; content:"|0d 0a|User-Agent|3a| Mozilla/4.0 (compatible|3b| MSIE 6.0|3b|";                \
threshold: type limit, track by_src, seconds 180, count 1;                                                           \
reference:url,doc.emergingthreats.net/2010706; classtype:policy-violation; sid:2010706; rev:7;)

在此示例中,如果检测到msie 6.0,则每个主机最多在3分钟内生成1个警报。

如果签名设置了一个flowbit、flowint等,那么这些操作仍然针对每个匹配项执行。

规则操作丢弃(IPS模式)和拒绝应用于每个数据包(不仅是满足限制条件的数据包)。

6.34.1.3. “两种”类型

此类型是“阈值”和“限制”类型的组合。它同时适用于阈值和限制。

例子::

alert tcp $HOME_NET 5060 -> $EXTERNAL_NET any (msg:"ET VOIP Multiple Unauthorized SIP Responses TCP"; \
flow:established,from_server; content:"SIP/2.0 401 Unauthorized"; depth:24;                      \
threshold: type both, track by_src, count 5, seconds 360;                                        \
reference:url,doc.emergingthreats.net/2003194; classtype:attempted-dos; sid:2003194; rev:6;)

只有在6分钟内有5个或更多的“SIP/2.0 401未授权”响应时,此警报才会生成警报,并且在6分钟内只会发出一次警报。

如果签名设置了一个flowbit、flowint等,那么这些操作仍然针对每个匹配项执行。

规则操作丢弃(IPS模式)和拒绝将应用于每个数据包。

6.34.2. detection_filter

检测过滤器关键字可用于在达到阈值后对每个匹配进行警报。它不同于具有类型阈值的阈值,因为它在达到初始阈值后为每个规则匹配生成一个警报,后者将重置其内部计数器,并在再次达到阈值时再次发出警报。

语法::

detection_filter: track <by_src|by_dst|by_rule|by_both>, count <N>, seconds <T>

例子::

alert http $EXTERNAL_NET any -> $HOME_NET any \
     (msg:"ET WEB_SERVER WebResource.axd access without t (time) parameter - possible ASP padding-oracle exploit"; \
     flow:established,to_server; content:"GET"; http_method; content:"WebResource.axd"; http_uri; nocase;          \
     content:!"&t="; http_uri; nocase; content:!"&amp|3b|t="; http_uri; nocase;                                    \
     detection_filter:track by_src,count 15,seconds 2;                                                             \
     reference:url,netifera.com/research/; reference:url,www.microsoft.com/technet/security/advisory/2416728.mspx; \
     classtype:web-application-attack; sid:2011807; rev:5;)

每次在2秒内发生15个或更多匹配后发出警报。

如果签名设置了一个flowbit、flowint等,那么这些操作仍然针对每个匹配项执行。

规则操作丢弃(IPS模式)和拒绝将应用于生成警报的每个数据包。