Snort-入侵检测系统规则集的优化

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Snort-入侵检测系统规则集的优化

陈金柱1李逸波2朱乾坤3

(1.海军航空工程学院学员旅,山东烟台,264001;

2.海军航空工程学院自动控制系,山东烟台,264001;

3.海军航空工程学院网络中心,山东烟台,264001)

摘要:随着网络的发展,入侵检测系统将成为一个重要瓶颈。本文根据TCP/IP协议的特点对Snort-入侵检测系统规则集进行了优化设计。

关键词:Snort,入侵检测系统,规则集

0 引言

入侵检测系统(IDS)从计算机网络系统的若干关键点收集信息(如系统日志、审计数据和网络数据包等),然后通过分析这些信息来判断网络系统中是否有违反安全策略的行为和是否存在攻击。入侵检测依赖于两个假设:①用户和程序的活动是可以观察的。例如:系统审计机制。②正常活动和入侵(异常)活动有截然不同的行为。异常的活动被标识为入侵。入侵检测系统有多种分类。

根据检测方法,入侵检测分为两种类型①:误用检测(misuse detection)和异常检测(anomaly detection)。误用检测是将已知的攻击方式以某种形式存储在知识库中,然后通过判断知识库中的入侵模式是否出现来实施检测,如果出现,说明发生了入侵。该方法的优点是检测准确率较高,缺点是只对已知攻击类型和已知系统安全漏洞进行检测。而异常检测是指将用户正常的习惯行为特征存储到特征数据库中,然后将用户当前行为特征与特征数据库中的特征进行比较,若两者偏差足够大,则说明发生了异常。这种方法的优点是能检测未知的攻击类型,缺点是误检率较高。

根据检测的数据源,入侵检测系统可以分为基于主机的入侵检测系统和基于网络的入侵检测系统。基于主机的入侵检测系统是通过分析审计数据和系统日志来发现可能的入侵。基于网络的入侵检测系统是通过分析网络数据包来检测可能的入侵。下面介绍一个免费的轻量级的入侵检测系统——Snort。

1 Snort入侵检测系统

Snort是一种基于网络的入侵检测系统,通过误用检测规则来检测攻击。Snort规则就是使用“一种简单的、轻量级的描述语言”来描述网络上带有攻击标识的数据包。Snort规则文件是Snort的核心,是Snort的攻击知识库。如果只有Snort的可执行程序,而没有规则文件,那么Snort就不能真正实现入侵检测功能,即不能识别任何攻击。

Snort规则在逻辑上分为两部分:规则头(Rule Header)和规则选项(Rule Option)。规则头定义了规则的行为、所匹配网络包的协议、源地址、目标地址及其网络掩码、源端口和目标端口等信息;规则选项则包含了所要显示给用户查看的警告信息以及用来判定此数据包的其他信息(如:tcp的flags字段,数据字段的内容等)②。

下面是一个简单的规则:

alert tcp any any ->192.168.1.0/24 111(content:“|00 01 86 a5”|;msg:“mountd access”;)

上例中,括号左边部分为规则头,括号里面部分为规则选项,规则选项中冒号前的部分称为选项关键字(Option Keyword),这里需要注意的是规则选项并不是任何规则都必需的,它只是用来明确地定义表示的是某种攻击、需要采取某种行为(如警告等)。只有当组成规则的各个元素都为真时才能触发相应的操作。综合起来考虑,规则里限制数据包的各元素的关系是逻辑与;同时规则库中的各条规则之间的关系可以被认为一个大的逻辑或(进行逻辑或操作的各元素只要有一个为真时,整个表达式即为真)。

如图1,所有规则按照规则头排列成主链,然后根据规则选项把规则插入到这个链表中,构成规则集,这样每一个选项节点就对应一条规则。规则头节点主要记录了规则头信息,包括源IP/端口、目标IP/端口,并用指针指向下一个规则头节点、附属于它的规则选项列表和规则头列表结构。规则选项节点存放所有规则选项的信息和处理插件的处理函数列表(option function),分别指向规则头节点的指针和关联选项节点的指针。

图1 规则集

Snort就是这种基于规则匹配的网络入侵检测系统。而规则是根据源IP、目标IP、源端口范围和目标端口范围等属性分类组织成为规则集的。这样,当一个数据包被检测时,Snort检测每个规则集的上述四个参数以决定是检测该规则集还是转移到下一个规则集。如果数据包与规则集的四个参数相匹配,该规则集中的规则依次得到检测,并且每条规则中的其余的参数也按顺序检测。当该规则集中的所有规则被检测完以后,接着搜索下一条规则集中的四个参数,检测过程重新开始。每一个数据包都必须经过从头到尾的匹配过程。

这样,入侵检测就是把从网络上捕获的数据包和规则集进行匹配的过程。如果存在一条匹配该数据包的规则,就表示检测到了攻击,然后按照规则所指定的行为进行处理(如警告等);如果搜索完所有规则集都没有找到匹配的规则,就认为该数据包正常。

通常,当规则数量很少时,上述检测方法是很高效的。可是,当规则集中有很多条规则时,标准检测方法会变得非常低效。规则检测速度变慢,是由于每个数据包都必须检测每条规则集中的各个参数。

然而,根据规则集的结构和匹配过程的分析可知,许多匹配过程是根本不需要的,存在许多可优化的地方。另外,随着目前网络带宽的不断加大,IDS将成为网络带宽的一道瓶颈,入侵检测系统规则集的优化将给入侵检测系统的提供了更大的机遇。

2规则的优化

为了提高规则检测的处理速度,需要使用基于规则集检测方法。规则优化器必须进行规则集的构造和选择。

2.1规则集的构造

使用规则优化器构造规则集对基于规则集检测方法是必要的。规则优化器必须满足两个要求:(1)尽可能构造最小的、最高效的规则集;(2)构造离散化的规则集。这样,使得每个数据包仅需搜索一个规则集。

在初始化阶段,规则优化器利用最具独立性的Snort规则参数来构造规则集。因为每类传输协议有让其独立的不同参数,所以所选的规则参数对于不同传输协议是不同的。例如:TCP规则集可以根据源端口和目标端口来区别于其它的TCP规则集,而ICMP规则集可以根据该规则的ICMP类型加以区别。规则优化器利用具有独立性的参数构造规则子集。这样使得多规则检测引擎所需检测的规则集更小。更重要的是,它允许根据数据包的特征让其分别通过相应的规则子集。

2.2规则集的选择

当Snort运行时,规则优化器为每个数据包选择一个规则集。规则集的选择依赖于收到的数据包的一些参数和规则集中参数的匹配结果。这样,规则优化器只选择那些能匹配该数据包的规则并且只过滤多规则搜索引擎需要处理的规则。此后多规则搜索引擎可以进一步通过基于规则集的检测方法检测内容③。对于一些异常数据包,有可能会选择两个规则集,这种情况称为“独立冲突”。

相关文档
最新文档