基于数据挖掘技术的Snort检测系统模型

2010-03-16 07:43郎振红
关键词:数据包数据挖掘规则

郎振红

(天津电子信息职业技术学院,天津 300132)

据不完全统计,中国互联网络信息中心(CNNIC)于2008年7月发布的《第22次中国互联网络发展状况统计报告》显示,截至2008年6月底,仅我国网民数量就高达 2.53亿。而且,截至2004年12月底,我国上网的计算机总数达到4160万台,从1997年到2004年,仅在七年之内,计算机上网总数增长了139倍。并且网络的应用领域已由最早的信息浏览发展到网络银行、电子商务、电话会议等应用服务。因此,随着日益庞大的网络规模以及多样化的网络服务,网络的安全机制受到新的挑战。由于网络中恶意或无意的攻击手段变得越来越隐蔽,对系统的破坏威力越来越大,就目前网络用户经常使用的防火墙、防病毒软件、加密技术以及数字签名技术等安全防护措施在应用中表现出各自的弊端。为了弥补以往安全防护措施的不足,诞生了一种崭新的安全保护机制——即网络入侵检测技术。将网络安全的防护手段由消极被动的防御变为积极主动的检测与预防,在不影响网络性能的前提下,可以实时保护系统免受来自于内部的攻击或外部的攻击。

1 入侵检测系统模型的分析

所谓入侵检测(Intrusion Detection)是指对入侵行为的发觉,它通过对计算机网络或计算机系统中的若干关键点收集信息并对其加以分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象[1]。为了更好地对网络入侵行为进行有效地检测与分析,自从1984年乔治敦大学的Dorothy Denning和SR/ICSL(SRI公司计算机科学实验室)的PeterNeumann研究出一个实时入侵检测系统模型,命名为IDES(入侵检测专家系统)以来,相继开发出大量的入侵检测系统(Intrusion Detection System,IDS),将入侵检测的相关软件与硬件设备进行有效的结合,即防火墙之后的第二道安全屏障,是防火墙系统的有利补充。

通常根据IDS检测对象及检测方法的不同,可以细分为:基于主机的IDS、基于网络的IDS、混合方式的IDS、基于误用检测的IDS和基于异常检测的 IDS等。目前使用最广泛的是由 Sourcefire公司MartinRoesch等人开发的Snort入侵检测系统,它是一个免费开放源代码的网络入侵检测系统(NIDS)。Snort以其发展速度、检测功能、结构简单、高效的代码、多样化的插件机制等优势受到业界人士及众多学者的亲昧。而且许多公司为了满足不同网络的安全需求,已经在Snort系统的基础之上进行了二次开发,本文就是一个基于Snort系统的二次开发应用实例。

Snort系统主要有6个组件构成,分别是:包嗅探器、解码器、预处理器、检测引擎、输出插件和规则库等。其系统结构如图1所示。

图1 Snort系统结构Fig.1 Snort system structure

Snort系统的基本工作过程是,利用包嗅探器捕获网络中的数据包将其送到解码器,把特殊的协议元素转换成特定的数据结构;经过预处理器调用预处理函数完成数据包的预处理操作,改进的Snort系统可以嵌入某些外部的预处理程序,提高系统的检测功能;随后将数据包传递到检测引擎组件,与事先设置好的规则库进行模式配合,如果匹配成功,则说明发生了入侵行为;及时将报警信息及审计日志提交输出插件,利用输出函数输出相关信息。由此可见,Snort是一个基于误用检测的NIDS,系统运行成功与否的关键点就是规则库的信息实时更新与扩展机制问题,这也是本文所要探讨的问题。

2 数据挖掘技术

数据挖掘(Data Mining,DM)的定义有广义与狭义之分[2],从广义的观点上讲,数据挖掘是从大型数据库(可能是不完全的、有噪声的、不确定性的、各种存储形式的)中,挖掘隐含在其中的人们事先不知道的对决策有用的知识的过程。从狭义的观点上讲,可以定义数据挖掘是从特定形式的数据集中提炼知识的过程。因此,数据挖掘的功能是从大量的数据信息中进行高度智能化的分析与推测,挖掘出潜在的知识与数据模型,预测未来对象的行为模式。

