龙源期刊网的入侵检测系统的研究与改进作者:任颖李华伟王丽娜来源:《计算技术与自动化》2012年第03期摘要:入侵检测技术是一种主动保护网络资源免受黑客攻击的安全技术。可以弥补防火墙的不足,帮助网络快速发现网络攻击的发生,起着主动防御的作用,为网络安全提供实时的入侵检测及采取相应的防护手段。本文对提高Snort性能的核心技术进行分析,提出一种能够有效提高匹配效率的AC—WM的模式匹配算法,并对改进后的Snort系统进行测试,显著提高了系统的性能。关键词:入侵检测;Snort;模式匹配中图分类号:TP393.1文献标识码:AResearchonInstrutionDetectionSystemBasedonSnortanditsImprovement,,,(1.NavalAeronauticalandAstronauticalUniversity,Yantai264000,China;2.ShandongBusinssInstitute,ShandongYantai264001,China)Abstract:Intrusiondetectiontechnologyisanactivesafetytechnologytoprotectnetworkresourcesfromhackerattacks.andcanmakeupforthelackofafirewalltohelpthenetworktoquicklyfindtheoccurrenceofcyberattacks,andplasysanactivedefenserole,instrusiondetectionfornetworksecurityandtakeappropriateprotectivemeasures.ThispapertoimprovetheperformanceofSnortcoretechnologyundertookananalysis,putforwardakindofcan,andtheimprovedSnortsystemwastested,significantlyimprovetheperformanceofsystem.Keywords:instrusiondetection;Snort;patternmatching龙源期刊网引言随着互联网技术和信息技术的飞速发展,网络安全风险系数不断提高。有些攻击方式可以绕过防火墙,直接入侵到内部网络,使得网络安全收到威胁。入侵检测技术(IDS—IntrusionDetectionSystem)可以弥补防火墙的不足,能够帮助网络快速发现网络攻击的发生,采用探测与控制相结合的技术,起着主动防御的作用,为网络安全提供实时的入侵检测及采取相应的防护手段。2Snort入侵检测系统2.1Snort的体系结构Snort在逻辑上分成多个部件,这些部件共同工作,产生符合特定要求的输出格式。它是由以下几个主要的模块组成:包捕获器、包解码器、检测引擎、预处理插件、输出插件(日志与报警子系统)等。Snort系统的数据包处理流程如图1所示。图1snort的数据处理流程2.1.1包捕获器为了将数据包输送给预处理程序以及随后的检测引擎,必须先做一些准备工作,snort需要一个外部的捕包程序库:libpcap。snort利用libpcap独立地从物理链路上进行捕包,它可以借助libpcap的平台可一致性被安装到几乎所有地方。计算技术与自动化2012年9月第31卷第3期任颖等:基于Snort的入侵检测系统的研究与改进2.1.2包解码器数据包解码器主要是对各种协议栈上的数据包进行解析、预处理,以便提交给检测引擎进行规则匹配。由于包解码器是基于libpcap截获的链路层数据,snort通过调用不同的功能函数来处理链路层数据并对链路层协议进行解码。解码后的数据会根据需要进入到下一层的协议分析,直到满足检测引擎处理的要求为止。2.1.3预处理器龙源期刊网在检测引擎做出某些操作来发现数据包是否用来入侵或者修改数据包的组件或者插件。它的作用就是针对当前截获的数据包进行预处理,可以根据实际环境的需要启动或停止预处理器插件。2.1.4检测引擎检测引擎是Snort的核心模块。它的作用是探测数据包中是否包含着入侵行为。检测引擎通过Snort规则来达到目的,规则被读入到内部的数据结构或者链表中。并与所以的数据包对比。如果一个数据包与某一规则匹配,就会有相应的动作(记录日志或报警等)产生,否则数据包就会被丢弃。2.1.5报警日志模块检测引擎检查后的Snort数据需要以某种方式输出。如检测引擎中的某条规则被匹配,则会出发一条报警,这条报警信息会通过网络、UNIXsocket,WindowsPopop或SNMP协议的trap命令送给日志文件。2.2Snort系统工作流程Sonrt工作流程如图2所示。程序启动后,完成初始化工作,对命令行进行解析,读入系统的规则库,生成用于检测的二维链表,然后就进入循环的检测过程。程序通过Libpcap接口从网络中抓取一个数据包,调用数据解析函数,根据数据包的类型和所处的网络层次,对数据包进行协议解析,包括数据链路层、网络层和传输层,解析后的结果存放在一个Packet结构中,用于以后的分析。数据包解析过程完成以后,如果命令行中指定了根据规则库对数据包进行分析(—c),就会启动检测引擎,将存放在Packet结构中的数据包的数据和根据规则库所生成的二维链表进行逐一的比较。如果找到匹配的规则条目,则根据其规定的响应方式进行响应,然后结束数据包的处理过程,再抓取下一个数据包;如果没有匹配的规则条目,则直接返回,抓取下一个数据包进行处理。图2Snort工作流程3Snort系统的改进3.1Snort性能分析龙源期刊网系统中,相对耗时的操作主要有4个:从网络传输介质上捕获数据包,分析数据结构,规则匹配以及对每一个数据包进行校验。提高Snort的性能可以从好几个方面来入手。本文主要从字符串匹配方面来研究如何提高系统性能。3.2模式匹配算法的改进文本提出了一种新的多模式匹配算法(AC—WM),其基本原理是:应用WM算法的启发式搜索策略产生字符跳跃,并对跳跃的位移表进行改进,以增加尽可能多的位移;同时应用AC算法的有限状态自动机构造模式数,匹配过程中使用模式树,减少字符比较次数。AC—WM算法分为两个部分,即预处理阶段和匹配阶段。3.2.1算法预处理预处理阶段构造两个位移表(shift表和shift2表)和一个树型有限状态自动机。Shift表的构造方法如下:设X是长度为N的块字符,X被映射到shift[h],则shift[h]是X在所有模式串中出现的最后面位置。有以下两种情况:1)如果X不在任何模式串中出现,则shift[h]=s—N+1。2)如果X出现在有些模式串中,设X在模式串P的位置q结束,并且X在任何其他模式串中都不会在比q更后面的位置结束,则shift[h]=s—q。Shift2表的构造方法如下:设X是长度为N的块字符,X被映射到shift2[h],则shift2[h]是X在所有模式串中出现的次后面位置。有以下两种情况:1)如果X不在任何模式串中出现或在所有模式串中共出现一次,则shift2[h]=s—N+1。2)如果X出现在模式串中的总次数≥2,设X在模式串P的位置q结束,并且X在其他模式串中有且只有一次在比比q更后面的位置结束,则shift2[h]=s—q。算法中goto函数和output函数按照如下方法生成:初始状态为0;然后依次取出模式集中的每一个模式串,执行如下操作:从模式串的最后一个字符开始从后向前,逐个取出模式串的每个字符,从状态0出发,由当前状态和新取出的字符决定下一个状态。如果下一个状态不为空,则将下一状态赋为当前状态;否则,添加一个标号比已有状态标号大1的新状态,并用一条矢线从当前状态指向新加入的状态,并将新加入的状态赋为当前状态。每处理完一个模式串,将该模式串加入到当前状态的output函数中。龙源期刊网算法的匹配过程算法的匹配过程如下:1)计算文本串text的当前N个字符的hash值h(从text的第s—N+1个字符处开始)。2)检查shift[h]的值。如果shift[h]0,则将text向后移动shift[h]个字符,然后转到1)执行;否则,转到3)执行。3)利用有限状态自动机进行字符串比较。从text的当前字符开始,从后向前逐个取出text的每个字符,从状态0出发,根据goto函数进入下一状态;当某个状态的output函数不为空时输出其值,表示在文本串中找到该模式串;否则text向后移动1个字符,转到2)执行。4)如果达到text末尾,循环结束;否则,将text向后移动shift2[h]个字符,转到1)执行。3.3改进后Snort系统的测试与性能评价在snort的官方网站下载源码包。在VC中打开工程文件snort.dsw,打开snort.c,找到系统入口函数main,进行编译。Snort源程序中,函数InterfaceThread完成了数据包数量的整个流程,通过对此函数的编写修改,完成多线程的处理数据包的实现。mstring.c(.h)是实现字符串匹配算法的程序。在VC中选择debug版本,采用MYSQL数据库进行编译,生成/win32/WIN32_Prj/snort_Win32_Mysql_Debug/snort.exe。本文使用某实验室提供的入侵检测训练数据集,选取一天的流量数据作为测试数据集。测试环境:CPU2.8GHz,内容1GB,影片40GB,WindowsXPProfessional。表1比较了三种算法的平均匹配时间随着模式数目增加的变化情况。其中,AW表示AC—WM算法;AC表示AhoCorasick算法;WM表示Wu—Manber算法。表1模式匹配算法对比测试模式数目(个)AW/μsAC/μsWM/μs10龙源期刊网表1显示,AC—WM算法的匹配效率明显高于于AC算法,同样优于WM算法。主要原因是算法在匹配时尽可能多地进行字符跳跃,减少了字符比较的次数,从而提高了系统的性能。4小结本文对提高Snort性能的核心技术进行了分析,主要从模式匹配算法着手,提出了一种能够有效提高匹配效率的AC—WM的模式匹配算法,并对改进后的Snort系统进行了测试。从实验结果和数据分析可以看出,在入侵检测系统中应用AC—WM算法,能够显著提高模式匹配的效率,从而提高了系统的性能。参考文献[1]PtacekTH,NweshamT.Insertion,EvasionandDenialofService:EludingNetworkIntrusionDetection,SecureNetworksInc.,1998:47—[2]马力,焦李成,卢涛,等.一种基于代理的分布式入侵检测系统结构设计,通信和计算机,2005,2(6):55—[3]韩东海,王超,李群.入侵检测系统实例剖析[M].北京:清华大学出版社,[4]CrosbieMS.PaffordG.ApplyingGeneticProgrammingtoIntrusionDetection[J].ComputerScience,1997,15(3):112—[5]R.A.Kemmereer,G.Vigna.IntrusionDetection:ABriefHistoryan