Snort规则分为两个部分:规则的头部和规则选项。首先,规则头部包含着规则、动作、协议、源地址和目标地址、源端口、目标端口。第二部分是规则选项,它包含着一个警告消息和某数据包有关部分的信息(如果要采取某个动作的话,就应当看一些这种信息)。

例如:alert tcp any any -> 192.168.1.0/24 111 (content:"|00 01 86 a5|"; msg: "mountd access";)

上例中,圆括号之前的部分属于规则的头部,圆括号内部的属于规则选项部分。

规则动作:

规则动作描述一个数据包的“谁,在何处,什么”的问题,并指明规则被激发后,在事件中应当做什么。在编写规则时,你可以从下面的关键字中选择:

·alert –用选择的警告方法生成一个警告,然后记录这个数据包。

·log -记录这个数据包。

·pass – 忽略此数据包。

协议:

规则的下一部分是协议。一些比较流行的协议包括TCP、UDP、ICMP等,不过Snort支持许多其它的协议,并继续增加新的协议。

源IP地址

紧跟着协议的部分是IP地址。它定义了数据包来自何处。你可以用“any”这个关键字来定义所有的IP地址。你甚至可以编写一个能够匹配除你指定的IP地址之外任何地址的规则。这是通过使用“!”这个否定操作符实现的。

源端口

它说的是数据包来自哪个端口。端口号也可以使用“any”关键字。你还可以通过使用“:”定义一个范围内的端口。例如,1:1000定义了从1到1000范围内的所有端口。

方向操作符:

方向操作符“->”用于定义规则所适用的通信方向。换句话说,即指明通信进入或出自你计算机的什么地方。

目标地址<