面向IPv6网络的入侵检测系统的设计与实现

2012-07-26 11:04方世林刘利强
自动化仪表 2012年2期
关键词:数据包引擎规则

方世林 刘利强 方 欣 李 毅

(湖南理工学院计算机学院,湖南 岳阳 414006)

0 引言

随着互联网的普及,IPv4网络存在的不足逐渐显露,其中最尖锐的问题是IPv4地址资源的逐渐枯竭和路由器中路由表过于庞大。为解决这些问题,IPv6协议应运而生。IPv6协议是一种彻底解决网络地址匮乏问题的方法。伴随着IPv6应用技术的迅速发展,与之相关的网络信息安全形势也日趋严峻和复杂化,网络入侵和攻击事件与日俱增[1-3]。

入侵检测系统是一种主动的安全防护工具,它对计算机受到的内、外部攻击和误操作进行实时防护,在计算机网络和系统受到侵害之前进行报警,并作出拦截和响应。Snort系统是面向IPv4网络的一套入侵检测系统。针对IPv6的特点与入侵检测的研究现状,在Snort入侵检测系统的基础上,设计了一套IPv6入侵检测系统,实现了 IPv6环境下的入侵检测[4-8]。

1 IPv6网络入侵检测系统设计

设计的新型IPv6入侵检测系统是以Snort V2.8.1入侵检测系统为基础的。Snort系统是一个以开放源代码的形式发布的网络入侵检测系统,由Martin Roesch编写,并由遍布世界各地的众多程序员共同维护和升级。根据IPv6技术的特点,对相关模块进行修改设计,在数据包捕获模块和检测引擎处理模块作了较大的技术创新。该系统采用行为模式来进一步识别病毒入侵,使得网络系统的安全性得到有效的保证。系统总体设计目标是全面支持IPv4/IPv6双协议栈,并能够高效、准确地实现纯IPv4网络、纯IPv6网络以及IPv4/IPv6混合网络上的入侵检测。

1.1 系统框架设计

IPv6入侵检测系统的设计仍然采用Snort系统的模块化设计思想,模块主体结构仍然采用Snort系统的主体结构,各模块根据IPv6协议的需要进行重新规划和设计,各模块功能支持IPv6协议。IPv6入侵检测系统整体结构由六个模块组成:数据包捕获模块、IPv4/IPv6双协议栈解析模块、数据包预处理模块、特征规则解析模块、检测引擎处理模块和告警输出模块。

1.2 系统工作流程

根据系统设计目标,IPv6入侵检测系统要实现IPv4和IPv6双协议下的入侵检测。同时,为了保障系统在IPv4与IPv6之间的良好过渡,考虑到IPv4网络与IPv6网络之间的互操作及平滑升级机制,本系统采用双协议栈技术来实现IPv6入侵检测系统[9-10]。

依据双协议栈的设计理念,IPv6入侵检测系统在Snort系统原有结构的基础上加入了支持IPv6协议的内容。IPv6入侵检测系统首先对数据捕获设备、数据捕获缓冲区、规则存储链表、入侵特征库和预处理器等进行初始化;然后启动数据包捕获模块,根据系统的需要从网络上捕获所有流经网段的原始数据包,经过过滤器的简单处理后再将数据包送到协议解码模块;协议解码模块再对数据包进行解码,解码后的结果存放在系统内部预先定义好的包数据结构中,同时将包数据结构送往预处理模块作进一步处理。

预处理模块有两个功能:一是对数据包进行流重组、分片重组和相关协议格式的规范化处理,使之更适合检测引擎的匹配工作;二是实现基于规则的检测引擎所无法完成的工作。

数据包在经预处理模块处理之后,被送往检测引擎处理模块进行规则匹配工作,检测引擎依据攻击特征规则库,再对每一个数据包进行检测,判断是否存在入侵。如果是正常数据包,则进行用户行为模式分析识别处理,如仍是正常数据包,则作丢弃处理;否则调用输出模块对数据包进行报警和日志记录工作,执行完成后立即返回,进行循环操作。IPv6入侵检测系统总体流程如图1所示。

图1 IPv6入侵检测系统主流程图Fig.1 Main flowchart of IPv6 intrusion detection system

2 系统模块设计

2.1 数据包捕获模块

