SDN环境下基于DBN的DDoS攻击检测

2020-04-20 05:03伍忠东丁龙斌
计算机工程 2020年4期
关键词:流表信息熵交换机

朱 婧,伍忠东,丁龙斌,汪 洋

(兰州交通大学 电子与信息工程学院,兰州 730070)

0 概述

DDoS攻击是当今互联网受到的主要威胁之一,给全球网络体系带来巨大的损失。例如,2016年,域名系统DNS的提供商Dyn遭到DDoS攻击,造成大量的欧美用户无法使用推特和亚马逊等多个网站,2018年,GitHub在DDoS攻击下一度出现瘫痪情况,使得客户对GitHub网站的安全性产生质疑,同年,仅阿里云所监测到的云上DDoS攻击就有近百万次。由于DDoS攻击易对软件定义网络(Software Defined Network,SDN)环境下的控制器造成严重损害,因此,如何高效、实时地检测出DDoS攻击,对SDN网络架构的部署至关重要。目前,针对DDoS攻击流量的检测主要基于传统网络结构,而在SDN环境下检测DDoS攻击的研究仍处于初级阶段,因此,在SDN环境下检测DDoS攻击具有广阔的研究前景[1]。

由于将数据和控制平面进行分离是SDN逻辑集中控制网络构架的核心要求,而OpenFlow是数据和控制平面间统一的开放式接口,因此SDN的特征表现为在拥有逻辑集中式控制平面的同时,借助统一且开放的南向接口来实现对网络的控制[2]。虽然SDN相对于传统的网络架构优势明显,但其针对DDoS的攻击检测仍存在可靠性和安全性不高等问题。

近年来,研究人员针对SDN环境提出多种DDoS攻击检测方法。例如,文献[3]采用BP神经网络算法对训练样本进行分类,实现对DDoS攻击的检测,但BP神经网络具有随机初始化权值参数的特点,易陷入局部最优。文献[4]采用传统方法SVM分类器进行DDoS检测,但存在检测时间长、准确率低等问题。文献[5]提出基于深度学习的DDoS攻击检测和防御方法,并将其代入OpenFlow的SDN环境中进行验证。文献[6]将POX作为控制器,但POX支持的协议相对较少。文献[7]使用最大值熵估计法确定良性流量分布和进行SDN中的异常检测,但其仅能解决小型办公室和家庭网络的问题。文献[8-10]虽然对SDN环境下的安全问题提出了一些观点和概述,但是大多与理论问题有关,并没有实现实际应用。

本文提出一种在SDN环境下基于DBN的DDoS攻击检测算法。通过描述SDN的体系结构,分析控制器的结构特征以及受到DDoS攻击的难易程度,阐明DDoS攻击控制器的工作机制。通过Mininet模拟SDN的网络拓扑结构,并使用Ryu控制器构建系统模型,采用Hyenae进行DDoS攻击模拟,并借助TcpDump收集流量信息。

1 DDoS攻击简介

作为网络黑客的主要攻击手段,DDoS攻击因其将多个计算机联合作为攻击目标,其攻击效果相较于其他网络攻击成倍提升,因此,也被称为洪水攻击。

DDoS是由拒绝服务攻击(DoS)衍生而来的,其利用TCP/IP协议的漏洞,以占用或耗尽目标主机系统内存资源为目标,通过操作僵尸网络中的大量“僵尸机”来阻断所在链路的带宽,使得用户的正常服务请求被无理由拒绝[11]。

SDN环境下的DDoS攻击会对网络的各个层面造成影响,主要包括以下3个方面[12-13]:

1)攻击SDN控制器,使整个网络失去控制层或者切换回传统网络的状态。

2)攻击SDN交换机,通过占满交换机中的流表缓存,使交换机无法正常转发数据。

3)攻击网络主机,从而大量消耗目标系统的网络资源。

本文采用OpenFlow交换机应对上述3种攻击形式,该交换机主要由流表、安全信道和OpenFlow协议组成,位于数据交换平面内。OpenFlow交换机的主要功能是通过流表实现报文的匹配与转发,类似于路由器中的路由表以及交换机中的转发表。因此,流表是OpenFlow交换机的核心,若数据包与流表匹配成功,则直接输出结果,否则,交换机就会发出请求,驱动控制器进行处理[14]。图1给出数据包与流表匹配的流程,可以看出,未能匹配的数据包都将被发送到控制器中。

