论文部分内容阅读
随着互联网的飞速发展,在中国经济的发展中起到了举足轻重的作用,日益成为人们生活、工作、学习中不可缺少的工具。然而,伴随而来的也有各种操作系统及应用程序的漏洞不断出现,我国互联网用户安全防范意识非常薄弱,容易成为恶意攻击者利用的首选目标,网络安全问题变的日益紧迫。入侵检测系统是网络安全中一个重要的组件,它对网络进行实时的监控和防范。当前入侵检测系统主要分为两类:基于主机的入侵检测系统和基于网络的入侵检测系统。其中基于网络的入侵检测系统有明显的优势,它设置在一台主机上就可以监控保护整个网段,降低了成本,提高了效率。本文研究的Snort系统是基于网络的入侵检测系统的一种。入侵检测系统主要有三种不同的检测方法:完整性检测、异常检测、特征检测。完整性检测是将系统的文件生成一个校验和,然后定期将文件进行校验,如果发生了变化就发出警报。异常检测是检测一个行为与标准是否相同,如果不同就发出警报。特征检测是对入侵行为的特点进行检测的一种方法,是检测已知攻击的最准确的方法,Snort系统使用的是特征检测方法。Snort系统预先存有一些规则集,当一个入侵与一个特征匹配的时候就会产生报警。Snort入侵检测系统是一个开源的轻量级入侵检测系统,本文使用的是Snort2.9.0.2。Snort系统是跨平台的,既可以在Unix和类Unix操作系统上使用,同样也可以在Windows操作系统上运行,采用插件机制,具有很强的扩展性。特征检测的核心技术是模式匹配算法的应用。随着高速网络的迅猛发展,网络流量不断增大,入侵检测系统的实时性要求面临重大考验,高效的模式匹配算法的作用就显得尤为重要。本文是对Snort2.9.0.2的源代码进行研究,分析了模式匹配算法在Snort系统中的应用。本文分析了sp_pattern_match检测引擎插件的功能作用,这个插件对规则选项的content和uricontent内容进行模式匹配,使用的是BM算法。本文的主要研究内容如下:1)本文介绍了入侵检测系统的概念、原理、分类和入侵检测的方法。2)本文分析了Snort的系统结构和工作流程,介绍了主要的系统模块。分析了检测引擎模块的处理流程和Snort规则。Snort规则树数据结构是检测引擎的核心内容,特征检测的过程就是对规则树的遍历过程。3)本文分析了三个种经典的单模式匹配算法:BM算法、BMH算法和Sunday算法。分析了三种算法的优缺点。发现原有系统使用的BM算法存在明显的不足,在此基础上提出了一种新的单模式匹配算法Im_Sunday算法。Im_Sunday算法放弃使用BM算法的好后缀规则shift表机制,它的预处理开销比较大,使用效率不是很高。Im_Sunday算法保留了坏字符启发规则的skip表机制,借鉴了Sunday算法的启发规则,对当前匹配的模式串最右端对应的文本串下一个字符S[next]进行启发判断。同时为了进一步提高字符跳跃距离,降低比较次数,还引进了对S[next]字符的下一个模式串长度位置的S[nnext]字符的启发判断,从而提高模式匹配的速度。然后实现了BM算法、Sunday算法和Im_Sunday算法三种算法。随机选取了两个不同长度的字符串进行匹配测试。两组匹配测试结果都表明,Im_Sunday算法增大了文本指针的跳跃距离,从而大大减少了字符跳跃次数和匹配过程中的字符比较次数。4)根据本文提出来的新算法,对Snort2.9.0.2进行了改进优化。使用Defcon8的29163144数据集做为测试网络数据源。在Red Hat Enterprise Linux Workstation Release 6.0系统上安装Snort进行测试。对使用Im_Sunday算法的Snort系统和使用BM算法的Snort系统进行对比测试,试验选取了五组规则集数,每一组规则集下,分别考查了系统检测时的运行时间和系统运行时的内存消耗两个重要性能指标,最终通过实验证明了Im_Sunday算法的高效性和实用性。