1. Xbits关键字
设置,取消设置,切换并检查每个主机或ip_pair存储的位数。
语法:
xbits:<set|unset|isset|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>];
备注:
(1)对于track ip_<src|dst> 使用hostbits和xbits没有区别。
(2)如果你使用track ip_dst设置一个客户端请求,如果你想匹配服务端的响应,你应该根据track ip_src检查isset。
(3)设置不要告警(alert),使用noalert;
(4)其他查看:
https://blog.inliniac.net/2014/12/21/crossing-the-streams-in-suricata/
http://www.cipherdyne.org/blog/2013/07/crossing-the-streams-in-ids-signature-languages.html
1.1 YAML设置
每个主机存储的位存储在Host表中。这意味着主机表设置会影响每个主机的hostsbits和xbits 。
每个IP对存储的位存储在IPPair 表中。这意味着ippair表设置,尤其是memcap,会影响每个ip_pair的xbits。
1.2 线程
由于线程之间的细微时序问题,集合和检查的顺序可能有些不可预测。
1.3 Unix套接字
可以通过unix套接字添加,删除和列出Hostbits 。
添加:
suricatasc -c "add-hostbit <ip> <bit name> <expire in seconds>"
suricatasc -c "add-hostbit 1.2.3.4 blacklist 3600"
如果为现有主机位添加了hostbit,则更新它的到期计时器。
删除:
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"
}
1.4 示例
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;)
网友评论