图1 数据包与流表的匹配流程

2 SDN环境下基于DBN的DDoS检测

针对SDN环境下基于DBN的DDoS攻击检测,其模型如图2所示。其中,数据训练模块主要采取DBN深度信念网络方法,对提取到的特征值等参数进行训练。基于DBN的攻击检测模型主要包括异常检测模块、流量特征提取模块和DDoS攻击检测模块3个部分,具体分析如下:

1)异常检测模块的主要功能是计算熵值偏差,当偏差值大于阈值时则视为异常,需进一步判断是否发生DDoS攻击。

2)流量特征提取模块的主要功能是提取与分布式拒绝服务攻击相关的特征值,即在流表收集模块中收集的流量值。

3)攻击检测模块的主要功能是在检测到存在攻击迹象时,Ryu控制器对其进行处理并在交换机中执行相应指令。

图2 基于DBN的DDoS入侵检测模型

2.1 异常检测模块

由于进入网络的流量是随机选择的,而熵可以用来测定随机性,因此本文通过熵的概念来检测DDoS攻击。

在使用信息熵检测流量时,主要检测Window(窗口)的大小和阈值。Window的大小是根据时间段的不同或者数据包的个数来确定的。如果需要测量数据包中的随机程度,则要在所设置的Window中计算流量信息熵。因此,本文还需找出一个阈值,通过它来判断流量是否异常,其判断依据为,如果通过计算得出的信息熵小于阈值,则该流量是异常流量。信息熵值计算公式如下:

(1)

其中,N表示一个窗口的大小,即Window内所含有数据包的个数,pi表示概率,即Window中每个目的IP地址的数据包发生的概率。如果每个IP地址仅出现一次,此时的信息熵即为最大值。由于分布式拒绝服务攻击的被攻击者在多数情况下有且只有一个,当大量的数据包被发送到被攻击者处时,目的IP地址的信息熵将降为最小值。

本文预先设定好实验阈值,规定Window为50个数据包,每次实验连续测试5个Window。假设在实验中,出现连续5个Window的信息熵下降到小于阈值的情况,则说明目前网络的流量异常,异常警告由Warning发出。其中,规定5个连续Window是为了避免实验结果的偶然性,降低误报率,以防被意外的事件所干扰。

由于正常网络操作也会出现信息熵值小于正常信息熵值的情况,因此仅凭信息熵计算的方法并不能完全确定目前网络中有无DDoS攻击发生。因此,当异常检测模块检测到模型中的异常流量时,需根据发送的Warning调用流量特征提取模块所提取的流量特征来辨别。

2.2 特征提取模块

本文采用以下5个特征值来描述SDN中的DDoS攻击行为[15]:

1)流包数均值APF,其表达式如下:

(2)

2)流包速率PTR,其表达式如下:

(3)

3)流表项速率FER,其表达式如下:

FFER=Nflow/T

(4)

4)单流表项比例SFP,其表达式如下:

SSFP=Nflows/Nflow

(5)

5)协议熵PS,其表达式如下:

(6)

2.3 攻击检测模块

在本文中,攻击检测模块DBN的网络结构共分为5层[16],训练过程主要包括以下2个步骤:

1)3个RBM堆叠,分别对每一层RBM神经网络单独进行无监督训练,使得输入参量在映射到其他特征空间时,可以尽可能多地保留特征向量的特征信息。

2)在网络的最后一层设置随机森林分类器,以进一步进行有监督训练,即将上一层收到的受限玻尔兹曼机的输出特征向量看作新的输入特征向量。

网络输入层和输出层的节点个数由DBN网络结构模型决定,其模型如图3所示。

图3 本文DBN网络结构模型

本实验选用sigmoid函数作为激活函数,通过Python实现。经多次仿真得出,当输入节点数为5(特征维数为5)、输出节点为2(0表示正常状态,1表示攻击状态)时仿真效果最佳。其中,sigmoid函数表达式如下:

(7)

3 实验结果与分析

