推荐期刊

Snort规则的分析与制定

时间:2015-12-21 01:59:40 所属分类:计算机技术 浏览量:

随着网络应用的普及,安全性变得日益重要,作为网络安全的一个重要组成部分网络入侵检测系统(Network In.trusion Detection System,NIDS)受到业界更多的关注,Snort正是一款基于libpcap库、开放源码的NIDS系统。这些开放源代码的数据分析软件包,为我们构

随着网络应用的普及,安全性变得日益重要,作为网络安全的一个重要组成部分网络入侵检测系统(Network In.trusion Detection System,NIDS)受到业界更多的关注,Snort正是一款基于libpcap库、开放源码的NIDS系统。这些开放源代码的数据分析软件包,为我们构建规则处理模块提供了便利条件,但通常它又有一定的局限性,所以,要开发一个真正功能强大、实用的网络入侵检测系统,开发者需要对各种网络协议、系统漏洞、攻击手法、可疑行为等有一个很清晰、深入的研究,才能制定相应的安全规则集和安全策略。它正是构建NIDS的工作重点。也是本文关注的焦点。
1 Snort简介论文
Snort是用c语言编写的开放源代码软件,它是一个功能强大、跨平台、轻量级的网络入侵检测工具。当前最新的版本是snort-2.7.0.1.tar.gz Mon Aug 6 10:14:59 EDT 2007(Last Modified)?。新版与以前的版本相比,增加的核心功能就是引入了数据匹配相对偏移的概念。在规则方面增加了若干选项,如content选项增加了distance和within修饰选项,可以使匹配多个有一定顺序和固定间隔的模式成为可能。目前ourcdire公司开始推行snort的许可证协议,以使其可以对一些具有及时性的,经过测试的规则进行收费。nort系统由四个基本模块组成,如1所示。数据采集模块,在数据采集模块中可以加入预处理模块,对网络数据进行合并、去除冗余信息,从而提高系统的效率;预处理模块,用来扩展Snort的功能;检测引擎,这是Snort的核心模块;日志与报警输出模块,管理员通过它来指定记录日志和告警的输出。用户还可以自己编写模块来扩展Snort的功能,以应对不断出现的威胁。
2 Snort规则与制定
2.1 Snort的规则与链表
snort的工作原理是解析规则集形成规则树,然后利用lihpcap对采集来的数据进行模式匹配,若匹配成功,则认为是有入侵行为发生,进入报警理模块。所以Snort规则是它的核心,必须拥有一个强大的入侵特征数据库,才能准确、高效地捕捉入侵行为。Snort规则被写成“规则头(选项)”的形式。规则头包含规则动作、协议、源和目标II,地址与网络掩码、源和目标端口信息和、方向操作符;规则选项部分包含报警消息内容和要检查的包的具体部分]。规则选项中可能有一个或多个选项,不同选项之间使用“;”分隔开了,它们之间为“与”的关系。选项由关键字和参数组成,每个关键字和它的参数问使用冒号“:”分隔。一条规则可书写为:alert tcp“EXTERNAL—NET any 一>”HOME —NET
l(msg:“F SITE CPWD overflOW attempt”:flow:estab-lished,to — server;content“SITE ”;nocase;content“CP-这条规则的动作选项是发出alert,协议类型是tcp,源IP地址是“EXTERNAL。NET,指任意外网地址,源端口为任意端口(any),目的IP地址是”HOME—NET,指任意内网地址.目的端口是21号端口,网络流量的方向是一> ,指需要从外网到内网的网络流量中匹配该特征。Snort将检测规则利用链表的形式进行组织,建立链表时,首先按规则类型分类,分成了五个单独的规则链;然后针对这五个规则链的每一个按协议类型分成相应的节点链表;在节点链表之下又分为若干规则树节点(Rule TreeNode RTN);每个规则树节点下又有若干规则选项,称为选项树节点(Opfion~Tree Node OTN)。每一个RTN对应于规则头,其中包含协议类型、源和目的地址、源和目的端口号等;每一个OTN对应于规则选项结点,其中包含报警信息(msg)、匹配内容(content),TCP标志位(flags)等选项。当数据包到达检测引擎时,Snort将首先匹配规则链,然后根据数据包协议匹配相应的节点链表,于是从左至右遍历RTN,参看源、目的IP及端口号是否匹配,找到一个匹配后,算法向下进行,再进入OTN中寻找匹配,每个OTN结点包含一条规则所对应的全部选项,当数据包与所有函
数都匹配成功时,即判断此数据包为攻击数据包,进入告警模块。
2.2 Snort规则的制定
在设计检测方案时,既要考虑快速地结束一个无效的检测过程,也应该尽量减少检测的范围。如何从众多的参数中选出最适合的、最容易达到匹配目的的参数先进行匹配?以TCP报文来说,独特的属性就是源端口和目的端口。端口可以分为两种,保留端口和非保留端口。对于一般的连接来说,通常在服务器端采用保留端口,在客户端采用非保留端口,所以可以利用保留端口作为独特的参数。Snort可以观察保留端口的位置,如果保留端口在源端口,通常情况下就意味着这是从服务器端发出的网络流量,反之,如果在目的端口,就是从客户端发出的流量。比如当Snort观察到一个HTYP请求报文,先检查它的源端日和目的端口,看是否能找到一个参数来组成独特的集合。一般来说,HTrP请求报文的源端口是超过1024的非保留端口,而它的目的端口是80或者其他已知的HTrP服务端口,此时就可以从特征库中选出目的端口是80,源端口任意的特征组成一个集合,再进行接下来的匹配工作。Netbus是一个流行的用于远端控制的黑客软件。Net—bus通过TCP/IP协议,可以远程将应用程序指派到某一套接字端口来运行,Netbus的执行行为具有典型性,它发出的l12信息包具有多种可分辨的特性。下面就分析IDS是如何针对它制定规则的。


1.netbus木马的客户端有两种,开放的都是12345或12346端口,如果仅仅连接其中任一端口,如TCP 12345就触发事件,那么就定义规则为:
alert tcp $ EXTE RNAL_NET any 一> $ HOME— NET12345(msg:“BACKDOOR netbus backdoor”;flow:to—serv—er,established;)
该规则仅仅指定目的端口为TCP 12345的即为netbus后门,这样即便是其它链接,如Telnet HOST 12345也会触发该事件,容易产生误报。
2.如果对TCP 12345端口发送“Getlnfo/0dI”,触发事件.那么就定义规则为:alert tcp $ EXTE RNAL—NET an y 一> $ HOME— NE2345(msg:“BACKDOOR netbus getinfo”;flow:to—server,established;content:“Getlnfo10dI”;)
该规则相对第一种来说好些,它同时对端口和字符特征进行匹配,但是也存在很大的局限,因为如果黑客将木马的通讯端口改为TCP 2345,而不是用默认的TCP 12345,那么该规则也就失效了。
3.如果对非TCP12345端口的其他端口发送“G~Info10dI”就可以触发事件,那么定义规则为:alert tcp $ EXTE RNAL— NET any 一> $ HOME— NETny(msg:“BACKDOOR netbus getinfo”;flow:to—server,e8-tablished;content:“Getlnfo10dI”;)该规则只要对非TCP 12345端口的其他端口发送包含“Getlnfo10dI”就可以触发该事件。由于端口并不是肯定的共性,因此这种定义方式也容易产生误报。从以上规则的定义,可以看出多数TCP规则定义的特点是以端口为特征、以标志位或者协议的字段为特征、以某个数据段为字符串特征。在定义规则时,抓住这些特征或特征的组合,可以有效提高IDS的工作效率。
3结语
准确、快速是NDIS的两个重要指标。由于规则是根据若干属性分类组织成为规则集,当一个数据包被检测时,Snort检测每个规则集的预设参数,当该规则集中的所有规则被检测完后,接着搜索下一规则集中的参数,检测过程重新开始。每一个数据包又必须经过从头到尾的匹配过程。这对于规则集中有很多条规则时,这样的检测方法就难以符合快速的要求。所以要实现这两个指标,对规则集改进将是大有可为的。

参考文献:
[1] Snort[EB/OL].http://www.snort.org.
[2] 魏宇欣,武穆清.智能网格入侵检测系统[J].Journalof Software.2006,11(17):2384~2394.
[3] (美)Jack Kozio1.Snort入侵检测实用解决方案[M].北京:机械工业出版社,2005,1.
[4] 严书亭,刘佳新,王新生.Snort规则链表结构的分析与改进[J].燕山大学学报.2006,30(3):272~275.
[5] 方杰,许峰,黄皓.一种优化入侵检测系统的方案
[J].计算机应用.2005,25(1):147—149


转载请注明来自:http://www.zazhifabiao.com/lunwen/gcjs/jsjjs/36939.html