Xbits 关键字 ============= 用于设置、取消、切换及检查基于主机或IP对存储的比特位。 语法:: xbits:,<名称>,track ; xbits:,<名称>,track \ [,expire <秒数>]; xbits:,<名称>,track \ [,expire <秒数>]; 注意事项 ~~~~~ - 使用 ``hostbits`` 和 ``xbits`` 配合 ``track ip_`` 时无区别 - 若在客户端请求时执行 ``set`` 并采用 ``track ip_dst``,要在服务器响应时匹配, 需使用 ``track ip_src`` 进行检查(``isset``) - 避免告警请使用 ``noalert;`` - ``toggle`` 选项会翻转xbits的值 - 另请参阅: - `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 `_ YAML配置 ------------- 基于主机存储的比特位保存在主机表中。这意味着主机表配置会影响hostbits及基于主机的xbits。 基于IP对存储的比特位保存在IPPair表中。因此ippair表配置(特别是memcap)会影响基于ip_pair的xbits。 线程机制 --------- 由于线程间存在微妙的时间差,设置与检查的执行顺序可能略有不可预测性。 Unix套接字 ----------- 可通过unix套接字添加、删除和列出hostbits。 添加:: suricatasc -c "add-hostbit <比特名称> <过期秒数>" suricatasc -c "add-hostbit 1.2.3.4 blacklist 3600" 若为已存在的hostbit添加,其过期计时器会被更新。 删除:: suricatasc -c "remove-hostbit <比特名称>" suricatasc -c "remove-hostbit 1.2.3.4 blacklist" 列出:: suricatasc -c "list-hostbit " suricatasc -c "list-hostbit 1.2.3.4" 返回结果示例:: { "message": { "count": 1, "hostbits": [{ "expire": 89, "name": "blacklist" }] }, "return": "OK" } 示例 -------- 创建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;)