
一条 Snort 规则长这样:
plaintext
alert tcp 192.168.1.0/24 any -> 10.0.0.0/8 80 (msg:"xxx"; content:"yyy"; sid:1001;)规则头就是前面这一段:
plaintext
tcp 192.168.1.0/24 any -> 10.0.0.0/8 80包含:
一条 Snort 规则分两部分:
plaintext
alert tcp 源IP 源端口 -> 目的IP 目的端口 ( msg:"xxx"; content:"yyy"; sid:1001; )
└────────────── 规则头 ──────────────┘ └────────── 规则选项 ──────────┘
RTN OTNOTN 里存的就是括号里的内容:
msg 规则描述content 包内容关键字sid 规则 IDflags TCP 标志位ttl 生存时间dsize 包大小这些每条规则都可能不一样的部分,就放在 OTN。
两条规则头部一样(共享同一个 RTN),但选项不同(各自 OTN):
规则 1:
plaintext
alert tcp 192.168.1.0/24 any -> 10.0.0.0/8 80 (msg:"A"; content:"aaa"; sid:1001;)规则 2:
plaintext
alert tcp 192.168.1.0/24 any -> 10.0.0.0/8 80 (msg:"B"; content:"bbb"; sid:1002;)结构就是:
plaintext
RTN(头部相同)
├─ OTN1 → 规则1的选项
└─ OTN2 → 规则2的选项三者共同组成 Snort 三维规则链表 核心结构,是 Snort 入侵检测引擎实现高速、高效规则匹配的关键。整体遵循 **「顶层粗筛 → 中层共享匹配 → 底层精查」** 的分层工作逻辑,逐层缩小匹配范围,避免遍历全部规则。
三维规则链表的最顶层入口节点,按规则动作(Action)对所有规则做一级分类,是规则匹配的第一道筛选关卡。
仅存储规则动作类型,Snort 核心动作分为:
alert(告警)、log(日志记录)、pass(放行)、activate、dynamic
每一种动作对应独立的一个 RLH 节点,不同动作的规则完全隔离。
alert 告警规则);三维规则链表的中层节点,存储规则头(Rule Header)信息,实现相同头部规则的共享匹配,是规则匹配的第二道筛选关卡。
规则头的核心五元组 / 四元组特征:
网络协议(TCP/UDP/ICMP/IP)、源 IP、源端口、目的 IP、目的端口、数据流向(->、<>)。
三维规则链表的最底层节点,存储规则选项(Rule Options),负责最终的精准特征匹配,是规则触发的最终判定节点。
规则括号内的所有检测特征与配置:
content(报文特征串)、msg(告警信息)、sid(规则 ID)、flags(TCP 标志位)、ttl、dsize(包大小)、pcre(正则)等入侵检测特征。
每条独立规则对应唯一的 OTN 节点。
content 特征、TCP 标志位是否匹配);原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。