《武汉工程大学学报》  2017年01期 91-95   出版日期:2017-03-29   ISSN:1674-2869   CN:42-1779/TQ
DDoS攻击检测模型的设计


1 DDoS攻击原理DDoS攻击网络[6-8]主要分为4个部分,分别为攻击者、攻击主控机、攻击执行机及受害者,如图1所示. 攻击者首先入侵存在系统服务安全漏洞的服务器或计算机,并安装相关攻击软件,将少量机器作为攻击主控机,大量机器作为攻击执行机. 执行攻击任务时,攻击者首先通过控制攻击主控机,向其发布攻击命令;攻击主控机再控制攻击执行机,使其发出攻击数据包. 在攻击者向攻击主控机发布攻击命令后,攻击者可关闭或脱离网络,以避免追踪. 2 基于朴素贝叶斯算法的DDoS攻击检测模型设计2.1 朴素贝叶斯分类算法朴素贝叶斯分类算法[9-10],其分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,然后选择具有最大后验概率的类作为该对象所属的类. 朴素贝叶斯分类算法是最小错误率意义上的优化. 2.1.1 贝叶斯公式 设A, B是两个随机事件且P(A)>0 ,称P(B|A)=P(AB)/P(A)为在条件A下,事件B发生的条件概率. 同理,P(A|B)=P(AB)/P(B)为在条件B下,事件A发生的条件概率. 则联合概率[11]为P(AB)=P(A|B)P(B)=P(B|A)P(A)   (1)设S为某一实验E的样本空间,B1, B2,…,Bn为E的一组事件,若BiBj=Ф(即Bi,Bj是相互独立的),i=1, 2, …,n,j=1, 2, …,n;但i和j不同时取同一个值. B1∪B2∪…∪Bn则称B1 , B2,…Bn为样本空间S的一个划分. 现存在A为E的事件,B1 , B2,…Bn为E的样本空间S的一个划分,且P(Bi)>0(i=1, 2, …n),则有全概率公式: P(A)=P(A|B1)P(B1)+P(A|B2)P(B2)+… +P(A|Bn)P(Bn)=∑P(A|Bi)P(Bi) (2)根据联合概率公式(1)及全概率公式(2)推导而知:P(ABi)=P(A|Bi)P(Bi)=P(Bi|A)P(A)=P(Bi|A) ∑P(A|Bi)P(Bi) (3)并且得到贝叶斯公式[12,13]:P(Bi|A)=P(Bi)P(A|Bi)/P(A) (4)P(Bi)表示事件Bi发生的概率;P(A)表示事件A发生的概率;P(A|Bi)表示在事件发生的情况下,事件A发生的概率. P(Bi)、P(A)为已知的先验概率,P(A|Bi)为条件概率. P(Bi|A)表示在事件A发生的情况下,事件Bi发生的概率,P(Bi|A)为需要求取的后验概率. 2.1.2 朴素贝叶斯分类器设计 运用朴素贝叶斯分类器[14]的一个前提条件是,假设事件分类或条件之间的关系相互独立. 在设计朴素贝叶斯分类器时,考虑到事件A包含许多独立性特征A1,A2,…,Am,由概率公式:P(A|Bi)=P(A1|Bi)P(A2|Bi)…P(Am|Bi) (5)及贝叶斯公式(4)得:P(Bi|A)=P(Bi)P(A|Bi)/P(A)=P(Bi)[∏mj=1]P(Aj|Bi)/P(A) (6)利用此公式,可分别求得后验概率P(B1|A),P(B2|A),…,P(Bn|A)的值. 选择具有最高概率的值,判断在事件A发生的情况下,哪一个事件Bi最可能发生,并作出相应的归类决策. 在实际使用中,由于对比时,分母P(A)为相同值,则在计算中也可省略除法步骤,在不影响结果的前提下简化计算. 后验概率公式可简化后运用于计算中:P(Bi|A)=P(Bi)[∏mj=1]P(Aj|Bi) (7)某个服务器某时刻的特征及参数如表1所示.由于网络占用率、TCP链接数、TCP链接数的增长率等皆为连续变量. 无法采用离散变量的方式来计算概率. 可假设5种特征数据都为正态分布,利用样本计算出均值及其方差,从而得到正态分布的密度函数. 根据密度函数,可算出某点的密度函数的值,即条件概率值. 在服务器受到攻击的情况下,其网络占用率呈正态分布,期望值为μ=0.92,方差为σ2=0.8. 当网络占用率为0.95时,其条件概率约为0.795 3. P(网络占用率|受到攻击)=[12πσ2e-(0.95-μ)22σ2]≈0.795 3如此,在服务器是否受攻击情况下,通过事先计算出5种特征量的条件概率,结合是否受到攻击的先验概率,再利用贝叶斯公式得出后验概率,对服务器是否受到攻击作出判断. P(受到攻击|网络占用率,TCP链接数,…,内存占用率) =P(网络占用率|受到攻击)…P(内存占用率|受到攻击)P(受到攻击)P(未受攻击|网络占用率,TCP链接数,…,内存占用率) =P(网络占用率|未受攻击)…P(内存占用率|未受攻击)P(未受攻击)最后,比较P(受到攻击|网络占用率,TCP链接数,…,内存占用率)与P(未受攻击|网络占用率,TCP链接数,…,内存占用率)的大小,选择概率较高的值作出分类决策. 朴素贝叶斯分类器的设计主要分为3个步骤:1)收集并提取有效数据:有效数据的选取对于算法的训练非常重要. 利用抓包工具及数据抓取程序获取多组特征数据,选取的数据包含受攻击状态量和未受攻击状态量,并进行属性的分类标记. 然后对数据进行适当选择,选出5种有效的特征数据. 2)训练数据:随机提取部分所标记的多组5种特征数据,分别计算出在受到攻击与未受攻击分类下,此5种独立特征参数的各条件概率. 3)分类测试:选择未参与训练的数据进行测试,得出后验概率,以获得这些数据的分类结果. 统计并计算出错误率,验证算法的准确性. 2.2 DDoS攻击检测模型设计DDoS攻击检测模型的设计流程如图2所示. 对不同情况下的数据包进行分类标记后,提取有效数据并对数据进行正态分布拟合[15-16],得到各特征数据的条件概率. 再结合得到的先验概率,利用朴素贝叶斯分类算法进行分类测试. 得到测试数据被分为受攻击与未受攻击的后验概率后,比较其大小并得出判断结果,即服务器是否受到攻击,再将分类结果与实际值做比较. 若测试结果未能达到要求,则重新提取并选择数据,确保所选择数据的有效性,再次进行训练;若测试结果达到预期要求,则此DDoS攻击检测模型设计基本成功. 基于目标服务器在受到DDoS攻击时的数据表现,选择数据变化较为明显的网络占用率、TCP连接数、TCP链接数的增长率、CPU占用率、内存占用率等5种特征数据作为有效数据. 一共选取600组样本数据包,其中既包含受攻击状态下的数据,也包括未受攻击状态下的数据;对应于选取的5种特征数据,受攻击情况下样本分类标记为1,未受攻击情况下样本分类标记为2. 若利用向量的形式表示出来,即形成一个600行(600组样本数据),6列(前5列为数据特征值,第6列为样本分类)的二维向量. 随机选择其中500组样本数据作为训练量,剩余100组样本数据为测试量,利用正态分布函数拟合样本数据的分布情况. 由于样本中5种特征数据的取值范围分布不均,在计算中可能会出现偏差较大或数据溢出的情形,所以得到各特征量的条件概率后,进行取对数值的平滑处理,以减小误差、方便计算. 3 MATLAB仿真及C++代码测试3.1 MATLAB仿真实验在实际编写DDoS攻击检测模型的C++代码前,首先利用MATLAB仿真平台进行仿真实验的验证. 经过随机取得数据的训练,得出条件概率后,利用余下数据进行测试,求出所设计模型的准确率. 采用MATLAB仿真得到DDoS攻击检测模型如图3所示. 图3中,横坐标表示受测试的数据有100组;纵坐标表明样本数据的分类属性,在纵坐标1.0处表示受到DDOS攻击,在纵坐标2.0处表示未受DDOS攻击. 图标“○”代表的是测试样本的真实分类情况,图标“?”则代表经朴素贝叶斯分类后得出的样本的预测分类情况. 若“○”与“?”重合,则表明此组样本分类是准确的. 经多次仿真测试,对于是否受到攻击,最终测得的准确率都在90%以上,基本满足设计要求。3.2 C++代码及测试结果DDoS攻击检测模型主要C++函数代码介绍:GetData(); //获取样本文件中的特征数据及分类 TrainData (); //对样本中的数据利用正态分布函数进行拟合,得到各个特征量的条件概率Test(); //通过取对数的方式使数据平滑后,利用朴素贝叶斯分类方法对训练结果进行分类测试部分测试结果如示意图4和图5所示. 4 结 语笔者采用朴素贝叶斯算法设计了DDoS攻击检测模型,在设计过程中,省略了各个特征量之间相互独立这一条件. 经过仿真测试,仍取得了较好的实验效果. 此DDoS攻击检测模型可作为一个模块,嵌入到防火墙系统中. 根据服务器的实际承载情况,对其是否受DDoS攻击进行有针对性的分类. 并配合其他安全防护模块使用,以实现对服务器的有效保护.