基于Snort的入侵检测系统规则改进

更新时间:2024-02-08 作者:用户投稿原创标记本站原创 点赞:4783 浏览:14543

摘 要

信息技术日新月异的迅猛发展,使得社会对计算机及网络的依赖越来越强,人们对其的使用也日益频繁,网络中的数据越来越庞杂.为保证信息安全的同时又不降低数据的吞吐率,因此,人们对网络安全产品的处理速度、效率和检测准确性上的要求越来越高.本文在分析和研究网络安全及模型和入侵检测技术的基础上,选取最为常用的轻量级入侵检测系统――Snort为具体的研究对象,通过对Snort系统规则的研究和改进,在保证系统安全性能不降低的前提下,实现系统入侵检测能力和效率的提升.

【关 键 词】Snort入侵检测规则

计算机网络技术的快速发展促使网络信息成为社会发展的重要组成部分,但是由于计算机网络的组成形式具有多样性和开放性等特点,使得网络上传输的信息容极易受到各种人为攻击,这就是所谓的入侵,即:潜在的、有预谋、未经授权访问信息、操作信息,致使系统不可靠或无法使用的企图,具体的入侵行为分为外部渗透、内部渗透和不法行为三种.


在国内,绝大多数计算机用户的防护技术还停留在杀毒软件、加密软件、防火墙等,被动保护技术,而在现实中仅仅依赖防火墙等被动保护方法建立起来的网络往往是“外紧内松”,从外面看似乎非常安全,但内部的安全措施却十分的不足,一旦防火墙被成功渗透,就会造成无法挽回的损失.入侵检测系统(IntrusionDetectionSystem,IDS),是一种主动防御的工具,就是在入侵攻击发生之前,检测入侵行为,并利用报警与响应系统消除入侵攻击,这样,就能在入侵发生之前,避免入侵事件造成的损失;另一方面,IDS在监听网络时不会为网络的性能带来额外的负担,这样就使得在保证网络的传输速率的同时,提高了网络的安全性.目前最常用的IDS就是开源的Snort,但是其检测能力依赖于其检测规则的匹配速度和准确性,如果规则匹配速度和效率不足,就会对系统性能造成影响或者发现不了入侵行为.针对Snort存在的问题,本文在对Snort检测规则进行解析的基础上,对其进行优化和改进,以增强Snort的检测效率.

1相关工作

1.1网络安全

通常情况下,网络入侵是威胁网络安全的最重要一环,针对日益严重和突出的网络安全问题,人们提出了多种网络安全模型以应对新的网络安全建设的环境,指导网络安全工作的部署和管理.在众多网络安全模型中,最典型,也最广泛为人接受和使用的是PPDR模型,PPDR模型是策略(Policy)、防护(Protection)、检测(Detection)、响应(Response)四个方面,PPDR四方面之间原关系如图1所示.

模型中,安全策略处于核心的地位,其它三个方面围绕着策略进行;防护是保证系统安全的第一步,但具有一定的滞后性,只有在对相应的入侵行为进行检测和响应之后才能制定出具体的防护措施;检测是一种主动的防御,也是动态响应的依据,其应用的主要技术就是入侵检测;响应是在发现攻击企图或者攻击行为之后,系统所实施的具体应对措施.模型是一个螺旋上升的过程,经过一个PDR循环后,安全防护的水平就应该上升到一个新层次,具有更强的安全保障能力.入侵检测系统则是对模型的具体的应用和实施的载体,对模型的使用使得系统的安全性设计方面更具系统性和全面性.

1.2入侵检测技术

入侵就是对目标主机信息的完整性、保密性、可用性、可控性企图恶意破坏的一种行为,而入侵检测(IntrusionDetection,ID)即对入侵行为发现和响应的行为,它从计算机网络或者计算机系统中的关键节点中收取信息并对之进行分析,从而发现入侵行为.用于事入侵检测的软件与和硬件的组合就是入侵检测系统.适当的IDS能够极大的简化管理人员的安全方面的负担,保证网络安全的运行.

入侵检测系统的通用结构图,IDS系统主要包含数据提取,数据分析和数据处理结果或响应三个主要功能模块.关于入侵检测的技术模型,最早由DorothyDenning提出,他提出的模型与具体系统和具体的输入无关,对此后的大多数实用系统都有很好的借鉴价值.通用的技术模型的结构,模型包含事件产生器,行为特征模块和规则模块三个主要功能部件.IDS可分为基于异常的检测和基于误用的检测.基于异常的入侵检测的方法主要是建立在计算机系统中正常行为的模式库;基于误用的入侵检测是建立系统的非正常操作的行为特征库,通过监测用户或系统的行为,将收集到的数据与特征库里的各种攻击模式进行比对,如果能够匹配,则判断有攻击.

