APP下载

基于Snort入侵检测与防御系统的优化策略

2013-08-15孔令治

吉林建筑大学学报 2013年4期
关键词:模式匹配缓冲区数据包

白 茹 孔令治

(长春中医药大学现代教育技术中心,长春 130017)

0 引言

随着网络的普及与计算机技术的发展,高等院校普遍建立高速的校园网络,以支撑学校的办公科研工作,并以此为基础进一步实施数字化校园的发展计划.数字校园进一步发展的基础之一是如何保障整个校园网络的安全运行,防范日益增加的网络攻击和异常的网络行为,确保校园网内数据安全.研究入侵检测或入侵防御系统成为网络安全必不可少的内容.Snort系统是一个用C语言编写的符合GPL(GNU General Public License)规范的开放源码软件,是一个跨平台、轻量级的网络入侵检测工具,包含监控或采集数据、数据的检测分析、检测结果的处理(报警、相应)等三个部分,其中数据检测分析是整个系统的核心,目前大多采用的是比较传统基于规则模式匹配方式,这种方式在今天网络数据量不断增大,攻击方式多样的情况下存在匹配计算量大、误报漏报率增加的情况.本文研究如何在部署基于Snort的入侵检测系统的基础上进行相应优化的策略,以提高检测的效率和防御响应的速度.

1 基于Snort入侵检测与防御系统的性能瓶颈

Snort系统主要有数据包嗅探器、包预处理器、检测引擎、报警/日志等几个模块组成,整个系统采用一种易于扩充的模块化体系结构,开发人员可以加入自己编写的模块来扩展或改进Snort的功能,以提高系统的性能.

通过研究分析在基于Snort的开源入侵检测和防御系统中,主要性能瓶颈集中在以下两个方面:即数据包的嗅探捕获及检测规则(Rule)的匹配.

1.1 数据包的嗅探捕获

数据包捕获技术是入侵检测分析的基础,在复杂网络环境下快速、完整的捕获到所需的数据包是准确分析网络是否遭到入侵以及进行何种响应防御措施的前提条件.在高速校园网的环境下,所部署的大部分网络安全系统将无法及时、有效处理巨大的网络流量,而大量攻击网络的行为是夹杂在复杂巨量的网络流量中实施的,由于数据包捕获技术的限制,在处理不过来的情况下致使大量的数据包被简单的丢弃,从而降低了入侵检测和防御系统的效率.

1.2 检测规则的匹配

基于Snort的入侵检测和防御系统是采用的主要是误用检测技术,检测系统首先会根据预先取得的攻击特征构造针对这类攻击的检测规则,多条检测规则集合到一起形成规则集合,检测过程就是对构造的规则集合用捕获的数据包在规则集合中进行模式匹配,发现满足攻击检测规则的网络入侵行为.但在网速不断提高,网络流量不断增加的情况下,对于匹配效率和速度的要求却越来越高,因此规则的排列及模式匹配算法都会影响检测的效率,通过深入分析发现,可以对规则集合进行适当优化并采用高速模式匹配算法来提高检测效率.

2 入侵检测与防御系统优化策略

通过上述分析,我们可以从提高Snort捕获包效率、对检测规则进行优化,以及采用更高效率模式匹配算法等方面来提高系统的性能.

2.1 数据包捕获技术优化策略

2.1.1 构造内存缓冲区减少系统调用次数

操作系统在捕获数据包过程中需要经历两次数据传递,一次是从物理网卡捕获数据传递到到内核空间,然后把数据内核空间复制到用户空间,当大量数据包被捕获时,两次数据需要频繁的在用户空间和内核空间进行切换,系统开销非常大,为了避免在数据包捕获过程中频繁的进行系统调用,可以借鉴操作系统在内存管理中地址映射技术,即通过内核与应用程序共享一段内存空间充当缓冲区(Cache),通过减少系统调用的次数,降低系统调用的开销,提高Cache命中率和系统的性能.

具体做法就是:在内核空间中构造一个与用户空间共享的数据缓冲区.存放的内核捕获的数据在内存中的地址.由于有缓冲机制当大量的数据包到达,内核就可以不断的缓冲区中写数据,而处于用户空间的网络监控程序,可以不停的缓冲区中读取数据,数据包的读写并行进行[1],当监控程序匹配速度慢产生拥塞时,可以在一定范围内调整缓冲区的大小来匹配,这样,捕获数据与匹配数据过程互不影响.因此系统的处理速度大大加快.

2.1.2 采用设备轮询机制

通常采用缓冲区技术减少调用次数,还可以使用Linux的设备轮询机制对数据捕获实现的优化.所谓的设备轮询机制,实际上就是利用网卡驱动程序提供的NAPI机制[2]加快网卡处理数据包的速度,在大流量的网络环境当中,标准的网卡中断加上逐层的数据拷贝和系统调用必然要占用大量的CPU资源,优化基本的想法是对于大流量网络,当发现一个DMA传输中断,则首先关闭网卡的中断模式,而对于随后的网络数据采用轮询方式进行接收,这样将降低系统中断次数,如果轮询发现没有数据包或者已接收了一定数量的数据包,则打开网卡的中断模式,依次类推.这种方法同缓冲区技术结合将降低数据捕获过程中系统调用和中断次数,提高数据处理速度.

