Snort规则选项详解 Snort规则被分成两个逻辑部分:规则头和规则选项。规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源和目标端口信息;规则选项部分包含报警消息内容和要检查的包的具体部分。 1. 规则头: 规则动作: 在snort中有五种动作:alert、log、pass、activate和dynamic. 1、Alert-使用选择的报警方法生成一个警报,然后记录(log)这个包。 2、Log-记录这个包。 3、Pass-丢弃(忽略)这个包。 4、activate-报警并且激活另一条dynamic规则。 5、dynamic-保持空闲直到被一条activate规则激活,被激活后就作为一条log规则执行。 协议类型: Snort当前分析可疑包的ip协议有四种:tcp 、udp、icmp和ip。将来可能会更多,例如ARP、IGRP、GRE、OSPF、RIP、IPX等。 地址: 关键字"any "可以被用来定义任何地址。 地址就是由直接的数字型ip地址和一个cidr块组成的。Cidr块指示作用在规则地址和需要检查的进入的任何包的网络掩码。/24表示c类网络, /16表示b类网络,/32表示一个特定的机器的地址。 否定操作符用"!"表示。 你也可以指定ip地址列表,一个ip地址列表由逗号分割的ip地址和CIDR块组成,并且要放在方括号内“[”,“]”。此时,ip列表可以不包含空格在ip地址之间。 例如: alert tcp ![192.168.1.0/24,10.1.1.0/24] any -> [192.168.1.0/24,10.1.1.0/24] 111 (content: "|00 01 86 a5|"; msg: "external mountd access";) 变量定义: var MY_NET 192.168.1.0/24 alert tcp any any -> $MY_NET any (flags: S; msg: "SYN packet";) 注:"$" 操作符之后定义变量; "?" 和 "-"可用于变量修改操作符; $var - 定义变量。 $(var) - 用变量"var"的值替换。 $(var:-default) - 用变量"var"的值替换,如果"var"没有定义用"default"替换。 $(var:?message) - 用变量"var"的值替换或打印出错误消息"message"然后退出。 例如: var MY_NET $(MY_NET:-192.168.1.0/24) log tcp any any -> $(MY_NET:?MY_NET is undefined!) 23 端口号: 端口号可以用几种方法表示,包括"any"端口、静态端口定义、范围、以及通过否定操作符。 静态端口定义表示一个单个端口号,例如111表示portmapper,23表示telnet,80表示http等等。端口范围用范围操作符":"表示。范围操作符可以有数种使用方法,如下所示: log udp any any -> 192.168.1.0/24 1:102...