从Snort规则到iptables规则:fwsnort的部署与应用
1. 无法在iptables中模拟的Snort规则选项
虽然iptables能够在内核中模拟相当一部分Snort规则语言,但仍有许多Snort选项在iptables中没有很好的等效选项。以下是一些无法模拟或难以模拟的选项:
| 选项 | 说明 | 模拟情况 |
| — | — | — |
| asn1 | 该关键字允许Snort将签名与解码后的抽象语法表示法一(ASN.1)数据关联起来(常用于SMB协议)。 | 在iptables中没有好的方法来模拟与该Snort关键字相关的复杂处理。 |
| byte_jump | 此选项允许数据包数据本身决定Snort在应用下一个模式匹配或字节测试之前跳过多少字节的数据。 | 使用u32匹配是用iptables模拟byte_jump测试的最佳方法,但需等待u32匹配在2.6内核中可用。 |
| byte_test | 该选项使Snort能够对数据包数据中的特定偏移量进行数值测试。 | pcre选项可模拟部分功能,但通常应避免,因为byte_test在这类操作上通常性能更好。u32匹配也可在一定程度上模拟,但2.6内核尚不支持。 |
| flowbits | 用于Snort在规则之间传递状态信息。 | 可通过结合iptables中的CONNMARK目标和字符串匹配扩展在有限程度上模拟,但fwsnort尚不支持。L7 - filter数据包分类器项目也可在一定程度上模拟。 |
| fragbits | 允许Snort对IP报头中的分段位进行测试。 | iptables可通过 -f 参数判断数据包是否分段,但功能远不如Snort实现强大。此外,若Linux内核