数据包捕获是入侵检测的基础,数据捕获的准确性、可靠性和效率决定了整个入侵检测系统的性能。如果数据自身不正确,系统就无法检测到某些攻击,后果不堪设想;如果数据不完整,系统的检测能力就会大打折扣;如果采集数据的延时太大,系统很可能在检测到攻击的时候,入侵者就可能已经入侵。IPv6入侵检测系统的数据包捕获是通过使用一个平台独立的网络数据包捕获开发包Libpcap来实现的。在其基础上,综合应用新应用程序接口(new application program interface,NAPI)技术和内存映射技术来提高数据包捕获的效率,达到快速捕获数据包的目的[11]。

入侵检测系统中引入了NAPI技术思想,即当数据包中的第一个数据包到达网络设备时,采用中断的方式通知系统,系统将该网络设备注册到一个设备轮询队列中,同时关闭对该设备的中断响应;激活一个软中断,对注册的网络设备进行轮询,并从中读取数据包。同时引入了配额概念,从而保证对各个网络设备的公平调度。采用NAPI技术,系统在轻负载的情况下,采用中断方式,响应速度很快;在重负载的情况下,用轮询方式,能高效处理数据包并避免中断活锁问题。

入侵检测系统中引入了内存映射技术思想,即在系统中申请一个与内核空间共享的环形缓冲区,以存放内核捕获的数据包在内存中的地址。当网络上有大量的数据包到达时,内核就不断向缓冲区中写入数据,网络数据包捕获开发包Libpcap不停地从缓冲区中读数据,数据包的读写是并行工作、互不影响的。在系统运行过程中,不需要通过系统调用从内核中获取数据包,从而消除了系统调用的开销,使得系统的处理速度加快,提高了系统性能。

2.2 IPv4/IPv6双协议解析模块

Snort系统是利用协议分析技术来实现入侵检测的[12]。本模块就是在Snort系统原有的IPv4解析模块的基础上加入IPv6解析部分,实现IPv4/IPv6双协议解析功能。协议解析为规则检测作准备,它将从链路层捕获到的二进制数据根据协议的规则性进行取值;然后根据取值实施下一步的动作,而不是简单地对整个数据包进行模式匹配,从而大大提高了入侵检测的效率和准确性。

2.3 数据包预处理模块

数据包预处理模块主要是对数据包作一些前期的处理,以便于检测模块对其进行检测和处理。预处理模块对于提高检测的准确性、检测的效率具有重要的作用[13]。Snort系统的预处理器是以插件形式存在的。系统只需要在Snort系统原有的预处理器的基础上,加入支持IPv6技术的预处理器即可。它的原理是首先在系统中建立一条预处理函数链表,然后根据系统配置文件里所需的预处理服务,将所需的处理函数加入该链表中。在进行基于规则的入侵检测前,要沿着该链表对数据包信息进行相应的处理。捕获到的数据包在经过协议解析之后,会流经数据包预处理模块,此时按链表的组织顺序与数据包进行比较,如果数据包与预处理器条件相匹配,则执行相应的预处理。

2.4 规则解析模块

规则解析模块是IPv6入侵检测系统的核心之一。该模块主要涉及规则的语法要求、规则的组织形式和新增的基于IPv6协议的规则等方面的内容。为了合理且高效地建立规则链表,规则有统一的规则语法要求。规则语法要求包括规则头和规则选项两部分内容。规则的组织形式是规则解析之后加入的规则链表的结构,由于规则链表的组织方式直接决定着入侵检测系统的效率和性能,因此,必须合理且高效地规则链表的组织形式。参照Snort系统规则解析模块,可方便地编写出相应的IPv6的入侵规则。

2.5 检测引擎处理模块

在入侵检测系统中,数据包的检测匹配函数在规则树建立的时候已经完成,所以,IPv6检测引擎可以沿用Snort系统原有的检测引擎,只需要在原有检测引擎的基础上加入部分支持IPv6协议的内容即可。但利用协议分析技术来实现入侵检测的能力毕竟有限。因此,在检测引擎处理模块上作者作了改进创新,即对检测出来的正常数据包再采用用户行为模式来甄别是否为病毒入侵,从而进行相应处理。用户行为模式的主动防御策略是系统在很长一段时间内,通过合法用户的正常操作的执行行为识别用户的执行模式。检测引擎处理模块对系统进行行为监控,并识别当前的行为模式,然后与正常用户行为模式进行比较。如果系统符合用户执行模式,则表明系统正常,继续监控;反之,则说明系统已经感染病毒。

