0x01 前言
今天看到小伙伴说面试过程中碰到面试官问Snort的规则问题,然后找了下资料,整理了一下,来做一下分享,如果涉及侵权,请联系我删除,这边只做公益分享。
0x02 Snort rules 知识总结
Snort规则被分成两个逻辑部分:规则头和规则选项。规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源和目标端口信息;规则选项部分包含报警消息内容和要检查的包的具体部分。
- 规则头:
规则动作:
在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 -> M Y N E T a n y ( f l a g s : S ; m s g : “ S Y N p a c k e t ” ; ) 注 : ” MY_NET any (flags: S; msg: “SYN packet”;) 注:” MYNETany(flags:S;