深入解析Snort规则转换为iptables规则及fwsnort部署
1. 不支持的Snort规则选项
虽然iptables能在很大程度上模拟Snort规则语言,但仍有许多Snort选项在iptables中没有很好的等效项。部分选项可通过iptables的u32扩展模拟,待u32扩展移植到2.6内核后,fwsnort的后续版本将支持。以下是一些不支持的选项:
| 选项 | 说明 | 模拟情况 |
| — | — | — |
| asn1 | 允许Snort将签名与解码后的抽象语法表示法一(ASN.1)数据关联,常用于SMB协议 | 难以在iptables中模拟其复杂处理 |
| byte_jump | 数据包数据可决定Snort在进行下一次模式匹配或字节测试前跳过的字节数 | 可用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实现强大;开启连接跟踪时,数据包会自动重组 |
| isdataat | 指示Snort测试特定偏移量处是否存在数据 | 无等效iptables选项 |
| pcre | 即Perl兼容正则表达式,允许Sn