文/滕建 赵英 陈骏君
随着互联网技术的迅猛发展,网络应用的不断扩展,网络在日常工作生活中已变得不可或缺。与此同时,针对网络的攻击也在呈几何幅度增长,给国家安全和社会经济造成了巨大的损害。面对日益频繁与多样化的网络攻击手段,如何及时、高效地发现与阻止该攻击的发生是目前亟需网络服务提供商和网络管理人员解决的问题。
目前针对网络异常检测的研究主要集中在机器学习方法和概率统计方法上。文献[1]提出一种基于改进支持向量机算法进行网络入侵检测,文献[2]采用一种改进的极限学习机方法进行检测。此类机器学习方法不仅需要大量有标记的数据作为训练样本,而且训练计算开销很大。而基于马尔科夫模型[3]的统计方法也对数据集有较高要求。
针对以上问题,本文提出一种基于时间衰减闭合频繁模式的网络异常行为检测方法。该方法通过对出口流量进行深度包检测(Deep Packet Inspection,DPI),利用计费系统认证信息识别流量所属用户,挖掘流量数据中的基于时间衰减的闭合频繁模式,利用该频繁模式来构建用户网络行为模型和进行网络异常检测。
本文提出了网络异常行为检测方法的整体流程如图1所示。该流程共分为网络流量捕获、深度包检测、用户与流量关联、闭合频繁模式挖掘、用户行为模型建立更新、异常检测、预警组成。
其中网络流量捕获通过对出口交换机作端口镜像,直接连入服务器进行数据处理。
图1 工作流程
Redis是一个开源的基于内存亦可持久化高性能非关系型数据库,具有数据结构丰富、低延时、高吞吐、纯内存等特点,适用于联机实时事务处理过程。为了加速处理速度,实现异常检测,中间数据及最终结果均采用Redis进行存储。
深度包检测基于nDPI[4],并对一些具体协议进行归类。此外在检测过程中集成IP地址与计费系统认证信息的关联,可以在检测过程中识别出流量所属用户。nDPI是一款跨平台的开源深度包检测库,具有识别速度快、准确率高等特点,被广泛用于网络流量分类和构建实验样本基准。nDPI可识别FTP、SMTP、DNS、MySQL、QQ、Skype等将近200种网络应用协议类型。
通过深度包检测为每个用户生成可供挖掘闭合频繁模式的事务集合,利用频繁模式构建、更新用户行为模型或者与已存在的用户行为模型进行匹配,判断是否存在异常流量。
为了进行异常流量检测,必须先构建正常的用户网络行为模型。此外由于用户的网络行为习惯是随时间变化的,在构建模型时必须考虑到用户行为习惯的漂移。因此,本文采用一种基于时间衰减的闭合频繁模式来构建正常的用户网络行为模型。建模完成后,对于待检测的流量,通过深度包检测等预处理后,发掘其闭合频繁项,与先前建立的用户行为模型匹配,从而判断用户流量是否正常。
闭合频繁模式
频繁模式,也称频繁项集,表示一个数据集中频繁出现、具有代表性的模式[5]。对于用户网络流量数据,一条频繁模式可以表示用户的一条网络行为习惯,通过对频繁模式的挖掘与分析,可以建立用户的网络行为模型。
通过网络流量数据的集中挖掘会产生大量的频繁模式,尤其是数据项之间存在强关联的时候。因此需要减少模式的数量,去除其中无用的、表示性弱的模式,对模式进行压缩。常见的压缩方法包括闭合频繁模式、最大频繁模式、top-k频繁模式,其中最大频繁模式与top-k频繁模式压缩效果好于闭合频繁模式,但是其会损失部分有用信息,而闭合频繁模式则去除冗余信息后包含所有模式信息,因此本文采用闭合频繁模式作为模式压缩方法。
下面给出相关概念的定义:
给定一个事务集合D ,D中包含 N 条事务,每个事务用t来表示, t∈D。 I为所有项的集合{a1,a2am},其中每个事务t是由I中不同的项组成的非空子集:{i1,i2, im},其中ij∈I,1≤j≤m。
定义1. 支持度计数:模式P的支持度计数定义为事务集合D中包含模式P的事务数据个数,记为freq(P)。
定义2. 频繁模式:如果模式P满足support(P)≥θ, 其中,support(P)为P的支持度,则称P为频繁模式。其中θ为最小支持度阈值,0≤θ≤1。
定义3. 闭合算子[6,7]:设T是事务集合D的子集,Y是I的子集,定义函数f和g:
其中函数f的输入参数是事务集合T,输出是T中所有事务都包含的一个项集。函数g的输入是项集Y,输出是包含Y的事务集。函数C = f·g = f(g)称为闭合算子。
定义4. 闭合频繁模式:如果项集P满足P= C(P),且其支持度不小于最小支持度,则称P为闭合频繁模式。
基于时间衰减的闭合频繁模式挖掘算法
用户的行为会随时间变化而不断进行改变,因此对于网络流量异常检测,当前的网络流量的重要性要大于过去时刻的网络流量,需要为当前时刻的用户行为赋予更高的权值。而对于一些小流量的异常,在某个时间段内并不会产生明显的异常特征,但随着时间的流逝,其积累效应会损害网络正常运行,因此需要考虑用户过往行为对网络的持续影响。针对以上情况,本文在CloStream[8]的基础上提出一种基于时间衰减的闭合频繁模式挖掘算法TDCloStream,通过引进时间衰减概念,既考虑了当前流量的重要性,也考虑了过往流量的累积效应的影响。
TDCloStream包含三个数据结构表,分别为ClosedTable、CidList和TransTable。ClosedTable负责存储闭合频繁模式的信息,其中每一条记录表示一个闭合频繁模式。ClosedTable包含三个字段:Cid,CP和SC。CP为频繁模式,Cid为CP的唯一标识,SC为CP的支持数。CidList用于存储数据中的项Item和其所属Cid的集合,该结构包含两个字段:Item和CidSet。TransTable存储新事务NewTran到达后需要更新的闭合模式。TransTable包含两个字段:TempItem和Cid,其中TempItem存储满足{Ti∩NewTran,Ti∈ClosedTable}条件的项集,Cid为Ti在ClosedTable所对应的标识。
为了考虑时间对频繁模式的影响,引入时间衰减因子f对ClosedTable表里的频繁模式的支持数进行更新,更新公式为:
其中P_i为ClosedTable中频繁模式,T_m为新到达事务。此外用户行为模型也通过公式(3)、(4)进行更新。
具体算法描述如下:
算法1. TDCloStream()
输入:事务集合D, 衰减因子f, 最小支持度阈值θ。
输出:闭合模式表ClosedTable。
1.Algorithm TDCloStream()
2.for tnewin D do
3.TransTable ← (tnew,0)
4.SET({t}new}) = CidSet(i1) ∪ ... ∪ CidSet(ik)
5.for each Cid i∈ SET({t}new}) do
6.S←NULL
7. S←tnew∩ ClosedTable[i].CP
8.If (S ∈ TransTable) then
9.If (ClosedTable[i].SC> ClosedTable[t].SC) then
10. Replace (S,i) with (S,t) in TransTable
11. else
12. TransTable ← TransTable ∪ (S,i)
13. end for
14. for each (X,c) in TransTable do
15. if (X==ClosedTable[i].CP) then
16. ClosedTable[c].SC =ClosedTable[c].SC×f+r
17. else
18. tmpfreq = ClosedTable[c].SC×f+r
19. if tmpfreq≥θ×N
20. j←j+1
21. ClosedTable← ClosedTable∪(j,X,tmpfreq)
22. for each i_i∈t_new do
23. CidSet(i_i)← CidSet(i_i)∪ j
24. end for
25. end if
26. end for
27. end for
28. end Algorithm
异常检测算法
对于某个用户其闭合频繁模式为{f1, f2,...,fn},记为F,频繁模式支持度分别为{sf1,sf2, ...,fn}。其用户行为模型为{m1,m2,..,mt},记为M,频繁模式支持度分别为{sm1, sm2,..smt}。设置临时变量{t1,t2,..,tt} }。异常检测算法流程如下:
设定异常阈值∂。
对于F中每一个fj,判断是否属于mi,1≤i≤t。如果属于,则Ti= Ti+ sfj。
计算相似度。
如果S≥∂,报警。
数据来源
为检测本文所提方法的有效性,抓取某大学图书馆和某实验楼各一条线路3天的流量进行实验,其中取2天数据用于构建用户行为模型,1天数据用于异常检测。流量具体信息见表1。
本文利用频繁模式构建用户网络行为模型,需要把原始网络流量转换为事务集合进行分析,为此采用深度包检测工具nDPI对流量进行处理。nDPI对具有相同五元组[9]{源IP、目的IP、源端口、目的端口、协议}的原始网络数据进行分流(Flow),识别出该流所属应用类型和其中所包含Packet的数目与大小。此外为了把网络流量与用户相关联,需要读取网络计费系统的认证信息,通过原始流量IP地址与用户建立联系(注:此处用户包含在校师生及校内服务器)。通过上述处理,可以为每一个用户建立可供闭合频繁模式挖掘的事务集合,事务集合特征见表2。由于本文所提算法的输入均为标量类型,所以对Pkts和Bytes进行离散化处理,以适应算法需求。
表1 流量信息
表2 事务集合特征
DDoS检测
分布式拒绝服务(DDoS:Distributed Denial of Service)攻击是一种传统的网络攻击方式。随着网络技术的发展,DDoS攻击的规模也逐步地增大,其破坏力也在进一步地增强。本文使用Scapy来模拟DDoS攻击验证所提方法的有效性。Scapy是一款基于python的控制网络报文的交互程序,它可以伪造、解析多种协议的报文,还具有发送、捕获、匹配请求和响应的功能。
分别在图书馆和实验楼选取1台提供Web服务的服务器,对其进行10分钟的SynFlood攻击测试。为方便统计,攻击源地址在10.47.0.1 ~ 10.69.255.254范围内随机生成,攻击源端口随机生成。经计算两台服务器的平均网络流速为9.3M/s和0.5M/s,峰值流速分别为34M/s和2M/s。本文分别模式10M/s、20M/s、50M/s的攻击速率来进行检测。实验进行5次,平均攻击流量识别准确率如图2所示,平均攻击流量识别的召回率如图3所示。通过实验结果,可以看到在三种不同攻击速率下,本文所提方法对攻击流量的识别的准确率均在91%以上,具有优秀的识别效果。此外对于攻击流量识别的召回率可以达到96%,说明该方法对攻击流量判断错误的概率很低,具有实用价值。
图2 DDoS攻击识别准确率
图3 DDoS攻击识别召回率
表3 用户行为异常检测结果
通过分析可知,由于DDoS攻击会产生大量随机源IP地址、随机端口的Flow,且每个Flow基本上只包含1至5个数据包,会产生支持度很高的小包数、高速率、目的端口为80的模式,所以会产生良好的检测效果。
此外该方法对其他形式的DDoS攻击如AckFlood、HTTP GET和网络端口扫面也有较好的检测效果。
用户异常行为检测
除去网络安全层次的异常检测,本文所提方法对使用层次上的异常行为也有较好的检测效果。经统计表明,短期内用户在使用网络时的行为不会发生较大幅度改变。基于此结论,本文方法检测用户使用层次上的异常可用于检测账户盗用和恶意程序的网络行为。
为了验证使用层次上异常检测的有效性,在图书馆和实验楼中分别随机选取150名个人用户及其用户行为模型进行实验。在实验前,手动把图书馆人员的行为模型依据实验楼人员工号设为实验楼人员用户行为模型,实验楼行为模型做相反处理。实验结果见表3。结果表明该模型对于用户使用上的异常有较好的检测效果。
本文提出了一种基于时间衰减的闭合频繁模式的网络异常行为检测方法,该方法通过对原始网络流量进行深度包检测,随后关联计费系统的认证数据生成事务集合,通过挖掘网络事务集合中闭合频繁模式,构建用户行为模型和进行网络异常检测。本文所提方法不但对DDoS、端口扫描等网络攻击具有良好的检测效果,还能识别用户使用层次上的异常,例如账户盗用等,该方法具有较高的实用价值。通过用户行为模型的建立,不但可以用于异常检测,也可以为学校决策支持平台提供依据,如用户上网习惯安排网络出口线路、与用户成绩相关联进行学业预警等。该研究内容和方法具有很强的使用价值和广泛的应用前景。
[1]Kuang F, Zhang S, Jin Z, et al. A novel SVM by combining kernel principal component analysis and improved chaotic particle swarm optimization for intrusion detection[J]. Soft Computing, 2015, 19(5): 1187-1199..
[2]Singh R, Kumar H, Singla R K. An intrusion detection system using network traffic profiling and online sequential extreme learning machine[J]. Expert Systems with Applications, 2015, 42(22): 8609-8624.
[3]Xie Y, Yu S Z. A large-scale hidden semi-Markov model for anomaly detection on user browsing behaviors[J]. IEEE/ACM Transactions on Networking (TON), 2009, 17(1): 54-65.
[4]Deri L, Martinelli M, Bujlow T, et al. ndpi: Open-source high-speed deep packet inspection[C]//Wireless Communications and Mobile Computing Conference (IWCMC), 2014 International. IEEE, 2014:617-622.
[5]Aggarwal, Charu C., and Jiawei Han, eds. Frequent pattern mining. Springer, 2014.
[6]Yen S J, Wu C W, Lee Y S, et al. A fast algorithm for mining frequent closed itemsets over stream sliding window[C]//Fuzzy Systems (FUZZ), 2011 IEEE International Conference on. IEEE, 2011: 996-1002.
[7]韩萌, 王志海, 原继东. 一种基于时间衰减模型的数据流闭合模式挖掘方法[J]. 计算机学报,2015(7):1473-1483.
[8]Yen S J, Lee Y S, Wu C W, et al. An efficient algorithm for maintaining frequent closed itemsets over data stream[J]. Next-Generation Applied Intelligence, 2009: 767-776.
[9]Zhao Y, Chen J, You G, et al. Network Traffic Classification Model Based on MDL Criterion[M]//Advanced Multimedia and Ubiquitous Engineering. Springer Singapore, 2016: 1-8.