Hadoop环境中的DDoS朴素贝叶斯检测算法
2016-12-22匡晓红
匡晓红
摘 要:为快速准确进行DDoS(Distributed Denial of Service,分布式拒绝服务)攻击检测,提出在Hadoop环境下,基于朴素贝叶斯的DDoS攻击检测算法。该算法主要有3个阶段:确定被检测数据文件的TCP flag属性,作为朴素贝叶斯的训练和检测属性;利用训练原理,两次扫描正常和异常流量文件,得到正常和非正常网络状态下属性的先验概率和条件概率;扫描待检测数据集,计算两种状态下的后验概率,并比较后验概率的大小,以此判断是否会受到攻击。实验结果表明,该算法具有对缺失数据不敏感、实现简单的优点。
关键词关键词:Hadoop;DDoS检测;朴素贝叶斯分类;后验概率
DOIDOI:10.11907/rjdk.162086
中图分类号:TP312
文献标识码:A 文章编号文章编号:16727800(2016)011003903
0 引言
DDos攻击是一种攻击者控制大量攻击机器,并向机器发出DoS攻击指令的分布式攻击方式。在最新的互联网安全报告中,DDoS攻击仍然是主要的网络安全威胁之一。
本文基于Hadoop的云计算平台,运用并行编程模型、分布式文件系统以及并行执行引擎实现了数据分类挖掘算法——贝叶斯算法。运用设计好的分类器,实现了简单的文本分类程序。实验表明本文所提出的检测方法可以快速简便地检测出Hadoop集群中模拟存在的DDoS攻击。对促进Hadoop环境中DDoS攻击研究具有良好的意义和价值。
1 算法概述
1.1 贝叶斯定理
贝叶斯分类算法是一类分类算法的总称,这类算法以贝叶斯定理为基础,故称为贝叶斯分类。从数学角度来讲,分类问题可作如下定义。
定义1:已知集合A={y1,y2,y3,…,yn}和B={x1,x2,x3,…,xm,…},确定映射规则y=f(x),使任意xi∈I有且仅有yi∈A使得yi=f(xi)成立(不考虑模糊数学里的模糊集情况)。该集合叫作A类别集合,集合中每一个元素是一个类别,B叫作项集合,集合中每一个元素是一个待分类项,f被称为分类器。分类算法的任务就是构造这样一个分类器f。
定义2:(条件概率)P(A|B)表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生条件下事件A的条件概率。在生活中经常遇到这种情况,很容易直接得出P(B|A),但很难直接得出P(A|B),但人们更关心P(A|B),贝叶斯定理打通了从P(B|A)获得P(A|B)的通道[1]。
1.2 朴素的贝叶斯分类
朴素贝叶斯分类算法定义如下:
1.3 估计类别系特征属性划分的条件概率
当特征属性为连续值时,通常假设其只服从正态分布(也称高斯分布)。故只要计算出训练样本中各个类别中此特征项划分的均值和标准差,即可得到需要的估计值。均值与标准差的计算在此不再赘述。
2 训练阶段条件概率与先验概率计算
2.1 划分数据单元方法
计算正常训练数据集和异常训练数据集的先验概率和条件概率,用于检测时计算数据的后验概率。根据正常和异常两种情况下后验概率的大小确定该数据是属于正常网络还是受到DDoS攻击后的网络流量信息。由于网络通信具有随机突发性特征,如果只用一个数据的后验概率区分是否受到DDoS攻击会造成很高的误报率。所以,用数据单元的概念作为训练和检测的基本单位,数据单元可以按照数据个数和时间间隔来划分。考虑到网络数据的突发性,本文依据数据个数把不含DDoS攻击的正常Hadoop通信流量文件t.txt、含DDoS攻击的异常Hadoop通信流量文件f.txt和正常与DDoS混合的待检测的Hadoop通信流量文件b.txt划分为多个数据单元[2],在后文中,t.txt和f.txt将分别作为贝叶斯分类的正常和异常训练数据使用。
划分数据单元方法如下:按照时间先后顺序把每一数据文件中相邻的N个数据看作一个数据单元。训练时将每一个数据单元看作一个整体处理[2]。比如:A是一个组,其中包含了N个时间相邻的数据。首先扫描该数据单元的每一个数据,根据特征分类方法,统计出当前数据单元中各个属性出现的次数。设置一个二维矩阵R来存储统计到的每个数据单元中各属性出现的次数。二维矩阵R的大小为6行(N+1)列,行代表特征分类,列代表特征分类出现的次数,例如:一个数据单元中的统计结果可能是T1=X,T2=Y,T3=Z…然后利用统计结果更新R,此时,R的第1行第X列加1,R的第2行第Y列加1,R的第3行第Z列加1…,所以第1行第8列的值表示在训练过程中数据单元出现8个属于T1分类的数据个数。
由于在训练过程中要分别训练正常情况和不正常情况下的条件概率,因此在具体算法中R有2个,其中一个用m
2.2 训练过程
正常数据训练过程中的算法输入文件为t.txt,输出为tr[][]。异常数据训练过程中的算法输入文件为f.txt,输出为fl[][]。
朴素贝叶斯分类方法中正常数据训练过程主要包括[4]:
(1)初始化各个参数,如将数据单元计数ls清零,包计数lt[]清零,类计数ws清零。完成后进入第二步。
(2)判断t.txt是否读完,如果没有,读入一行并转入第三步,否则转到第六步。
(3)判断是否填满N个包,若是跳到第四部,否则跳到第五步。
(4)利用lt[]的值,更新tr对应的值。
(5)增加包计数(用来判断数据单元是否填满),判断当前数据属于哪一类,完成后转到第二步。
(6)依次将各个组的计数除以数据个数,并将原值覆盖。
(7)结束。
综上,正常数据训练阶段的伪代码如下:
3 DDoS检测过程
3.1 检测原理
攻击者向服务器发送大量伪IP地址的ACK /SYN 请求包, 服务器返回应答包后如果得不到确认, 就会一直对伪IP 地址进行重试直至超时丢弃, 因为SYN 连接请求的速度远大于服务器超时丢弃的处理速度。 所以,服务器的连接列表很快就被塞满, 使客户的正常请求得不到及时响应, 以此实现拒绝服务的目的[6]。
分析检测过程之前,根据上面介绍的检测原理,检测是否是DDoS攻击,计算后验概率公式如下:
P(mR/k)=p(k/mR)*p(mR)/p(k) (R=0,1…)
P(k)对于文件是一个常数,因此要计算 P(mR/k)只需计算p(k/mR)*p(mR),p(m0)和p(m1)是之前的p(ts)和p(fs),其中p(k/mR)是各个属性条件概率乘积[7]。
3.2 实现过程
算法检测主要步骤如下:
(1)初始化参数:tr,fl,p(ts),p(fs)分别初始化为最初阶段的先验概率。将ws置零。完成后转到(2)。
(2)判断b.txt是否读完,若没有,则转(3),否则结束。
(3)判断是否已有N个包,若是转到(4),否则转到(5)。
(4)根据公式,分别计算正常情况下和异常情况下的先验概率,转到(5)。
(5)重置包计数为0(记录已包含数据个数),清空计数。转到(7)。
(6)增加包计数(用来判断是否填满,再判断数据属于哪一类,转到(2)。
上面算法过程第一步获取先验概率并初始化参数;第二、三、六步形成数据单元;第四、五步对已形成数据单元进行后验概率计算,从而判断是否存在DDoS攻击的数据[8]。
3.3 攻击检测结果
在实验环境下把t.txt当作正常的训练流量,反之,f.txt作为异常训练流量,异常训练流量中包含攻击流量。此外,被检测的数据文件包含了6次DDoS攻击。实验分析不同的数据对算法误报率的影响,结果如表1所示。各列的含义分别为:检测到的次数指当前情况下攻击次数;误报次数指有多少次攻击是误报的。
从表1可以看到设置不同的数据单元大小对分类器性能的影响在于误报次数的大小。数据单元大小与误报次数负相关。当数据单元大小为20时算法具有较好的检测性能。无论数据单元大小,算法检测率都相同,而且跟踪监测到的攻击时间发现前四次都检测到了,但是最后两次没有检测到,这是由于最后两次攻击为SYN Flood攻击[9,10],而在训练时没有训练该攻击的属性,因此算法不能检测到此次攻击。
综上所述,贝叶斯分类器在训练良好且数据单元大小选择合适的情况下有很低的误报率和很高的检测率。但是,该分类器依赖于训练,所以可能检测不出未知类型的攻击。
4 结语
DDoS攻击从第一次大规模攻击开始一直是互联网的巨大安全隐患,而随着互联网规模不断壮大,DDoS发起者将利用更多的机会发起攻击。虽检测已经趋于成熟,但是Hadoop平台在越来越受到工业界的重视的背景下,对DDoS攻击的检测几乎没有。本文主要研究了Hadoop环境下,基于朴素贝叶斯的DDoS攻击检测算法。实验结果表明,该算法具有对缺失数据不敏感、实现简单的优点。本文虽然分析了一种DDoS检测环境下的数据捕获,但检测不是实时进行的,虽然能够检测出攻击,但在集群安全较高的环境下不能实现实时报警,需继续研究Hadoop平台下实时监测的可行性。
参考文献:
[1] 杨新宇,杨树森,李娟.基于非线性预处理网络流量预测方法的泛洪型DDoS检测方法[J].计算机学报,2011(2):3739.
[2] 张永静,肖军,云晓春.DDoS攻击检测和控制方法[J].软件学报,2012,23(8):20582072.
[3] 刘运.DDoS flooding攻击检测技术研究[D].长沙:国防科技大学,2011.
[4] 王进,阳小龙,隆克平.基于大偏差统计模型的http-flood DDoS检测机制及性能分析[J].软件学报,2012,23(5):12721280.
[5] 张倩倩.反射型分布式拒绝服务攻击中攻击源追踪的研究[D].济南:济南大学,2012.
[6] 吴轩亮.三网融合下城域网DDoS攻击的监测及防范技术研究[J].信息网络安全,2012(3):4548.
[7] 池水明,周苏杭.DDoS攻击防御技术研究[J].信息网络安全,2012(5):2731.
[8] 季福坤.计算机网络基础[M].北京:人民邮电出版社,2013.
[9] 赵德山.曹斌.多Agent的DDoS源地址追踪方法研究[J].计算机工程与设计,2010,31(8):2631.
[10] 苏文杰. DDoS攻击防御技术探究[J].软件导刊,2016,15(6):209210.
(责任编辑:陈福时)