2.2 规则优化策略

规则优化的策略是通过对Snort规则集进行优化,使数据包可迅速定位到一个较小的规则集合中进行检测.为了降低对每个数据包进行匹配的平均规则条数,规则的优化需要满足下面两个条件:

(1)尽可能创建最小,但却是最有效的规则集;

(2)创建离散的规则集,从而对每个到达的数据包只需检测一个规则集.

规则优化的问题关键是选择合适的特征参数作为划分不同集合的依据.由于网络协议是分层实现的,Snort在对数据包进行解析时,会将数据包中对应于网络协议各层的内容都放在Packet数据结构中.协议解析的过程是沿着协议树,从根结点寻找叶子节点的过程,并把相关的数据填充Packet数据结构.所以,选择一些协议特征作为划分集合的依据(如端口,协议选项等).

由于高校校园网环境相对封闭,面临的攻击行为基本是针对常用协议实行的,为了提高效率,主要对以下常用协议进行分析和检测匹配,即可防止绝大数网络攻击行为.

(1)IP协议数据包检测版本、报头长度、服务类型、标示、分割偏移、源地址、目的地址,在检测过程中如果发现异常情况则报警,如源地址目的地址一致,偏移量和长度不符等很有可能是伪造IP地址的land攻击或者碎片攻击;

(2)在TCP协议的数据报文中检测TCP源端口目的端口及TCP标志,这样可以匹配诸如非法TCP连接无数据交换的TCP会话等非法报文;

(3)在ICMP分组中检查IP源地址和IP目的地址、类型及序号字段.通过对比APR和ICMP的响应次数发现Smurf,DOS攻击;(4)UDP协议检测IP源地址和IP目的地址、端口号等信息;(5)HTTP协议报文可以检测报文内容、报文相应代码等信息.

2.3 匹配算法的选择

入侵检测系统的对捕获数据按照规则进行模式匹配的过程是整个系统开销最大部分.因此模式匹配的效率是影响系统攻击检测速度的关键因素也将直接影响系统的性能.目前检测引擎大多会采用多种高效的模式匹配算法[4].

(1)BM算法:是经典单模式字符串比较算法,扫描一次完成一次模式匹配.如果网络中攻击模式较单一,模式数量很小时,则该算法速度很快.但在网络入侵检测系统捕获的数据包中的内容可能会部分匹配很多规则,匹配的模式数量增加,每次匹配又都会重新运行匹配算法,就会造成匹配效率的降低;

(2)多模式匹配算法Aho-Corasic算法[3]并行搜索模式集合要比应用BM算法逐一地搜索多个模式串高效得多.其预处理时间取决于规则集中最长模式的长度;

(3)Wu-Manber算法也叫WM算法,是一种多模式匹配算法.该算法采用了Boyer-Moore算法的框架,将字符块和hash技术及前缀特征表技术相结合取得较高的匹配效率.其主要提高效率的原理是采用跳跃不可能匹配的字符策略和hash散列的方法,加速匹配的进行.预处理过程中构建Shift(跳跃表)、Hash(散列表)和Prefix(预匹配表)这3个表,跳跃表被用于在扫描文本串,根据读入字符串决定可以跳过的字符数,如果相应的跳跃值为0,则说明可能产生匹配,就要用到散列表和预匹配表进一步判断,以确定有哪些匹配候选模式,并验证究竟是哪个或者哪些候选模式完全匹配.

在实际测试过测试发现三种算法各有所长,随着规则的增加,三种算法的时间和空间开销不尽相同,在综合考虑的情况下,据我们检验采用WM算法是比较适合的,未来可以进一步地改进优化.

3 结语

高校校园网络安全在网络日益融入每个师生工作的同时也面临越来越多安全的挑战,伴随着网络带宽的增长和网络攻击种类的丰富,使系统检测和防御任务越来越重,在系统性能下降的情况下,误报漏报一些威胁网络安全的重要攻击行为.因此提高整个系统效率,对入侵检测和防御系统的数据包捕获,规则以及匹配算法进行适当改进具有重要的意义.

[1]侯向宁.基于校园网环境的Snort入侵检测系统应用研究[J].西安:西北大学,2008(6):30.

[2]李 伟,鲁士文.Snort数据包捕获性能的分析与改进[J].计算机应用与软件,2005(7):104-105.

[3]魏葆雅,吴顺祥.基于Snort的入侵检测系统的改进[J].科技信息,2009(12):181.

[4]魏葆雅,吴顺祥.基于Snort的入侵检测系统的改进[J].科技信息,2009(4):25.

猜你喜欢

模式匹配缓冲区数据包
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
基于模式匹配的计算机网络入侵防御系统
具有间隙约束的模式匹配的研究进展
C#串口高效可靠的接收方案设计
OIP-IOS运作与定价模式匹配的因素、机理、机制问题
基于ARC的闪存数据库缓冲区算法①
一类装配支线缓冲区配置的两阶段求解方法研究
基于散列函数的模式匹配算法
初涉缓冲区