检测引擎处理模块通过模式识别技术来实现对用户行为的分析[14],并检测是否为病毒入侵。该技术首先要收集大量已知病毒类型的训练样本,再从中提取出病毒特征值,并利用这些特征值构造出一个对未知病毒类型进行样本分类的分类器。模式识别技术原理如图2所示。

图2 模式识别技术原理图Fig.2 Principle of pattern identification technology

图2中,有甲、乙两类样本,分别用黑边方形和黑边圆形表示,每个样本的特征值是一个二维向量,X轴代表具有一种特性,Y轴代表具有另外某种特性,则构造一根决策线。此时,有一个未知类型的样本(菱形表示),由于其位于决策线上方,于是被判定属于甲类。这根决策线就是要构造的分类器。

根据此方案,首先需要收集病毒样本,然后通过监控获取其程序执行行为报告,对于用户的正常操作也截获类似的报告,再通过特征提取将报告转换为特征向量,最后构造出分类器。在这个方案中需要解决两个算法:特征提取算法和分类器构造算法。

特征提取是先构造一个嵌入函数φ。该函数将程序执行行为报告映射到高维特征空间。在文献[15]中,以特征字符串在程序执行行为报告中的出现频率来反映程序的执行特征。嵌入函数可以这样描述:假设特征字符串集合为F,程序执行行为报告的集合为X,对于特征字符串s(s∈F)和程序执行行为报告x(x∈X),记f(x,s)为s在x中出现的频率。嵌入函数φ:φ是X到‖F‖维实空间的映射,‖F‖是集合F的模,也就是特征字符串的个数。设特征集F有两个特征字符串,即F={copy_file,create_file},特征向量空间是二维的:φ(x)→[f(x,S1),f(x,S2)],其中,S1=copy_file,S2=create_file。这样,一个样本的一次执行就会被转换为一个特征向量。

在模式识别技术中,由于涉及特征选择问题,大多数情况下特征向量的维数太高,将导致计算过程特别复杂,因此,我们一般选取最具区分性的几个特征,沿用文献[15]的嵌入函数。通过嵌入函数,先把样本的特征量化成特征向量,再使用通用的分类器构造算法。具体的构造算法很多,包括决策树、神经网络、支持向量机等,本文采用的算法是支持分量机(support vector machine,SVM)技术。

整个模块在同一个虚拟环境内运行,这个过程可以通过虚拟执行技术来实现。该模块包括样本收集器模块、虚拟执行环境模块和行为分析器模块三个模块。样本收集器模块用来收集病毒样本。虚拟执行环境模块是对程序进行虚拟执行,获取其行为并生成报告。行为分析器模块一方面对训练样本虚拟执行后生成的报告进行分析,生成分类器;另一方面测试样本虚拟执行后生成的报告进行分析,生成检测报告。

病毒检测流程分为以下两部分。第一部分是行为分析器,即长期积累和更新的过程。分析器不断地更新病毒特征库,从新的病毒中不断学习其模式。这部分的执行过程是对已知病毒进行虚拟执行,得到病毒行为报告,然后据此构造分析器。第二部分是病毒检测工作,将病毒进行虚拟执行,得到病毒行为报告,然后利用构造好的分析器进行行为分析,得到病毒检测报告。

2.6 告警输出模块

IPv6入侵检测系统的输出模块和IPv4入侵检测系统差不多,基于Snort的IPv6入侵检测系统告警输出模块只需要对Snort的快速报警模块、完全报警模块、UnixSocket报警模块、SMB报警模块和记录日志模块进行改造,使之具有处理IPv6信息的输出能力即可。IPv6入侵检测系统的输出模块入口有很多,系统的不同部分会在的不同阶段使用输出模块。在协议解析阶段,数据包协议解析会使用到输出插件。在检测引擎处理阶段,如果检测到数据包满足预先定义的入侵特征,则进入输出模块,对结果进行记录并以直观的表现形式上报给管理员。

3 试验结果与分析

在Snort2.8.1系统下进行相关测试,使用Oprofile软件对系统运行过程中的中断次数和系统调用次数进行了对比。改进前后中断个数的对比结果如图3所示。对比结果表明,采用NAPI技术后,相同流量下系统中断的次数明显降低,尤其是在流量较大的情况下。这也表明NAPI技术在网络负载较小的情况下趋近于中断,而在网络负载较大的情况下趋近于轮询。

图3 采用NAPI技术前后的中断结果对比Fig.3 Inter-comparison of the interrupting results before and after adopting NAPI technology