3.1 实验环境

本文实验平台为Ubantu16.04、Python3.6.4,Ryu控制器及OpenVSwitch交换机,通过Mininet对SDN网络进行仿真[17]。

本文使用KDD Cup 99数据集来训练检测模型,而建立KDD99数据集的目的是为入侵检测系统提供统一的性能评价基准,该数据集已被广泛应用于网络入侵检测方法的研究和评估[18-19]。本文所用的仿真数据集参考文献[20],具体如表1所示。

表1 仿真数据集信息

本文使用的数据集均为pcap文件,需对其进行预处理,在Linux环境下通过tshark(需要安装 wireshark 软件)命令把每条数据包的载荷去掉,只提取关键字段,比如数据包的帧ID、时间戳、协议类型、源IP、目的IP、源端口以及目的端口等。

在Ubuntu中使用命令mn启动网络拓扑,然后在Mininet中模拟SDN环境,如图4所示。其中,主机h1~h3为第1个网段,主机h4~h11为第2个网段,h12~h14为第3个网段,h15~h17为第4个网段,s1~s6为交换机,c0为控制器。输入dump命令可以查看该仿真网络拓扑结构的具体信息。

3.2 结果分析

将基于DBN得到的结果与其他3种算法(即随机森林RF、SVM和XGBoost)进行比较,其评价标准包括准确性AACC、误报率FFPR和算法运行时间,具体表达式如下:

(8)

(9)

其中,NTP表示被正确标记的正常测试样本数,NFP表示被错误标记的正常测试样本数,NTN表示被正确标记的攻击测试样本数,NFN表示被错误标记的攻击测试样本数。4种算法的攻击检测结果对比如表2所示。

表2 4种算法的攻击检测结果对比

表2数据是由500 000条数据进行实验后获得的,通过对比发现,DBN算法的测试准确率约为98.65%,而SVM、随机森林和XGBoost的准确率分别为97.42%、96.58%和96.08%,低于DBN算法,即本文DBN算法准确性较高。与此同时,DBN的误报率较低。

在运行时间方面,DBN算法优于SVM和XGBoost,但比随机森林差。这是因为随机森林在构建决策树时仅仅使用了概率分布的信息,不需要进行数据标量间的计算,计算复杂度较低。XGBoost需要若干弱分类器依次迭代运行,计算时间较长,SVM需要将数据在更高维空间计算距离,计算复杂度较高,DBN算法只需要对数据进行线性映射和吉布斯采样,运算复杂度比SVM要小。

图5为50 000条、100 000条、200 000条和500 000条数据时4种算法的检测准确率对比。可以看出,DBN算法的测试准确率最高,且随着数据量的增大,DBN算法的检测准确率提升幅度变大。

图5 4种算法的检测准确率对比

图6给出4种算法的误报率对比。可以看出,随着数据集样本数的增多,本文DBN算法的误报率降低,且相比其他算法,其误报率是最低的。

图6 4种算法的误报率对比

综上所述,本文构建的基于DBN的DDoS攻击检测算法的综合性能较好。

4 结束语

本文提出一种在SDN环境下基于DBN的DDoS攻击检测算法。通过分析DDoS攻击的特点,提取OpenFlow交换机上的流表项特征,构建DDoS攻击检测模型。在此基础上,利用数据集进行训练和验证,以实现DDoS攻击检测。实验结果表明,与XGBoost、随机森林和SVM算法相比,该算法的攻击检测准确性较高,而误报率较低。将本文攻击检测算法应用到较大规模的网络场景中进行验证是下一步的研究方向。

猜你喜欢
流表信息熵交换机
基于匹配动作表模型的可编程数据平面流表归并
基于信息熵可信度的测试点选择方法研究
基于时序与集合的SDN流表更新策略
更换汇聚交换机遇到的问题
基于地铁交换机电源设计思考
软件定义网络中一种两步式多级流表构建算法
一种高效的OpenFlow流表拆分压缩算法
一种基于信息熵的雷达动态自适应选择跟踪方法
缔造工业级的强悍——评测三旺通信IPS7110-2GC-8PoE工业交换机
基于信息熵的循环谱分析方法及其在滚动轴承故障诊断中的应用