Snort规则被分成两个逻辑部分:规则头和规则选项。
规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源和目标端口信息;
规则选项部分包含报警消息内容和要检查的包的具体部分。
1. 规则头
规则动作
在snort中有五种动作:alert、log、pass、activate和dynamic.
Alert:使用选择的报警方法生成一个警报,然后记录(log)这个包。 Alert动作用来在一个包符合规则条件时发送告警消息。告警的发送有多种方式,例如可以发送到文件或者控制台。
Log动作与Alert动作的不同在于:Alert动作是发送告警然后记录包,Log动作仅仅记录包。
Log:记录这个包。Log动作用来记录包,记录包有不同的方式,例如,可以记录到文件或者数据库,这将在以后讨论。根据命令行参数和配置文件,包可以被记录为不同的详细程度。你可以用“snort - ?”命令来查看你所用版本Snort的命令行可用参数。
Pass:丢弃(忽略)这个包。 这个动作告诉Snort不理会这个包,这个动作在你不想检查特定的包的时候可以加快Snort的操作速度。例如,如果你在网络中有一台包含一些弱点的主机,用来检测网络安全漏洞,可能会希望不理会对这台机器的攻击,pass规则这时就可以用到了。
activate:报警并且激活另一条dynamic规则。Activate动作用来产生告警然后激活其它规则来进行进一步的检验。如下面所说的,dynamic动态规则就是用于这个目的。当你需要对捕获的包进行进一步检验的时候,就可以用activate动作。
dynamic:保持空闲直到被一条activate规则激活,被激活后就作为一条log规则执行。Dynamic规则动作由其它用activate动作的规则调用,在正常情况下,他们不会被用来检测包。一个动态规则仅能被一个“activate”动作激活。
自定义动作
除了以上动作外,也可以定义自己的动作,以用于不同的目的,例如:
- 向Syslog发送消息。Syslog是系统日志守护进程,它在/var/log中创建日志文件,这些文件的位置可以通过修改/etc/syslog.conf来改变。你可以在UNIX系统中用命令“man syslog”或者“man syslog.conf”来获得更多信息。Syslog相当于Windows中的事件查看器。
- 向如HP OpenView或Open NMS(http://www.opennms.org)等网管系统发送SNMP