2Snort系统规则的解析与改进

2.1Snort系统介绍

Snort是用C语言编写的,开源的网络入侵检测系统,与其他昂贵且大型的商用检测系统相比,Snort系统具有易安装,易配置,规模小,功能强,使用灵活等优点.图2描述了Snort的系统结构及其模块间的相互关系.

基于Snort的入侵检测系统主要包含数据包、预处理器、检测引擎、日志和报警系统、输出模块等五个主要部件.其中,数据包用于捕获网络上传输的数据包并进行协议解析,它为检测引擎准备最初的备检数据;预处理器处在包之后,用于分析网络数据包,组装数据分片,为下一步的检测引擎做准备,以提高Snort检测的效率和精度;检测引擎则是Snort系统的核心模块,检测引擎依据之前设定好的规则检查数据包,图3给出了检测引擎的工作流程;报警和日志系统用于记录行为或产生报警,输出模块则用于产生相关的配置文件或其他输出结果.

2.2Snort系统的规则的解析

Snort检测是基于规则的,而规则的定义是基于入侵特征的,所谓特征是数据包中数据的不同特点,它主要被用来检测攻击行为.一条规则可以包含一个或者多个类型的入侵特征,因此,一条好的规则可以探测出多种入侵行为.标准的规则包含规则头和规则选项两个部分,规则头又包含:行为、协议、地址、端口、方向、目的地址和目的端口等信息,例如:alertipanyany->anyany(msg:“IPPacketdetected”;)具体解析如表1所示.这条规则的具体含义是:将规则(msg的内容)用在所有的ip包上,如果ip包内的数据与规则库中的条件相匹配,则报警.

在基于网络的入侵检测模式下,Snort规则解析的流程过程为:(1)从规则文件中逐条读取规则;(2)解析规则,并用规则语法将其表示出来;(3)在内存中组织规则,建立起好的规则语法树.

2.3Snort系统的规则的改进

Snort系统中最核心的部分是规则检测模块,因此,若要实现Snort系统的整体性能的提升,就必须提高规则的检测速度,为此,我们在Snort中使用二维列表递归检索(RTN和OTN)和函数指针列表(即“三维列表”)等方法来实现其规则匹配的速度提升.

由于Snort系统的开源性,它拥有一个非常庞大的规则特征库,且这个特征库在不断的增长中,因此,匹配过程需要耗费很多的时间和资源,本文针对每个数据包都要与特征库进行比对的缺点,给出一种优化的方法,此方法主要采用分治法的思想,即:将Snort的规则按照一定的标准进行划分,分成若干相互独立的子集,若规模依然庞大则继续划分,直到划分到适当的程度,通过减小了每个特征库的规模大小来减少每个数据包匹配的次数,从面达到提高效率和速度的目的.优化后的规则特征集必须具备两个条件,即:划分出来的规则集必须适当的大小且效率最高;划分出来的规则集必须相互独立.满足这两个条件,就能保证每个数据包仅需要对一个划分的规则子集进行比对,从而实现速度和效率的提升.

在规则集划分的初始阶段,需要根据不同的需要选择一个确定的规则参数,作为唯一的划分依据对规则集进行划分,比如端口或者规则选项等.这样就能够实现将每个数据包根据其自身的特性划分到相应的规则集中,实现最小的匹配次数.例如,将协议作为划分的依据,将规则集划分成TCP/UDP集,ICMP集和IP集,从而可将不同的数据包划归到相应的子集中,进行匹配,以减少匹配规模,规则特征集改进后的整体结构图如图6所示.

经过规则特征库的优化处理划分之后,当Snort系统运行时,系统自动为每个收到的数据包,根据其自身包头中的信息属性将其放置相应的规则子集中,使用经过改进划分的规则集,能够大范围的降低数据的匹配次数,从而带来整体检测处理时间的减少和Snort系统性能的提升.

3总结

传统的网络安防技术,如:加密软件、杀毒软件、防火墙等,只能提供被动防护,以入侵检测为代表的安全技术,能够主动的发现攻击,提供实时而又全面的防护,已经成为最为常见的网络安全产品之一,本文以Snort系统为具体研究对象来对IDS进行研究,为应对越来越多的网络数据的问题,文章对最为影响Snort系统吞吐率和效率的匹配规则进行解析和改进,得到了一个更优的规则模型,以提高Snort系统的检测速度、效率和准确度.

作者单位

云南省标准化研究院云南省昆明市650228