6.33. Xbits关键字¶
设置、取消设置、切换和检查每个主机或IP对存储的位。
语法::
xbits:<set|unset|isset|isnotset|toggle>,<name>,track <ip_src|ip_dst|ip_pair>;
xbits:<set|unset|isset|toggle>,<name>,track <ip_src|ip_dst|ip_pair> \
[,expire <seconds>];
xbits:<set|unset|isset|toggle>,<name>,track <ip_src|ip_dst|ip_pair> \
[,expire <seconds>];
6.33.1. 笔记¶
使用之间没有区别
hostbits
和xbits
具有track ip_<src|dst>
如果你
set
在客户请求和使用时track ip_dst
,如果要在服务器响应上匹配,请检查它。 (isset
)与track ip_src
.要不发出警报,请使用
noalert;
这个
toggle
选项将翻转Xbits的值。参见:
6.33.1.1. Yaml设置¶
每个主机存储的位存储在主机表中。这意味着主机表设置会影响每个主机的主机位和Xbits。
每个IP对存储的位存储在IPPAir表中。这意味着ip pair表设置,尤其是memcap,会影响每个IP对的xbits。
6.33.1.2. 穿线¶
由于线程之间存在细微的时间问题,因此集合和检查的顺序可能有些不可预测。
6.33.1.3. Unix套接字¶
主机位可以通过Unix套接字添加、删除和列出。
添加::
suricatasc -c "add-hostbit <ip> <bit name> <expire in seconds>"
suricatasc -c "add-hostbit 1.2.3.4 blacklist 3600"
如果为现有主机位添加了主机位,则会更新其到期计时器。
删除::
suricatasc -c "remove-hostbit <ip> <bit name>"
suricatasc -c "remove-hostbit 1.2.3.4 blacklist"
列表::
suricatasc -c "list-hostbit <ip>"
suricatasc -c "list-hostbit 1.2.3.4"
结果是:
{
"message":
{
"count": 1,
"hostbits":
[{
"expire": 89,
"name": "blacklist"
}]
},
"return": "OK"
}
6.33.1.4. 实例¶
6.33.1.4.1. 创建ssh黑名单¶
下面是传入ssh服务器的规则示例。
前两个规则与机器人程序中常用的ssh软件版本相匹配。它们会中断通信,并为源IP创建一个“xbit”“badssh”。一小时后到期:
drop ssh any any -> $MYSERVER 22 (msg:"DROP libssh incoming"; \
flow:to_server,established; ssh.softwareversion:"libssh"; \
xbits:set, badssh, track ip_src, expire 3600; sid:4000000005;)
drop ssh any any -> $MYSERVER 22 (msg:"DROP PUTTY incoming"; \
flow:to_server,established; ssh.softwareversion:"PUTTY"; \
xbits:set, badssh, track ip_src, expire 3600; sid:4000000007;)
然后,下面的规则只会将任何传入的流量丢弃到该“badssh”列表中的服务器:
drop ssh any any -> $MYSERVER 22 (msg:"DROP BLACKLISTED"; \
xbits:isset, badssh, track ip_src; sid:4000000006;)