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规则速成和举例