当前位置: 技术问答>linux和unix
哪位大侠给讲解一个snort规则的例子?
来源: 互联网 发布时间:2016-06-09
本文导语: alert udp $EXTERNAL_NET any -> $HOME_NET 161 (msg:"SNMP null community string at tempt"; content:"|04 01 00|"; depth:15; offset:5; metadata:service snmp; referen ce:bugtraq,2112; reference:bugtraq,8974; reference:cve,1999-0517; classtype:misc -attack; sid:1892;...
alert udp $EXTERNAL_NET any -> $HOME_NET 161 (msg:"SNMP null community string at
tempt"; content:"|04 01 00|"; depth:15; offset:5; metadata:service snmp; referen
ce:bugtraq,2112; reference:bugtraq,8974; reference:cve,1999-0517; classtype:misc
-attack; sid:1892; rev:8;)
tempt"; content:"|04 01 00|"; depth:15; offset:5; metadata:service snmp; referen
ce:bugtraq,2112; reference:bugtraq,8974; reference:cve,1999-0517; classtype:misc
-attack; sid:1892; rev:8;)
|
Snort系统根据入侵者在进行入侵时所执行程序的某些行为为特征,建立一种入侵行为模型。根据这种行为模型所代表的入侵意图的行为特征,来
判断用户执行的操作是否是属于入侵行为。
要建立一个这样的特征信息(又称攻击签名) 库的前提是必须建立一个有效、可扩展的特征描述方法,能够描述所有的入侵事件。
Snort 规则分为两部分: 规则头部和规则选项。
规则头部包含规则的操作、协议、源IP 地址和目标IP 地址及其网络掩码和端口;
规则选项包括报警信息、需要检测的模式信息、索引信息。
一条规则中不同部分必须同时满足才能执行,相当于“与”操作。
同一个规则数据库文件中的所有规则之间相当于一个“或”操作。
(i) 规则操作说明当发现适合条件的数据包时应该做些什么。有以下三种操作。
•alert :使用选定的告警方法产生警报,并记录这个数据包;
•log :记录该数据包;
•pass :忽略该数据包。
(ii) 协议项说明Snort规则定义的这种攻击应用的是何种协议。
(iii) IP地址和端口项。关键字“ANY”可以用来定义任何IP地址。网络引擎没有提供从主机名称到IP地址的转换,所以IP地址规定为点分十进
制的IP地址格式,在IP地址后指定网络掩码。如/24指定一个C类网络,/16指定一个B类网络,/32指定一个特定主机。如192.168.1.0/24指定了
从192.168.1.1到192.168.1.255的一个范围的IP地址。
IP地址有一个“非”操作。这个操作符号用来匹配所列IP地址以外的所有IP地址。“非”操作使用符号“!”表示。如,任何由外部网络发起的
连接可以表示为:
alert tcp ! 192.168.1.0/24 any -> 192.168.1.0/24 111
端口号可以用几种方法指定: 用“ANY”、数字、范围以及用“!”操作符。“ANY”指定任意端口。静态数值指定一个单一端口,如80为HTTP,
23为TELNET等。指定端口范围用“:”它可以指定一个范围内的所有端口。如:
log udp any any -> 192.168.1.0/24 1:1024
记录任何从任意主机发起的到目标网络任何主机上的1~1024端口的UDP协议数据包。
log tcp any any -> 192.168.1.0/24 :6000
记录任何从任意主机发起的到目标网络任何主机上的端口号小于等于6000的TCP协议数据。
log tcp any :1024 -> 192.168.1.0/24 500:
记录任何从任意主机上端口号小于等于1024到目标网络任何主机上的端口号大于等于500的TCP协议数据。
端口的“非”操作可以修饰ANY以外的任何端口指定方式。例如,你想记录Xwindow以外的任何端口,可以使用如下规则:
log tcp any any -> 192.168.1.0/24 !6000:6010
(iv) 方向操作符“ ->”规定了规则应用的数据流方向。其左边的IP地址为数据流的起点,右边为终点。双向操作符为“”,它告诉SNORT应
该关注任何方向的数据流,例如:
log ! 192.168.1.0/24 any 192.168.1.0/24 23
(2) 规则选项
规则选项形成了检测系统的核心,具有易用性、功能强和灵活性。一个规则的规则选项中可能有多个选项,不同选项之间使用“;”分隔开来,
它们之间为“与”的关系。选项由关键字和参数组成,每个关键字和它的参数之间使用冒号“:”分隔。现在可以解释的关键字有:
msg 在警报和记录的数据中打印消息。
logto 将数据包记录到一个用户指定的文件中。
ttl 检测IP 数据包的TTL 域。
id 检测IP 数据包的分段ID 域是否等于特定的值。
dsize 检测数据包的有效荷载是否等于特定的值。
content 在数据包的有效荷载重搜索特定的模式串。
offset 设定content 中所说的起点。
depth 设定content 中所说的终点。
nocase 设定搜索中使用与大小写无关的方式。
flags 检测TCP 数据包的标志是否等于特定的值。
seq 检测TCP 的顺序号是否对应于特定的值。
ack 检测TCP 的应答域否对应于特定的值。
itype 检测ICMP 类型域是否等于特定的值。
icode 检测ICMP CODE 域是否等于特定的值。
session 将应用层中一个指定的会话总的数据复制出来。
icmp id 检测ICMP ECHO ID 域是否等于特定的值。
icmp seq 检测ICMP ECHO 顺序号是否等于特定的值。
ipoption 检测IP 数据包中的协议头部的选项部分是否存在特定值。
rpc 检测RPC 服务的特定应用。
resp 主动应答。
下面是Snort 规则的三个典型实例:
1. [特洛依木马]活动
规则定义如下:
alert UDP $INTERNAL 31337 -> $EXTERNAL any (msg :“IDS 189/ Trojan-active-back-orifice”;)
含义为:当有人对你的电脑UDP 端口31337连线送入资料时,向管理员发出[ 特洛依木马]程式Back Orifice 在活动的警报。
2. 分布式拒绝服务(DDoS) 攻击
规则定义如下:
alert tcp $EXTERNAL_NET any -> $HOME NET 12754 (msg :“DDOS mstream client to handler”; content: “>”; flags: A + ;
referenc : cve, CAN-2000-0138; classtype: attempted-dos; sid: 247; rev: 1;)
含义为:目的端口号为12754 的TCP 连接中, 数据包含字符串“>”时,向管理员发出警报。
3. Ping 扫描攻击
规则定义如下:
alert icmp $EXTERNAL NET any - > $HOME NET any (msg :“ICMP webtrends scanner”; content :“| 00 00 00 00 45 45 45 45 45 45
45 45 45 45 45 45 |”; itype : 8 ; icode : 0 ; reference : arachnids , 307 ; classtype :attempted - recon ; sid :476 ; rev :1
;)
含义为: ICMP 的ping 报文中的数据含有字符串“00 00 00 00 45 45 45 45 45 45 45 45 45 45 45 45”时,向管理员发出警报。
判断用户执行的操作是否是属于入侵行为。
要建立一个这样的特征信息(又称攻击签名) 库的前提是必须建立一个有效、可扩展的特征描述方法,能够描述所有的入侵事件。
Snort 规则分为两部分: 规则头部和规则选项。
规则头部包含规则的操作、协议、源IP 地址和目标IP 地址及其网络掩码和端口;
规则选项包括报警信息、需要检测的模式信息、索引信息。
一条规则中不同部分必须同时满足才能执行,相当于“与”操作。
同一个规则数据库文件中的所有规则之间相当于一个“或”操作。
(i) 规则操作说明当发现适合条件的数据包时应该做些什么。有以下三种操作。
•alert :使用选定的告警方法产生警报,并记录这个数据包;
•log :记录该数据包;
•pass :忽略该数据包。
(ii) 协议项说明Snort规则定义的这种攻击应用的是何种协议。
(iii) IP地址和端口项。关键字“ANY”可以用来定义任何IP地址。网络引擎没有提供从主机名称到IP地址的转换,所以IP地址规定为点分十进
制的IP地址格式,在IP地址后指定网络掩码。如/24指定一个C类网络,/16指定一个B类网络,/32指定一个特定主机。如192.168.1.0/24指定了
从192.168.1.1到192.168.1.255的一个范围的IP地址。
IP地址有一个“非”操作。这个操作符号用来匹配所列IP地址以外的所有IP地址。“非”操作使用符号“!”表示。如,任何由外部网络发起的
连接可以表示为:
alert tcp ! 192.168.1.0/24 any -> 192.168.1.0/24 111
端口号可以用几种方法指定: 用“ANY”、数字、范围以及用“!”操作符。“ANY”指定任意端口。静态数值指定一个单一端口,如80为HTTP,
23为TELNET等。指定端口范围用“:”它可以指定一个范围内的所有端口。如:
log udp any any -> 192.168.1.0/24 1:1024
记录任何从任意主机发起的到目标网络任何主机上的1~1024端口的UDP协议数据包。
log tcp any any -> 192.168.1.0/24 :6000
记录任何从任意主机发起的到目标网络任何主机上的端口号小于等于6000的TCP协议数据。
log tcp any :1024 -> 192.168.1.0/24 500:
记录任何从任意主机上端口号小于等于1024到目标网络任何主机上的端口号大于等于500的TCP协议数据。
端口的“非”操作可以修饰ANY以外的任何端口指定方式。例如,你想记录Xwindow以外的任何端口,可以使用如下规则:
log tcp any any -> 192.168.1.0/24 !6000:6010
(iv) 方向操作符“ ->”规定了规则应用的数据流方向。其左边的IP地址为数据流的起点,右边为终点。双向操作符为“”,它告诉SNORT应
该关注任何方向的数据流,例如:
log ! 192.168.1.0/24 any 192.168.1.0/24 23
(2) 规则选项
规则选项形成了检测系统的核心,具有易用性、功能强和灵活性。一个规则的规则选项中可能有多个选项,不同选项之间使用“;”分隔开来,
它们之间为“与”的关系。选项由关键字和参数组成,每个关键字和它的参数之间使用冒号“:”分隔。现在可以解释的关键字有:
msg 在警报和记录的数据中打印消息。
logto 将数据包记录到一个用户指定的文件中。
ttl 检测IP 数据包的TTL 域。
id 检测IP 数据包的分段ID 域是否等于特定的值。
dsize 检测数据包的有效荷载是否等于特定的值。
content 在数据包的有效荷载重搜索特定的模式串。
offset 设定content 中所说的起点。
depth 设定content 中所说的终点。
nocase 设定搜索中使用与大小写无关的方式。
flags 检测TCP 数据包的标志是否等于特定的值。
seq 检测TCP 的顺序号是否对应于特定的值。
ack 检测TCP 的应答域否对应于特定的值。
itype 检测ICMP 类型域是否等于特定的值。
icode 检测ICMP CODE 域是否等于特定的值。
session 将应用层中一个指定的会话总的数据复制出来。
icmp id 检测ICMP ECHO ID 域是否等于特定的值。
icmp seq 检测ICMP ECHO 顺序号是否等于特定的值。
ipoption 检测IP 数据包中的协议头部的选项部分是否存在特定值。
rpc 检测RPC 服务的特定应用。
resp 主动应答。
下面是Snort 规则的三个典型实例:
1. [特洛依木马]活动
规则定义如下:
alert UDP $INTERNAL 31337 -> $EXTERNAL any (msg :“IDS 189/ Trojan-active-back-orifice”;)
含义为:当有人对你的电脑UDP 端口31337连线送入资料时,向管理员发出[ 特洛依木马]程式Back Orifice 在活动的警报。
2. 分布式拒绝服务(DDoS) 攻击
规则定义如下:
alert tcp $EXTERNAL_NET any -> $HOME NET 12754 (msg :“DDOS mstream client to handler”; content: “>”; flags: A + ;
referenc : cve, CAN-2000-0138; classtype: attempted-dos; sid: 247; rev: 1;)
含义为:目的端口号为12754 的TCP 连接中, 数据包含字符串“>”时,向管理员发出警报。
3. Ping 扫描攻击
规则定义如下:
alert icmp $EXTERNAL NET any - > $HOME NET any (msg :“ICMP webtrends scanner”; content :“| 00 00 00 00 45 45 45 45 45 45
45 45 45 45 45 45 |”; itype : 8 ; icode : 0 ; reference : arachnids , 307 ; classtype :attempted - recon ; sid :476 ; rev :1
;)
含义为: ICMP 的ping 报文中的数据含有字符串“00 00 00 00 45 45 45 45 45 45 45 45 45 45 45 45”时,向管理员发出警报。