Snort规则速成和举例

Orther 144℃

Snort规则是一种用特征信息构建的规则,用于检测网络中的入侵行为。它可以检测数据包的不同部分,包括头部和载荷。Snort规则分成两部分:规则头、规则选项。

一、规则头

规则头包含:动作、协议、源和目标IP地址与网络掩码,以及源和目标端口信息:

1.动作(规则被激发后做什么)

alert:使用选定的告警方法产生告警信息,并且记录数据包
log:记录数据包
pass:忽略数据包
activate:告警,接着打开其它的dynamic规则
dynamic:保持空闲状态,直到被activete规则激活,作为一条log规则

2.协议(指定要检查的协议)

TCP、UDP、ICMP

3.源/目的IP

any 为任意IP地址
![192.168.1.0/24,10.1.1.1.0/24]表示非这两个网段的IP

4.端口号

any为任意端口号
1:1024表示1到1024
500:表示大于等于500
!1:500表示除了端口号1到500

5.方向操作符号(数据包的流向)

->单向操作符外
<>双向操作符

二、规则选项

写在()中,有如下内容:

msg:在报警和包日志中打印一个消息。
logto:把包记录到用户指定的文件中而不是记录到标准输出。
ttl:检查ip头的ttl的值。
tos:检查IP头中TOS字段的值。
id:检查ip头的分片id值。
ipoption:查看IP选项字段的特定编码。
fragbits: 检查IP头的分段位。
dsize:检查包的净荷尺寸的值 。
flags:检查tcp flags的值。
seq:检查tcp顺序号的值。
ack:检查tcp应答(acknowledgement)的值。
window:测试TCP窗口域的特殊值。
itype:检查icmp type的值。
icode:检查icmp code的值。
icmp_id:  检查ICMP ECHO ID的值。
icmp_seq: 检查ICMP ECHO 顺序号的值。
content:在包的净荷中搜索指定的样式。
content-list  在数据包载荷中搜索一个模式集合。
offset:content选项的修饰符,设定开始搜索的位置 。
depth:content选项的修饰符,设定搜索的最大深度。
nocase:指定对content字符串大小写不敏感。
session:记录指定会话的应用层信息的内容。
rpc:监视特定应用/进程调用的RPC服务。
resp:主动反应(切断连接等)。
react:响应动作(阻塞web站点)。
reference:外部攻击参考ids。
sid:snort规则id。
rev:规则版本号。
classtype:规则类别标识。
priority:规则优先级标识号。
uricontent:在数据包的URI部分搜索一个内容。
tag: 规则的高级记录行为。
ip_proto:IP头的协议字段值。
sameip:判定源IP和目的IP是否相等。
stateless:忽略刘状态的有效性。
regex:通配符模式匹配。
distance:强迫关系模式匹配所跳过的距离。
within:强迫关系模式匹配所在的范围。
byte_test:数字模式匹配。
byte_jump:数字模式测试和偏移量调整。
flow:这个选项要和TCP流重建联合使用。它允许规则只应用到流量流的某个方向上。这将允许规则只应用到客户端或者服务器端

例子

#记录所有telnet登陆到一个特定主机的数据包
log tcp any any -> 192.168.1.1/32 23
#在第一条规则基础上记录双向流量
log tcp any any <> 192.168.1.1/32 23
#记录了所有到达本地主机的icmp数据包
log icmp any any -> 192.168.1.0/24 any
#允许双向的从你的机子到其他站点的http包
pass tcp any 80 <> 192.168.1.0/24 any
#这条告警规则显示了本地主机对其他主机的111端口的访问,并在log中显示端口影射调用(‘portmapper call’)信息
alert tcp 192.168.1.0/24 any -> any 111 (msg:"Portmapper call";)
#记录其他任意地址的小于1024端口访问本地小于1024端口的流量
log tcp any :1024 -> 192.168.1.0/24 :1024
#规则将会发现SYN FIN扫描
alert tcp any any -> 192.168.1.0/24 any (msg:"SYN-FIN scan!"; flags: SF;)
#规则将会发现空tcp扫描
alert tcp any any -> 192.168.1.0/24 any (msg:"Null scan!"; flags: 0;)
#规则将会发现Queso fingerprint扫描
alert tcp any any -> 192.168.1.0/24 any (msg:"Queso fingerprint";flags: S12;)
#这条规则将进行基于内容的查找以发现溢出攻击
alert tcp any any -> 192.168.1.0/24 143 (msg:"IMAP Buffer overflow!"; content:"|90E8 C0FF FFFF|/bin/sh";)
#这条规则将会发现PHF攻击
alert tcp any any -> 192.168.1.0/24 80 (msg:"PHF attempt"; content:"/cgi-bin/phf";)
#规则将会发现traceroute包
alert udp any any -> 192.168.1.0/24 any (msg:"Traceroute"; ttl:1;)
#规则将会发现其他主机对本地发出的icmp包
alert udp any any -> 192.168.1.0/24 any (msg:"Traceroute"; ttl:1;)
#这条规则发现nmap的tcp 的ping扫描
alert tcp any any -> 192.168.1.0/24 any (flags: A; ack: 0; msg:"NMAP TCP ping!";)
#这条规则将会发现源路由的数据包(源路由攻击)
alert tcp any any -> any any (ipopts: lsrr; msg: "Source Routed packet!";)

转载请注明:零五宝典 » Snort规则速成和举例