基于聚类的应用层DDoS攻击检测方法
2021-10-15张志源
张志源
(晋城职业技术学院,山西 晋城 048000)
1 引言
2020年,全球突发新冠肺炎疫情,抗击疫情成为各国紧迫任务。在疫情防控相关工作领域,大量新型互联网产品和服务应运而生,在助力疫情防控的同时也进一步推进社会数字化转型。与此同时,安全漏洞、数据泄露、网络诈骗、勒索病毒等网络安全威胁日益凸显,有组织、有目的的网络攻击形势愈加明显,为网络安全防护工作带来更多挑战。2020年我国互联网网络安全态势报告[1]指出,2020年我国境内目标峰值流量超过1Gbps的大流量分布式拒绝服务攻击(DDoS攻击)事件异常活跃,与2019年相比,攻击资源向境外迁移趋势明显。DDoS攻击行为主要集中在OSI参考模型的应用层和传输层,通过在短时间内与目标服务器建立大量连接,达到过度消耗目标服务器的计算资源、存储资源和带宽资源,最终导致网站瘫痪,无法为正常用户提供访问服务。因此,近年来针对应用层DDoS攻击的检测方案逐渐成为研究热点,具有一定现实意义。
2 相关研究
2.1 分布式拒绝服务(DDoS)攻击
DDoS攻击是指在攻击主机的控制下,由分布在不同地理位置的傀儡机同时向目标服务器发起请求,合法请求被“淹没”在攻击请求中,目标服务器忙于处理无效请求而无法对合法用户提供正常服务,当攻击速率达到一定程度时,目标服务器就会宕机。常见的DDoS攻击的网络拓扑结构如图1所示。
图1 常见DDoS攻击拓扑结构图
由上述定义可知,DDoS攻击的完整网络拓扑结构由攻击者、受害者和傀儡主机三部分组成。其中,攻击者(Attacker)是真正的“幕后指使者”,他操作主控机向数量庞大的傀儡机“发号施令”,进而达到攻击目标服务器的目的。受害者(Victim)通常是指被攻击的一方,例如:Web服务器、DNS服务器、E-mail服务器等。傀儡机(Puppet)也是受攻击者Attacker控制的一方,大部分情况下是普通PC,而不是Server,表面上看来它好像是整个DDoS攻击的发起者,但实际上他是在攻击者Attacker的控制下,接收攻击者Attacker发送的指令从而对受害者Victim发动攻击。
2.2 应用层DDoS攻击检测方法
根据检测策略的不同,针对DDoS攻击的检测方法分为误用检测、异常检测和协议分析三大类[2]。其中,异常检测方法时按照正常访问行为和异常访问行为之间的差异来识别攻击行为,它既可以用于检测已知攻击,也可以检测新型攻击行为,这是异常检测方法的优势,该方法的不足之处在于误报率较高,因为无法描述攻击特征,进而不能建立正常访问行为模型。
国内外学者在应用层DDoS攻击检测方面做了大量工作,主要是基于数据挖掘、人工智能、信息熵、统计学、模式预测等技术。其中,景泓斐[3]等人提出了基于BP神经网络的应用层DDoS攻击检测方法,该方法对CC攻击具有较高的检测率;张大卫[4]等人提出了一种基于K均值算法的检测方案,该方案对于DNS放大攻击的检测率更高,错误率更低。
2.3 数据挖掘算法
K-Means是一种经典的使用广泛的聚类方法[5],时至今日仍然有很多基于其的改进模型提出。K-Means的思想很简单,对于一个聚类任务(你需要指明聚成几个类,当然按照自然想法来说不应该需要指明类数,这个问题也是当前聚类任务的一个值得研究的课题),首先随机选择K个簇中心,然后反复计算下面的过程直至所有簇中心不再改变(准则函数收敛),准则函数如公式(1)所示。
其中,mi表示簇Ci的中心,m表示聚类对象中的某个对象。
本文在K-Means算法的基础上,利用粒子群算法全局搜索能力较强的特点来优化K-Means算法的初始聚类值,克服了K-Means算法易陷入局部极值的缺点,进而提高异常检测方法的检测性能。
3 检测方法
本文主要提出了一种基于粒子群优化的K-Means的异常检测方法,该方法如图2所示。从图中可以看出,首先从Web服务器端采集正常的用户访问网络流量,经过聚类学习后形成聚类检测模型,然后输入混合网络流量,即:攻击流量+正常流量,提取流量特征后作为聚类检测模型的输入,根据距离进行检测,如果归入正常聚类簇,则说明是正常流量,否则就是攻击流量,以此作为检测结果的输出。
图2 异常检测方法示意图
3.1 数据预处理
数据预处理完成的主要工作是从网络流量中获取HTTP请求信息,然后以固定的时间窗口(T=1s)为单位提取出4个属性,包括CN、源IP地址空间、URL长度、HTTP请求速率,组成流量特征向量,作为聚类学习和聚类检测的输入,这些流量特征属性包括:
(1)CN:单位时间内捕获到的HTTP请求数。
(2)源IP地址熵值H(SIP):计算HTTP请求中的源IP地址熵值。当出现DDoS攻击时,H(SIP)值会显著增大,如图3所示。
在接受经阴道二维腔内超声检查后有10例对象被诊断为耻骨直肠肌损伤,而接受经阴道三维超声检查后显示有12例对象存在耻骨直肠肌损伤,相关数据对比后χ2为0.202,P=0.653>0.05,差异不存在统计学意义。与此同时,有20例对象出现了肛门括约肌损伤。
(3)URL的熵值H(URL):计算HTTP请求中的URL熵值。当出现Single-URL攻击时,熵值显著变小;当出现Random-URL攻击时,熵值显著变大,如图3所示。
图3 H(SIP)和H(URL)变化图
(4)HTTP请求速率ANRC[6]:目标服务器在单位时间内收到的平均请求次数。当出现攻击时,该值会明显增大。
在上述流量特征属性中,信息熵[7]H(SIP)和H(URL)的计算是通过公式(2)计算出来的。
其中,x为源IP地址/URL的状态空间,Pi为每个IP/URL出现的概率,且满足。
3.2 攻击检测
本阶段完成的主要工作是以3.1节中提取的流量特征向量作为输入,利用粒子群算法优化的K-Means算法进行聚类学习,并产生正常聚类结果,后计算待检测流量特征向量与各个正常聚类之间的距离,如果此距离在所有正常聚类范围之外,那么该特征向量被判定为异常,即:识别到了一次攻击行为。
粒子群优化的K-Means聚类算法的主要流程如下:
(1)对聚类数k值进行编码。苏守宝[8]等人已证明聚类最优时k的最大值为(n为样本总数),因此k的取值范围是。
(2)初始化粒子群化。随机产生包含40个粒子的种群,设置学习因子c1=c2=1.2,惯性权重因子ω=0.8,迭代次数T=100。
(4)对粒子进行适应度计算。
(5)对每个粒子的速度和位置进行更新。根据公式(3)和公式(4)对粒子进行调整,其中,vid(t)表示粒子当前的速度,ω表示粒子飞翔的惯性系数,rand()为随机函数,xid(t)为粒子当前的位置。
结束条件:如果种群中的准则函数MSE收敛,则停止循环,MSE由2.3节的公式(1)计算;否则重复过程(3)~(5)。
接下来,输入待检测流量特征向量,通过计算其与各聚类的距离来判断是正常还是异常,并给出检测结果。
4 实验结果与分析
本实验搭建了一个小型局域网,局域网中被攻击的服务器称作victim,Operating System为Linux,内存大小为4G,服务器软件版本为Apache-2.4.3。本文利用ddos simulator软件来模拟应用层DDoS攻击,攻击类型包括有效请求的HTTPGet和无效请求的HTTP-Get,攻击原理是通过控制僵尸主机在短时间内向victim发送大量HTTP-Get数据包。
4.1 实验数据处理
本文首先采集校园网某WEB服务器近一个月的HTTP请求作为正常数据,通过tcpwrite软件任选24小时数据重现给victim。其中,前16小时的HTTP请求用来建立检测模型,后8小时的HTTP请求用来检测攻击行为。为了检验这种检测方法的效率如何,在实验的后8小时内,通过局域网内多台僵尸PC对victim发动8次DDoS攻击,攻击速率(单位是packets/s)分 别 为(50,200,500,1000,2000,3000,4000,5000),相邻两次攻击时间间隔为2分钟,并记录每次攻击。
首先利用数据包捕获工具Wireshark从victim服务器镜像端获取24小时的HTTP请求数据包,这些数据经过3.1节的数据预处理后,以10s为单位提取网络流量特征,经过处理后的流量特征向量如表1所示。
表1 流量特征向量
接下来,本实验将预处理过的前16小时数据进行训练学习,训练集大小为5760条记录。然后,将剩下的8小时数据作为8组测试数据集对待,并记录输出结果(检测率),即:DDoS攻击数据记录为432条。
4.2 实验结果对比分析
通常情况下,一个算法性能的好坏主要由检测率评价。接下来,利用4.1节获取到的8组测试数据来分别验证KMeans算法和粒子群优化的K-Means算法的性能,如图4所示,由图可知,粒子群优化的K-Means算法运行到第11次的时候,MSE已经收敛,而K-Means算法运行到82次的时候才开始收敛,并且没有收敛到最优效果,由此可见,相同条件下,粒子群优化的K-Means算法的学习性能优于K-Means算法。然后计算检测率TPR(True Positive Rate),检测率的计算方法为:被检测为攻击样本数与攻击样本总数的比值。
图4 K-Means和粒子群优化的K-Means算法性能比较
由K-Means算法和粒子群优化的K-Means算法分别建立的聚类检测方法的检测率对比情况如图5所示,通过图示可知,在相同攻击速率下,粒子群优化的K-Means算法的检测率高于K-Means算法,且检测率随着攻击速率的增大而增大。当攻击速率较低时,由于攻击行为接近于正常的用户浏览网页,因此检测方法可能把它当作正常数据处理,导致检测率较低,考虑到低速率的DDoS攻击行为基本不影响Web服务器提供正常服务,所以检测率较低可以接受的。而随着攻击速率的增大,攻击行为的流量特征属性值变化越发明显,攻击行为明显不同于正常行为,某些属性值的差别较大,聚类检测方法的检测率越高,越能有效识别出攻击事件。
图5 两种检测方法的TPR比较结果
5 结语
本文提出了一种针对应用层分布式拒绝服务攻击的检测方法,首先在Web服务器端收集网络流量,网络流量经过数据预处理后生成流量特征向量,后利用粒子群优化的KMeans算法建立检测模型,对正常网络流量产生聚类结果,攻击流量同样经过数据预处理后生成流量特征向量,并计算待检测流量特征向量与各个聚类之间的距离,如果该距离不在所有正常聚类范围内,则认为出现了攻击行为。实验结果表明本方法可以有效地检测到DDoS攻击行为,并且与KMeans算法建立的检测方法相比,本方法具有较高的检测率。