WenkeLee在1999年首次将数据挖掘技术引入到了网络入侵检测系统中,可以在入侵检测过程中实施智能化的信息分析以及动态更新规则库,实现对于未知入侵行为的有效检测。在数据挖掘算法中应用广泛的算法有:关联分析算法,可以用于挖掘关联模式,描述入侵行为并进行异常检测[3];序列分析算法,通过描述发现数据的先后关系,挖掘出序列模式[4];分类分析算法,该算法可以用于构造分类器[5],分类器经过大量的入侵数据集训练之后可以用于入侵检测;聚类分析算法,可以用于构造网络正常行为模式或入侵行为模式[6],进行异常检测。本文着重介绍如何利用数据挖掘技术对捕获信息进行二次检验,以便减少系统漏报率,提升对新入侵行为的检测效率。

3 基于数据挖掘的 Snort系统模型的设计

通过上述分析可以得出如下的结论,Snort系统存在的最大问题是,无法检测到未知类型的入侵行为,系统的检测能力受到规则库信息量大小的限制,因而造成系统出现极大的漏报率与误报率,影响系统的整体性能。

针对已存在的Snort系统进行多方面的改进,所提出的基于数据挖掘技术的Snort检测系统模型如图2所示,该系统的具体设计思想如下:

(1)利用嗅探器捕获正在网络中传输的数据包,并且嗅探IP网络的流量,该系统利用libpcap捕包程序库函数实现数据信息的采集,该库函数的最大功能之一就是将网卡设置为混杂模式后,就可以直接从数据链路层捕获数据包,或直接从网卡获取数据包,为下一步的解码操作提供了数据信息。

(2)将利用嗅探器获取的数据包送入解码器进行数据解析,在解码器中根据 TCP/IP的层次,有针对性地对数据包进行分析、解码等操作,将进行解析后的数据包信息传入到预处理器。

图2 基于数据挖掘的Snort系统模型结构图Fig.2 Based on data mining Snort system model

(3)在预处理器中,将采用不同网络协议的原始数据包进行预处理,可以实现应用层协议的某些附加操作以及数据包再次被分析等功能,以便提高检测引擎的处理速度。预处理器通常是由功能各异的多个模块组成,在实际的应用中,可以将其以插件的方式友好地集成到Snort系统中。本文所讨论基于数据挖掘的Snort检测系统,将预处理后的数据包信息在送入异常检测的同时,存储到信息待处理数据库,主要目的是为了与正常数据信息库中的内容配合进行异常数据挖掘操作。

(4)异常检测引擎

异常检测的依据主要来源于正常行为模式规则库,该模式库的信息是在正常数据库的信息基础上利用关联数据挖掘算法、序列数据挖掘算法和聚类数据挖掘算法进行正常行为模式的数据挖掘,实时更新正常行为模式规则库。因此,Snort检测系统实施检查之前,已知检测规则全部设定好,可以用于检测用户所有的正常行为,但是对于正常行为模式规则库中没有的规则项,在此无法检测出来,为了避免系统的漏报率,将未知入侵的数据传输到误用检测引擎模块。

(5)误用检测引擎

误用检测引擎又称Snort检测引擎,它是该系统的设计核心,在进行检测过程中,将Snort检测规则组织成链表形式,其中将每一个链表项细分为规则头和规则选项。在进行规则模式匹配时,误用检测与Snort规则数据库中的内容进行模式匹配,起初只检测Snort规则数据库中设定好的规则项,如果检测结果出现规则匹配,则将其检测结果输入已知入侵数据库,入侵信息被记录后,直接送入报警系统,提示用户;否则,没有检测到匹配的模式,系统并没有将入侵信息进行简单的丢弃,而是从信息待处理数据库与正常数据信息库中提取数据,进行异常数据信息挖掘,将数据挖掘的结果直接输入到异常数据信息库,根据信息库中的频繁项集再次进行数据信息挖掘,生成新的入侵规则,更新Snort规则数据库,然后再进行误用检测,与此同时,将入侵检测的新规则送入正常数据信息库,与该信息库中的频繁项集再次进行正常行为的数据挖掘,从而更新正常行为规则模式库,为下次检测做准备,此时就实现了入侵信息的二次检测,可以大大减少漏报率与误报率。