采用地址映射技术,改进前后系统调用的对比结果如图4所示。由图4可以看出,相同流量下系统调用的次数明显减少,几乎达到可以忽略不计的程度。由此可知,内存映射技术可以大幅度地降低系统调用次数。

图4 采用地址映射技术前后的系统调用结果对比Fig.4 Inter-comparison of the system call results before and after adopting memory mapping technology

借鉴文献[16]中Rieck等人的试验方法,对设计的检测引擎处理模块进行测试。首先将收集到的100000个病毒分成10类,并按照文献[16]的标准对这些病毒进行分类处理;然后以数据库的形式建立一个规范的小型病毒库,病毒库的每一项对应一个病毒样本,包括序号、名称和家族等属性,并将所有的样本分为训练样本和测试样本。样本病毒按照90%用于训练、10%用于测试进行分配。图5所示的是采用了针对用户行为模式的主动防御策略的病毒检测系统对这10类病毒的识别率。

图5 病毒检测系统对10类病毒的识别率Fig.5 Identification rates of the virus detection system to ten categories of viruses

由图5可以看出,检测系统对病毒的识别率都在80%以上,而个别家族的识别率几乎达到100%,其中,家族1、5和10的识别率是比较令人满意的,家族2和7的结果稍逊色,还存在一定的提升空间。不过在检测引擎处理模块中会先对数据进行检测引擎处理。行为识别模式是针对未知病毒的,即可视为对未知病毒主动防御的检测结果。

4 结束语

系统在保持原有IPv4入侵检测系统引擎优点的基础上,挖掘IPv6特征,对IPv6入侵系统各功能模块进行了详细的设计[17]。新型的IPv6入侵检测系统在数据包捕获和入侵检测上作了较大的技术创新,建立了一种高效安全的IPv6网络入侵检测系统。本文对主动防御技术的研究具有一定的参考价值。

[1]Liu H,Yu L.Toward integrating feature selection algorithms for classification and clustering[J].IEEE Transaction on Knowledge and Data Engineering,2005,17(3):1 -12.

[2]褚玲瑜,吴学智,齐文娟.IPv6的安全问题探讨[J].微计算机信息,2006,22(1):10 -12.

[3]张岳公,李大兴.IPv6下的网络攻击和入侵分析[J].计算机科学,2006,33(2):100 -102.

[4]张道强,陈松灿.高维数据降维方法[J].中国计算机学会通讯,2009,5(8):15 -22.

[5]刘衍珩,田大新,余雪岗,等.基于分布式学习的大规模网络入侵检测算法[J].软件学报,2008(4):2012-2019.

[6]李振强,赵晓宇,马严.IPv6安全脆弱性研究[J].计算机应用研究,2006(11):109-112.

[7]韩东海,王超,李群.入侵检测系统实例剖析[M].北京:清华大学出版社,2002.

[8]唐正军.网络入侵检测系统的设计与实现[M].北京:电子工业出版社,2002.

[9]张建忠,徐敬东,吴功宜,等.分布式入侵检测系统研究与实现[J].计算机工程与应用,2004,40(36):160 -162.

[10]胡道元,闵京华.网络安全[M].北京:清华大学出版社,2004.

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

[12]李晓芳,姚远.入侵检测工具Snort的研究与使用[J].计算机应用与软件,2006,23(3):45 -47.

[13]扈兆明,苏志胜,赵晓宇,等.IPv6分片重组在入侵检测系统中的实现[J].现代电信技术,2005(4):45-49.

[14]Burges C.A tutorial on support vector machines for pattern recognition[J].Data Mining and Knowledge Discovery,1998,2(2):121-167.

[15]Christodorescu M,Jha S.Static analysis of executables to detect malicious patterns[C]//Proceedings of the 12th Coference on USENIX Security Symposium,2003.

[16]Rieck K,Holz T,Willems C,et al.Learning and classification conference on of malware behavior[C]//Proceedings of the 5th International Conference on Detection of Instrusions and Malware,and Vulnerability Assessment,2008.

[17]王兴柱.基于IPv6的网络入侵检测系统研究[J].微计算机信息 -管控一体化,2009,25(3-3):101-102.

猜你喜欢
数据包引擎规则
二维隐蔽时间信道构建的研究*
撑竿跳规则的制定
数独的规则和演变
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
新海珠,新引擎,新活力!
车坛往事4:引擎进化之屡次失败的蒸汽机车
C#串口高效可靠的接收方案设计
让规则不规则
蓝谷: “涉蓝”新引擎
TPP反腐败规则对我国的启示