Snort每一项的具体含义.doc
文本预览下载声明
Snort规则选项详解
Snort规则被分成两个逻辑部分:规则头和规则选项。规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源和目标端口信息;规则选项部分包含报警消息内容和要检查的包的具体部分。
在snort中有五种动作:alert、log、pass、activate和dynamic.
Alert-使用选择的报警方法生成一个警报,然后记录(log)这个包。
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 ![/24,/24] any - [/24,/24] 111 (content: |00 01 86 a5|; msg: external mountd access;)
变量定义:
var MY_NET /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:-/24)
log tcp any any - $(MY_NET:?MY_NET is undefined!) 23
端口号:
端口号可以用几种方法表示,包括any端口、静态端口定义、范围、以及通过否定操作符
静态端口定义表示一个单个端口号,例如111表示portmapper,23表示telnet,80表示http等等。端口范围用范围操作符:表示。范围操作符可以有数种使用方法,如下所示:
log udp any any - /24 1:1024
记录来自任何端口的,目标端口范围在1到1024的udp流
log tcp any any - /24 :6000
记录来自任何端口,目标端口小于等于6000的tcp流
log tcp any :1024 - /24 500:
记录来自任何小于等于1024的特权端口,目标端口大于等于500的tcp流
方向操作符-表示规则所施加的流的方向。方向操作符左边的ip地址和端口号被认为是流来自的源主机,方向操作符右边的ip地址和端口信息是目标主机,还有一个双向操作符。
规则选项组成了snort入侵检测引擎的核心,既易用又强大还灵活。所有的snort规则选项用分号;隔开。规则选项关键字和它们的参数用冒号:分开。msg - 在报警和包日志中打印一个消息。
flags -检查tcp flags的值。
content - 在包的净荷中搜索指定的样式。
Content关键字的选项数据比较复杂;它可以包含混合的文本和二进制数据。二进制数据一般包含在管道符号中(|),表示为字节码(bytecode)。字节码把二进制数据表示为16进制数字,是描述复杂二进制数据的好方法。content: |90C8 C0FF FFFF|/bin/sh;
字符 : ; \ 在content选项内容中出现时必须被转义(有两个方法:1. 使用前导“\”字符 2. 使用字节的二进制表示方式,比如用“|3A|”表示“:”):
offset - content选项的修饰符,设定开始搜索的位置 。
depth - content选项的修饰符,设定搜索的最大深度。
nocase - 指定对content字符串大小写不敏感istance - content选项的修饰符distance关键字是content关键字的一个修饰词,确信在使用content时模式匹配间至少有N个字节存在。它被设计成在规则选项中和其他选项联合使用。
格式:distance: ;
例子:
alert tcp any any - any a
显示全部