4 基于数据挖掘的 Snort系统模型的实现

系统主要是在 Snort系统的基础之上进行改进的,通过互联网下载了一个最新版的 Snort入侵检测系统Snort2.8.1,部署到Windows2003操作系统的平台上,进行系统的开发与检测运行。在开发的过程中用到的组件有:(1)WinPcap:网络数据包的捕获工具,其主要功能为Win32应用程序提供访问网络底层的能力,随时监听网络上传输的数据信息,以更高的效率捕获数据包。(2)MySQL:本系统中用于存储各种数据信息的数据库采用MySQL数据库,连接技术采用ADODB技术,从技术可行性和经济可行性上讲,该数据库都可以有效地支持快速、稳定的分布式检测操作。(3)Visual C++:该系统的开发设计语言与数据挖掘规则算法语言采用的是面向对象程序设计语言 VC++,通过编辑信息更新函数、连接用户函数、检测入侵信息函数等实现Snort的二次入侵检测操作。(4)ACID:主要是用来分析入侵数据是已知规则还是未知规则,从而将正常数据与可疑数据分离,进行数据信息的挖掘和生成新的规则信息,在实现过程中主要利用php语言所编辑的动态网页形式反映给用户,实现人机互动。(5)Apriori:该算法是数据挖掘中的关联规则挖掘算法,本系统是在Apriori算法的基础上进行了必要的改进,使之实现对原始数据、正常数据、异常数据等信息的规则挖掘。(6)Apache:该系统服务器软件采用的是基于Web的Apache,它以其简单、快速、兼容、稳定、安全等特点而著称。

5 结束语

系统是在构建了一个C/S模式的局域网中进行结果检测,为了能够更好的说明系统的检测效果,采取了对比的方式进行测试。先用普通的Snort系统进行检测,并记录相应的检测结果,然后安装并配置基于数据挖掘技术的Snort检测系统,同样记录检测结果。通过数据的逐一对比,不难发现,系统检测的总耗时有所减少,检测的正确率却大幅度地提高,并且系统的漏报率也有明显地下降。在实验中还有一个更有意义的发现,随着检测数据量的增大,上述的检测结果更为明显。

本文是在已有检测系统的基础上,通过应用数据挖掘技术,增加了新功能,实现了实时更新规则信息和对未知数据的二次检测,从而降低了系统的漏报率与误报率。但是,在检测效率及进一步减少漏报率与误报率的数据挖掘算法上还有待于改进。

[1]唐正军,李建华.入侵检测技术[M].北京:清华大学出版社,2004.

[2]毛国军,段立娟,王实.数据挖掘原理与算法[M].北京:清华大学出版社,2005.

[3]陈耿,朱玉全,孙志辉.一种基于异常检测的关联模式挖掘模型[J].计算机工程与应用,2004,40(12):158-198.

[4]宋世杰,胡化平,胡笑蕾.数据挖掘技术在网络型异常入侵检测系统中的应用[J].计算机应用,2003,23(12):20-23.

[5]宋世杰,胡化平,胡笑蕾.数据挖掘技术在网络型异常入侵检测系统中的应用[J].计算机应用,2003,30(16):126-127.

[6]张博,李伟华,布日古德.数据挖掘中的关联规则在入侵检测系统中的应用[J]. 航空计算技术,2004,34(4):124-127.

[7]孙振龙,宋广军,李晓晔,等.基于数据挖掘技术的Snort入侵检测系统的研究[J].微计算机信息,2006,33:16-22.

[8]崔冬霞.基于数据挖掘技术的分布式网络入侵检测系统[D].西安交通大学硕士研究生学位论文,2005.

[9]王艳春,郭小利,陈鸿,等.基于数据挖掘算法的教学评测系统研究[J].长春理工大学学报,2006,29(4):73-76.

猜你喜欢
数据包数据挖掘规则
撑竿跳规则的制定
基于Jpcap的网络数据包的监听与分析
数独的规则和演变
探讨人工智能与数据挖掘发展趋势
SmartSniff
让规则不规则
基于并行计算的大数据挖掘在电网中的应用
TPP反腐败规则对我国的启示
一种基于Hadoop的大数据挖掘云服务及应用
基于GPGPU的离散数据挖掘研究