Snort规则编写需求:匹配subnet_A发出TCP包特定位置的HTTP字符串
编写符合需求的Snort规则
没问题,针对你需要的场景,我来拆解并写出这条Snort规则,顺便解释每个部分的作用,方便你理解。
完整规则
log tcp 172.16.0.0/16 any -> any any (content:"HTTP"; offset:3; depth:37; msg:"Subnet_A TCP packet contains HTTP in bytes 4-40"; sid:1000001; rev:1;)
规则各部分详解
- log:指定规则的动作是记录匹配的数据包到日志,完全符合你“记录指定事件”的需求。
- tcp:明确要匹配的协议为TCP,对应题目里的TCP数据包要求。
- 172.16.0.0/16 any:源地址限定为subnet_A子网,源端口设为
any(任意端口)。 - -> any any:目标地址和目标端口都设为
any,满足“发往任意地址”的条件。 - content:"HTTP":核心匹配条件,指定要查找的字符串是"HTTP"。
- offset:3:关键参数——Snort的字节计数是0-based的,
offset:3表示跳过数据部分前3个字节,也就是从第4个字符(1-based计数)开始查找。 - depth:37:配合offset使用,限制Snort只在从offset开始的37个字节范围内查找。3+37=40,刚好覆盖到第40个字符(1-based计数),完美契合你“第4至第40个字符之间”的要求。
- msg:"...":自定义日志消息,方便你在Snort日志里快速识别这条规则触发的事件。
- sid:1000001; rev:1;:规则ID(sid)要保证在你的规则集中唯一,rev是版本号,后续修改规则时可以递增版本号。
额外小提示
如果要测试这条规则,可以用Snort的离线模式读取测试流量包验证:
snort -c /etc/snort/snort.conf -r your_test_traffic.pcap
内容的提问来源于stack exchange,提问作者Mr. J
相关产品推荐
相关产品推荐

