10.43. Xbits 关键字¶
用于设置、取消、切换及检查基于主机或IP对存储的比特位。
语法:
xbits:<set|unset|isset|isnotset|toggle>,<名称>,track <ip_src|ip_dst|ip_pair>;
xbits:<set|unset|isset|toggle>,<名称>,track <ip_src|ip_dst|ip_pair> \
[,expire <秒数>];
xbits:<set|unset|isset|toggle>,<名称>,track <ip_src|ip_dst|ip_pair> \
[,expire <秒数>];
10.43.1. 注意事项¶
使用
hostbits
和xbits
配合track ip_<src|dst>
时无区别若在客户端请求时执行
set
并采用track ip_dst
,要在服务器响应时匹配, 需使用track ip_src
进行检查(isset
)避免告警请使用
noalert;
toggle
选项会翻转xbits的值另请参阅:
10.43.1.1. YAML配置¶
基于主机存储的比特位保存在主机表中。这意味着主机表配置会影响hostbits及基于主机的xbits。
基于IP对存储的比特位保存在IPPair表中。因此ippair表配置(特别是memcap)会影响基于ip_pair的xbits。
10.43.1.2. 线程机制¶
由于线程间存在微妙的时间差,设置与检查的执行顺序可能略有不可预测性。
10.43.1.3. Unix套接字¶
可通过unix套接字添加、删除和列出hostbits。
添加:
suricatasc -c "add-hostbit <IP> <比特名称> <过期秒数>"
suricatasc -c "add-hostbit 1.2.3.4 blacklist 3600"
若为已存在的hostbit添加,其过期计时器会被更新。
删除:
suricatasc -c "remove-hostbit <IP> <比特名称>"
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"
}
10.43.1.4. 示例¶
10.43.1.4.1. 创建SSH黑名单¶
以下是对SSH服务器入站流量的规则示例。
前两条规则匹配常用于僵尸程序的SSH软件版本。它们丢弃流量并为源IP设置有效期为1小时的'badssh' xbit标记:
drop ssh any any -> $MYSERVER 22 (msg:"丢弃入站libssh"; \
flow:to_server,established; ssh.software; content:"libssh"; \
xbits:set, badssh, track ip_src, expire 3600; sid:4000000005;)
drop ssh any any -> $MYSERVER 22 (msg:"丢弃入站PUTTY"; \
flow:to_server,established; ssh.software; content:"PUTTY"; \
xbits:set, badssh, track ip_src, expire 3600; sid:4000000007;)
随后这条规则直接丢弃该服务器上所有来自'badssh'列表IP的入站流量:
drop ssh any any -> $MYSERVER 22 (msg:"丢弃黑名单IP"; \
xbits:isset, badssh, track ip_src; sid:4000000006;)