钱峰
中共无锡市惠山区委党校 江苏 214177
由于入侵检测本质上是个数据处理过程,而数据挖掘技术能从大量数据中发现潜在有用的知识,所以数据挖掘应用到入侵检测中的优势是显而易见的。而网络中的数据属于数据流形式,不同于传统的基于集合的相对静止的数据。数据流是频繁变化的,数据量事前是不确定的,也可能是无限的。归纳起来,数据流的数据流挖掘就是在流式数据上发现提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。一个数据流挖掘模型处理的数据不再是从磁盘和内存中随机访问读取的数据,而是一个或多个连续的、无穷的数据项组成的序列,涉及到动态更新,增量式挖掘等问题。
尽管基于数据挖掘的入侵检测研究取得了许多理论成果,也有一些系统在实际中得到了一定程度的应用,但是,这一研究领域依然存在着许多有待解决的问题,有待于进一步完善:高误警(误报)率、需要大量的审计数据,学习过程慢、对未知攻击的检测不够理想、处理速度上的瓶颈、将技术应用于设计仍存在困难。
本文首先简要介绍了移动窗口的工作原理,加权的移动窗口概念及原理,并将加权移动窗口的方法应用于入侵检测,给出初步的基于加权移动窗口入侵检测模型系统,能够很好的分析动态数据流,重点监测指定窗口,提高了网络的安全保障效率。
移动窗口技术是指随时提供N个时间段的信息,每当有新的数据到来时,“窗口”前滑,将最新的时间段内的数据包含进去,把窗口内最旧的时间段内的数据丢弃,窗口的大小保持不变。
一个重叠移动窗口,只使用当前窗口内的审计数据更新正常行为简档,由此过滤掉过时的数据,以反映最近的网络系统行为。同时维护两个项目集,频繁集(具有高支持度和置信度)和负边际(支持度和置信度低于阈值,但非常接近)。
加权移动窗口算法假设移动窗口的大小为w,在任意时间点n(当前时间戳),移动窗口模型查询范围是{amax(0,n-w+1), … ,an}。时间点max (0,n-w+1)之前的数据全部忽略不计。随着数据的不断到达,窗口中的数据也不断平移。
项集是一组项目的集合。如果一个项集的加权支持频度大于或等于最低加权支持频度,一个大小为k的项集称为k-项集。假设窗口数是n,一个窗口的大小记做t,当前时刻为Ti;项集中的项为别为x1,x2,…,xk。只考虑在Ti和(Ti-n*t)时间范围内的事务。SPij({x1,x2,…,xk})表示事务的标识符集合,这里的事务指包含出现在窗口Wij(1≤j≤n)中项集{x1,x2,…,xk}的事务。CSi({x1,x2,…,xk}) 是SPij({x1,x2,…,xk})(1≤j≤n)的并集;αj表示wij的权重;|SPij({x1,x2,…,xk})|代表SPij({x1,x2,…,xk})中事务标识符的数量。
定理2 备选k-项集(k≥2)的集合Ck定义如下:
Ck={{Xp[1], Xp[2], …, Xp[k-1],Xq[k-1]}| Xp∈ Lk_1∩Xq∈ Lk_1∩Xp[1]= Xq[1],Xp[2]= Xq[2],…,∩Xp[k-2]=Xq[k-2] ∩Xp[k-1] 只查找一次数据库,当一个备选项集c生成时,我们可以通过审核SPij的值来判断其是否是频繁项集。假定c由频繁项集Xp和Xq生成,则SPij(c)=SPij(Xp)∩SPij(Xq)。 为了提高入侵检测的效率,本文提出了一种基于加权移动窗口技术的入侵检测系统模型,如图1所示。 图1 基于加权移动窗口的入侵检验系统模型 该模型主要包括数据采集, 模式生成及更新,入侵检测,响应等几部分组成。其中在模式生成及更新部分采用了加权移动动窗口和数据挖掘技术,从而能及时发现数据流的概念漂移,并更新相应的模式。系统分为建模和检测两个阶段:建模阶段包括对系统和用户的正常行为建模和对攻击行为建模,首先在没有入侵的纯净数据集上用最大频繁项集来建立网络系统和用户的正常行为模型,然后在含有入侵行为的训练数据集上,通过加权移动窗口来捕获短时间内发生的频繁事件,建立攻击模型。检测阶段则是用在建模阶段得到的系统和用户正常行为模型和攻击模型对加权移动窗口中的频繁记录进行标记,用其监视网络流量数据,将最大频繁项集算法应用于网络流量数据上,找出其中异常频繁的项集,与正常行为模型和攻击模型进行比较。将含有攻击模式的记录标记为攻击记录,将频繁项集被正常行为模型完全覆盖的记录标记为正常记录,将正常模型和攻击模型都不能确认的频繁项集的记录标记为可疑记录,将不含有任何频繁项集的记录标记为低频记录。可疑记录将由用户判定它是正常的还是异常的,低频记录做进一步的分析可以发现是否有慢扫描类的攻击,对入侵攻击行为进行自动的响应。这样反复从加权移动窗口获取最近的数据样本来重建分类模型,使用最新的模型为下次模型重建期间的样本进行分类,并暂存最新的分类结果以便为下次模型重建提供训练样本。 本系统主要包括三个模块:历史数据处理模块、实时数据处理模块、检测响应模块。各模块的功能如下: (1) 历史数据处理模块 该模块主要功能是对用户的历史数据进行数据挖掘,从而形成基于分类规则和行为规则的知识库。 用户历史数据是在过去一段时间内采集的网络数据,在试验中可采用相关网站下载的数据(如美国DARPA入侵检测评估数据);将它输入到分类器的历史数据类标号已知,输入到关联/序列模式挖掘的历史数据正常行为已得到确认。历史数据经过过滤、转换形成训练数据集,经过数据预处理后,一方面通过分类器形成判定误用检测的分类规则;另一方面通过关联/序列模式挖掘形成用户的正常行为规则。再将两方面的规则合并,形成入侵检测判定的知识库。 (2) 实时数据处理模块 该模块首先是获取网络实时数据,并进行预处理,然后一方面通过数据挖掘,形成用户的正常行为规则,并与历史数据的正常行为规则进行比较,若为新规则就补充到知识库中;另一方面通过简单规则检测引擎进行快速检测,判定有无入侵,然后再通过知识库进行入侵检测的判定。 (3) 检测响应模块 检测模块对来自数据采集模块传送过来的数据进行处理和分析,是整个入侵检测系统的核心,关系到整个入侵检测系统运行效率的好坏。它主要是根据知识库对实时数据进行入侵检测的判定,并做出响应;判定后的数据送到存储系统,并通过实时控制实现对历史数据的动态更新,实现了系统的自学习能力及智能检测的功能。而结构中应设立定时器,目的是为避免历史数据的频繁更新带来频繁的数据挖掘、浪费系统资源的问题。 用户正常行为模型的建立是训练阶段的一项重要内容。设R0是与连接记录的框架一致的、标记label全为0的纯净历史数据集。我们以R0上的最大频繁项集的集合m作为系统的正常行为模型。随着系统中已有的用户离开,或者新的用户加入进来,系统和用户的正常行为模型也会发生相应的变化。因此,数据集R0需要周期性地更新,以及时反映系统和用户正常行为轮廓的变化。设1ε是正常频繁行为的最小支持度阈值,取百分比形式的相对支持度定义。mi是 模式Pi的所有项集的集合(1≤i≤7),m是数据集R0上的最大频繁项集的集合。 计算m的算法的基本思想是: Step1:扫描计数。扫描数据集R0一遍,检查每条连接记录r中的模式ri。 Step2:如果ri已在mi中,则其支持度计数加1;否则,将其支持度计数初始化为1,并将ri加入mi中。 Step3:检查支持度,得到频繁项集的集合。对mi(1≤i≤7),删除其中支持度计数小于最小支持度阈值的元素,于是得到频繁模式Pi(1≤i≤7)的所有频繁项集的集合mi。 Step4:剪枝。对m7中的每个元素p,在mi(1≤i≤6)中查找p的子模式项集sub(p)。如果存在则删去mi (i=1,2,...,6)中对应项。同理,对m6查找m1,m2,m3,对m5查找 m3,对m4查m1,m2,对m2查m1,作相应处理。最后得 m为m1,m2,... ,m7的并集。 伪码如下: 攻击模型的建立是训练阶段的另一项重要内容。设R′是与数据集R0结构相同的取自连接记录的训练数据集,R′中含有攻击行为的数据,含有攻击的连接记录其标记label为1(也可用不同的标记区分不同类型的攻击)。设ε2是异常频繁行为的最小相对支持度阈值。用加权移动窗口滑过R′,取窗口中达到异常频繁行为最小支持度阈值ε2的频繁模式来建立攻击模型。设m是R′上由加权移动窗口移动所得到的最大频繁项集的集合,训练之初,m=ø。设m是当前窗口w中的最大频繁项集的集合,m代表了当前窗口中所有的频繁出现。对于任意元素p∈m,p有3种可能性:p是m已经记录的攻击模式,p是被m覆盖的正常模式,或者,p是m中尚未记录的攻击模式。于是通过当前窗口中的m来更新攻击模型m。建立攻击模型的过程是一个加权窗口移动的过程,主要包括对攻击模型m的更新和加权窗口移动处理两部分。 (1) m的更新 对于任意元素p∈m,由于p是最大频繁项集,因此,如果p能被系统正常行为模型中的某一个模式完全包含,那么,p所代表的所有频繁出现均在m许可的范围内,p与攻击模型m的更新无关。如果p中包含着一个已知的更短的攻击模式ˆp(ˆp∈m),说明已存在的ˆp较之p是更为核心的攻击特征,p对m的更新无益。相反地,如果p为一个已知攻击模式ˆp所包含,则用p取代m中的ˆp,成为更为核心的攻击模式。如果p与m中任何模式不存在包含关系,则p对m来说是新的攻击模式,将其添加到m中。 (2) 窗口的滑动 设w′是继w后的下一个窗口。由于连接记录在时间上并不是均匀分布的,因此,加权窗口移动一个时间步长过程中,可能并没有连接记录,或者,在新的窗口中可能并没有包含任何新的记录,窗口并没有真正移动,甚至,在某些时间区间上,整个时间窗口中都可能不包含任何记录。那么,则以单位时间继续滑动,直至新窗口w′中包含新记录。在新窗口w′中重新求m,直至滑过整个R′。 目前基于数据挖掘的入侵检测研究方法已成为了一个研究热点,在这个领域已经有了许多相关论文,但主要集中在引入数据挖掘中的关联规则和聚类等方面的内容。采用移动窗口的入侵检测渐渐开始受到注目,本文加权移动窗口算法基础上,设计了相关的入侵检测系统,通过用加权移动窗口算法判断数据中的频繁项集来检验异常的网络状况,获得攻击者入侵信息,给出了该入侵检测系统的模型及功能说明。 [1] M·Garofalakis.J.Gelirke and R.Rastogi.Querying and Mining Data Streams:You Only Get One Look [C].In the tutorial notes of VLDB.2002. [2] L.Golab,M.T.ozsu. Issues in Data Stream Management[C].In Proc.Of ACM SIGMOD.2003. [3] L.Golab,M.T.ozsu.Data Stream Management Issues—A survey[R].Technical Report,CS2003-08 University of Waterioo. [4] P.B.Gibbons,Y.Matias.Synopsis Data Structures [C].In Proc.Of SODA.1999. [5] 方金和,冯雁,王瑞杰.基于数据挖掘的自适应入侵检测研究[J].计算机工程与应用.2006. [6] 崇志宏.基于屏蔽/汇总技术的数据流处理算法[D].复旦大学.2006. [7] 潘立强,李建中,王伟平.数据流上加权共享滑动窗口听连接查询处理算法.计算机工程与应用.2005.2 基于加权移动窗口入侵检测模型结构
2.1 系统模块功能
2.2 用户正常行为模型的建立
2.3 攻击模型的建立
3 总结