改进的聚类算法在入侵检测中的应用

2011-12-31 00:00:00王风磊
电脑知识与技术 2011年27期


  摘要:入侵检测系统通过收集、分析网络数据,从而发现可能的入侵。数据挖掘中的聚类算法是一种无监督分类方法,可以很好地融合于入侵检测系统中。文中分析了经典聚类算法在入侵检测应用中所存在的问题,并探讨了改进方法。通过对经典关联、聚类算法的改进和优化,从而解决了聚类算法固有的无法预知最佳聚类个数和分类过细的问题,因此降低了漏报和误报率,提高了入侵检测的效率。对KDD CUP1999 数据集的仿真实验结果表明,该算法可以得到较理想的聚类,对入侵有较好的检测效果,说明该方法行之有效。
  关键词:网络安全;入侵检测;入侵防护;数据挖掘;聚类算法
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)27-6616-02
  随着网络应用领域的日益深入,网络攻击手段已经从早期的粗糙、单一的攻击模式发展今天的设计精巧、组合多步的攻击模式。目前的网络安全技术如防火墙、信息加密、作为网络安全的第一道防线是远远不能有效阻止来自网络上的入侵的。针对网络系统的攻击越来越普遍,攻击手法的日趋复杂,入侵检测技术作为网络安全的第二道防线,也随着网络技术和相关学科的发展而日趋成熟。数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但又是潜在的有用信息和知识的过程。本文运用数据挖掘中一种经过优化的基于距离的k-平均值( k-means)方法,建立入侵检测模型数据库。它的优点是能高度自动化地分析原有数据,做出归纳性推理,从中挖掘出潜在的模式,预测出客户的行为,更重要的是它能够优化或完全抛弃既有的模型,对入侵行为重新划分并用显示或隐式的方法进行描述。仿真实验表明该方法具有比一般k-means方法更强的实用性和准确度。
  1 入侵检测系统的概念
  入侵检测系统(Intrusion Detection System,IDS)是一种计算机软件系统,用于自动检测入侵行为,并收集入侵证据,为数据恢复和事故处理提供依据。有些入侵检测系统在检测到入侵特征后还试图做出某些响应,以遏制或阻止对系统的威胁和破坏。简单地说,入侵检测系统包括三个功能部件: 提供事件记录流的信息源,发现入侵迹象的分析引擎,基于分析引擎的结果产生反应的响应部件。入侵检测系统通常从计算机网络或计算机系统中的若干关键点收集入侵者攻击时所留下的痕迹,如异常网络数据包与试图登录的失败记录等信息,来分析是否有来自于外部或内部的违反安全策略的行为或被攻击的迹象。它是以探测与控制作为技术本质,起着主动式、动态的防御作用,是网络安全中极其重要的组成部分。
  上世纪九十年代中期人们提出了有一种动态防御模型PPDR(Policy Protection Detection Response),它的基本思想是:以安全策略为核心,通过一致性检查、流量统计、异常分析、模式匹配以及基于应用、目标、主机、网络的入侵检查等方法进行安全漏洞检测。检测使系统从静态防护转化为动态防护,为系统快速响应提供了依据。当发现系统有异常时,根据系统安全策略快速做出反应,从而达到保护系统安全的目的。PPDR模型由四个主要部分组成:安全策略(Policy)、保护(Protection)、检测(Detection)和响应(Response)。PPDR模型是在整体安全策略的控制和指导下,综合运用防护工具(如防火墙、身份认证、加密等)的同时,利用检测工具(如漏洞评估、入侵检测系统)了解和评估系统的安全状态,通过适当的响应将系统调整到一个比较安全的状态。保护、检测和响应组成了一个完整的、动态的安全循环。如图1PPDR模型图所示。PPDR的核心功能包括:
  1) 策略:是这个模型的核心,决定着各种措施的强度。
  2) 保护:是安全的第一步,包括制定规章制度、配置系统安全和采用安全措施。
  3) 检测:是对上述两者的补充,通过检测发现系统或者网络的异常活动,发现可能的攻击行为。
  4) 响应:发现异常或攻击行为后采取的行动。包括关闭端口、中断连接、终端服务等方式。
  2 聚类分析在入侵检测系统中的应用
  聚类算法涉及很多个领域,包括数据挖掘、统计、机器学习、空间数据库技术,目前研究重点是基于距离的聚类算法。聚类算法也是一种无指导的学习,它不像分类算法那样需要事先标记好的训练数据。
  聚类算法是将数据集按照其元素之间的相关性划分为若干簇或类的过程,使得同一聚类内的数据具有较高的相似性,而不同聚类中的数据不具有相似性。聚类的目的是使同一簇内元素间的相似性最大而不同簇之间的相异性最大。相似或者不相似根据描述数据的属性值来度量,通常使用基于距离的方法。通过聚类,可以发现数据的密集和稀疏的区域,从而发现数据整体的分布模式,以及数据属性间有意义的关联。聚类算法的输入是一个包含多个数据的数据集,每个数据通常用一个属性向量