软件定义网络中基于深度神经网络的DDoS 攻击检测

2022-08-03 01:34刘振鹏王仕磊李小菲
关键词:交换机控制器神经网络

刘振鹏,王仕磊,郭 超,陈 杰,李小菲

(1.河北大学 电子信息工程学院,河北 保定 071002;2.河北大学 信息技术中心,河北 保定 071002)

分布式拒绝服务(Distributed Denial of Service,DDoS)攻击[1]的解决方案一直是网络安全研究领域的难点问题.软件定义网络(Software-Define Networking,SDN)[2-3]架构的核心思想是控制平面与数据平面的分离,相较于传统网络架构SDN 增加了灵活性、加快了实施并简化了管理[4].除了数据和控制平面分离之外,SDN 还包括应用平面,为负载平衡、入侵检测、流量监控等基本网络功能提供高效的解决方案[5].控制器的集中化虽降低了部署成本,但这也使得控制器更易受到DDoS 攻击[6].

现有的DDoS 攻击检测机制通常基于机器学习方法.机器学习模型从网络流量中提取并使用一些特征来区分恶意流量和正常流量.文献[7]采用支持向量机(Support Vector Machine,SVM)的方法区分DDoS 攻击流量和正常流量;在文献[8]中,采用了3 种不同的机器学习算法进行比较.但仅采用基于机器学习的方法对控制器的资源占用量较大.在文献[9-11]中,采用了一种基于信息熵和机器学习方法相结合的DDoS 检测思想,分别提出了3 种不同的检测方案.此思想在第一阶段采用基于信息熵的方法检测攻击流量,第二阶段采用不同的机器学习方法对异常流量进行分类.通过实验表明此方案可以有效减少控制器资源占用量较大问题.文献[12]通过在NSL-KDD 数据集上的实验,观察到前馈神经网络(Feedforward Neural Network,FNN)和卷积神经网络(Convolution Neural Network,CNN)等深度神经网络模型在确定网络异常检测方面比贝叶斯、随机森林、随机树、SVM 等浅层机器学习算法具有更高的精确度.在这些研究[13-14]中,深度学习模型比浅层机器学习模型更成功;深度学习模型的成功之处在于其结构中包含了特征提取和分类过程[15];文献[16]采用DNN 模型在CICDDoS2019数据集上进行DDoS 检测实验,表明该模型具有超高的检测精度.基于此,本文将广义信息熵与深度神经网络模型结合,提出一种DDoS 攻击检测方案.其中DNN 模型的最优化方法采用文献[17]中提到的Adam 方法.

1 方案模型

方案模型如图1 所示,该模型由3 个主要模块组成.来自交换机的网络流量先由低计算成本的轻量级检测模块进行检测,对于轻量级检测模块检测不出的异常流量再进行重量级检测.

图1 DDoS 攻击检测方案模型Fig.1 A scheme model to detect DDoS attack

1.1 基于熵值的检测模块网络流量数据由无数离散信息源组成,信息熵表征整个信源的不确定度,即熵值越低代表网络流量的随机性越低,熵值越高代表网络流量的随机性越高.在正常的网络当中,流量的随机性通常比较大,然而当发生DDoS 攻击时,大量由攻击者控制的傀儡主机向同一个目的主机发送大流量数据,造成目的主机拒绝为其他正常用户服务,此时网络系统的随机性被打破.与正常流量相比DDoS 攻击流量的目的IP 的熵值更小,因此可以通过观察信息熵的变化来判断是否发生DDoS 攻击.

信息熵的概念是香农于1948 年提出来的,香农熵的计算公式为:

其中,pi是事件X={X1,X2,···,Xi,···,Xn}的概率,且0≤pi≤1.此方案中设X为n种不同目的IP 地址的集合,pi代表目的IP 地址为IPi的所有数据包之和.

1961 年Alfred Renyit 提出了香农熵的广义形式:

当α趋近于1 时,广义熵就是香农熵.当α大于1 时,由广义熵计算出正常流量与攻击流量的熵值之差值更大.这意味着可以更好地选择阈值,增强系统的检测能力[18],所以熵值检测模块采用广义熵公式计算熵值.其中阈值σ1、σ2将根据一个采样周期内广义熵值Hα(X) 的最大、最小熵值进行设置.将最大熵值设置为阈值σ1;最小熵值设置为阈值σ2.

算法 1 基于广义熵的检测方案

步骤 1控制器提取当前采样窗口内数据包报头目的IP 地址;

步骤 2根据(3)式计算当前采样窗口内数据包目的IP 的广义熵值Hα(X);

步骤 3将步骤2 计算的广义熵值Hα(X)与阈值σ1、σ2进行比较(σ1>σ2),若大于σ1则输出为正常流量,小于σ2则输出为DDoS 攻击流量,介于σ1~σ2之间则输出为异常流量.

1.2 异常检测模块只经过上述信息论的度量方式进行流量检测,检测内容过于单一.为此,引入深度神经网络模型对熵值检测模块中的异常流量进行二次检测,以提高方案的检测成功率.熵值检测模块输出的异常流量将成为异常检测模块的输入,此时控制器将先下发流表到交换机之后再进行异常检测.该模块首先将来自熵值检测模块中的异常流量进行特征提取.在我们以往的研究[10]中,与传统的6 元特征组比较发现由数据流的平均包数等8 个数据流量特征组成的8 元特征组在检测率、准确率上均高于传统的6 元特征组,且误报率低于后者.故我们将8 元特征组作为深度神经网络(Deep Neural Network,DNN)网络的8 个输入端,对DNN网络进行训练,训练完成后输出端输出有DDoS 攻击或无DDoS 攻击.8 元特征组特征符号在表1 中定义.

表1 数据流量8 元特征组Tab.1 Data traffic 8-element feature group

由于正常流量与攻击流量的8 元特征值是不同的,故可以将上述问题看成一种分类问题.

1.2.1 基于Adam-DNN 的攻击检测算法 DNN[19]由无反馈连接的前馈神经网络组合而成,是一个加深了层的深度神经网络.主要由输入层、隐藏层和输出层组成,其中隐藏层的层数不止一层.如图2所示,该模型输入层的输入单位与所选特征相同.隐藏层由FNN 结构中的3 个隐藏层组成,3 个隐藏层由数量相等的50 个单元组成,每个隐层采用sigmoid 激活函数.由于最终输出为正常流量或攻击流量,由两个标签组成,因此在输出层中使用了两个单元.第i层隐藏层所包含的激活函数的数学方程式如下:

图2 深度神经网络结构Fig.2 Structure of deep neural network

其中,输入向量的转置、隐藏层中每个神经元的权重、偏置、激活函数的符号分别表示为xT、w、b、f.激活函数将输入信号转换成输出,并将作为下一隐藏层的输入信号.

该模型隐藏层采用sigmoid 激活函数,其数学方程式如下:

该模型隐藏层最终输出端函数的数学方程式如下:

该模型输出层采用softmax 激活函数,其数学方程式如下:

由于该神经网络模型最终将输出有DDoS 攻击或无DDoS 攻击两类,故该模型可以看成分类问题.对于神经网络而言,分类问题通常采用softmax函数作为输出层的激活函数.

损失函数采用交叉熵误差函数:

其中,qi是神经网络的输出,pi是正确解的标签.

神经网络的学习旨在找到使损失函数尽可能小的参数.在参数寻优过程中随机梯度下降法(Stochastic Gradient Descent,SGD)是使用最为广泛的参数寻优方法,但是SGD 在解决神经网络的最优化问题时效率低下.

算法 2 SGD 优化算法

输入学习率α=0.001、损失函数f(θ)、初始的参数向量θ0.

步骤 1初始化时间步长t=0;

步骤 2更新时间步长:t=t+1;

步骤 3计算损失函数f(θt-1)对参数θ的梯度记为gt;

步骤 4更新参数θ:θt=θt-1-α·gt;

步骤 5若参数θt不收敛则返回步骤2,若收敛则结束循环输出参数θt.

算法 3 Adam 优化算法

输入学习率α=0.001、一阶矩衰减系数β1=0.9、二阶矩衰减系数β2=0.999;损失函数f(θ)、初始的参数向量θ0.

步骤 1初始化一阶矩向量m0=0、初始化二阶矩向量v0=0、初始化时间步长t=0;

步骤 2更新时间步长:t=t+1;

步骤 3计算损失函数f(θt-1)对参数θ的梯度记为gt;

步骤 4计算梯度gt的一阶矩,即梯度gt的期望:mt=β1·mt-1+(1-β1)·gt;

步骤 5计算梯度gt的二阶矩,即梯度gt2的期望:

步骤 6对一阶矩mt进行矫正:

步骤 7对二阶矩vt进行矫正:

步骤 8更新参数

步骤 9若参数θt不收敛则返回步骤2,若收敛则结束循环输出参数θt.

在算法2 中,SGD 方法的参数更新法则为:

通过式(9)可以看到SGD 的更新法则只是根据固定的学习率α在朝着梯度的方向上前进一定的距离.但是要在梯度较大的地方使其更新得快一点,显然梯度更新会受学习率的约束使得SGD 不能满足要求.

在算法3 中可以看到Adam 方法的参数更新法则为:

其中,式(10)是对于“动量”思想的引入,表示了物体在梯度方向上受力,且在这个力的作用下,物体的速度增加这一物理法则.式(11)是对于“自适应调整学习率”思想的引入,在参数更新时使学习率乘以就可以动态地改变学习率,以达到调整学习率的目的.相较于SGD 算法中学习率固定不变,式(11)可以使损失函数的值更高效地向最小值移动.为了减小误差,式(12)、(13)是对式(10)、(11)的校正,可以近似为对期望的无偏估计.式(14)是最终的参数更新法则,为了保证分母不为零,在分母中加上一个极小的常数ε.

综上所述,Adam 方法结合了Momentum 和RMSProp 方法的优点,更有效地解决了SGD 学习效率低的问题.故本文使用Adam 最优化方法对深度神经网络模型进行训练,以区分是否发生DDoS攻击.

1.3 DDoS 防御模块当上述熵值检测模块或异常检测模块输出有DDoS 攻击时,控制器向交换机下发丢弃流表,并发出攻击警报.在SDN 网络中,上述操作通过OpenFlow 流表实现.具体流程:当网络流量要对服务器进行访问时,该流量首先对边缘交换机进行流表匹配,若该边缘交换机有匹配的流表项,则将按照匹配流表项执行.若边缘交换机没有匹配的流表项,则交换机向控制器发出检测指令,进而执行我们的检测方案.对于检测为攻击的流量控制器将下发丢弃流表至交换机.

2 实验与分析

2.1 实验设计实验在i5CPU,4 GB 内存的Ubuntu 20.04 操作系统的计算机上运行.采用Floodlight 控制器,Open vSwitch 交换机,在Mininet 仿真软件中构建网络拓朴图进行DDoS 攻击模拟.拓扑图采用树形拓扑,控制器下共挂有S1~S44 台交换机,其中S1~S3交换机下分别挂有10 台主机,S4交换机下挂16 台主机,S4交换机下的主机地址设为10.0.0.31~10.0.0.46.流量来自S1~S3 交换机下的主机,对S4 交换机下的主机进行访问.当攻击时选择地址为10.0.0.31 的主机为受害主机.攻击模拟采用经典的DDoS 发起工具TFN,其中攻击流量包括SYN flood、UDP flood 和ICMP flood 等.

2.2 阈值选择文献[20]表明,每秒超过10 000个攻击包,即可实现高速率攻击;每秒约1 000 个攻击包只能达到全攻击的60%,称之为低速率DDoS 攻击.为了比较,我们在低速率DDoS 攻击场景下分别测试了香农熵和不同α值广义熵在一个采样周期内正常流量和攻击流量的平均熵值.

表2 展示正常流量的熵值、攻击流量的熵值和熵差,熵差表示正常流量和攻击流量之间的熵值之差.结果表明,在低速率DDoS 攻击场景中,相较于香农熵,广义熵有更大的熵差,即广义熵对攻击流量更敏感,且在α=8 附近广义熵有最大熵差.对表2 结果进行归一化表示,即对式(3)进行熵值归一化处理如下:

表2 低速率DDoS 攻击检测中的熵值比较Tab.2 Comparison of entropy values in low-rate DDoS attack detection

如图3、4,在α=8 时差熵最大,可以更清晰地区分正常和攻击流量,提高检测灵敏度,增强检测能力.故本文采用α=8 时的广义熵进行熵值检测,α=8 时一个采样周期内的熵值分布如图5 所示.其中一个采样周期为120 s,每隔10 s 计算一次数据包目的IP 的广义熵值,具体计算如算法1 所示.根据图5 中α=8 时的熵值分布,对算法1 中的阈值进行设置.为减小误报率,正常流量阈值选择比正常流量最小熵值3.112 稍小的3.05,低速率攻击流量的阈值选择比低速率攻击流量最大熵值2.687 稍大的2.75.

图3 不同熵值计算法则的归一化熵值Fig.3 Normalized entropy of different entropy calculation rules

图4 不同熵值计算法则的差熵Fig.4 Difference entropy of different entropy calculation rules

图5 一个采样周期内的熵值分布(α=8)Fig.5 Entropy distribution within a sampling period (α=8)

进行熵值检测时,当采样窗口计算出的熵值大于3.05 时输出为正常流量;小于2.75 时输出为攻击流量,且发出警报进行响应的防御措施.其它情况则认为流量异常,发送至异常检测模块.

2.3 结果分析在深度学习中,通常采用检测率DR(Detection Rate),准确率AR(Accuracy Rate)和误报率FR(False alarm Rate)3 个指标对训练后的深度神经网络进行评估.

实验使用的数据样本一共10 000 个.如表3所示,训练样本占总样本的80%,测试样本占总样本的20%.训练完成后的测试结果如表4 所示.

表3 神经网络训练和测试所用的数据样本分布Tab.3 Data sample distributions for training and testing of neural network

表4 DNN 模型对DDoS 攻击检测结果Tab.4 Detection results of DDoS attacks by DNN model

最后在相同训练集和测试集下,对仅采用SVM 方法的文献[7],与采用信息熵和不同机器学习方法相结合方案的文献[9-11],以及仅采用DNN 方法的文献[16]与本文方法进行对比实验.

观察表5 发现,本方案准确率比仅采用SVM方法的文献[7]高3.66%,且CPU 利用率比文献[7]低5%;本方案的CPU 利用率与采用信息熵+机器学习方法的文献[9-11]十分接近,但准确率比文献[9-11]高0.91%~1.23%;本方案的准确率与仅采用DNN 方法的文献[16]相差无几,但CPU 利用率比文献[16]低6%,这是因为对于没有匹配项的网络流量,其先通过计算成本较低的熵值检测模块进行检测,对熵值检测模块输出的异常流量才进行计算成本较高且检测精度较高的异常检测模块进行二次检测.

表5 不同检测方案的检测结果Tab.5 Test results of different detection schemes %

综上所述,与传统的机器学习、香农熵检测方案相比,本方案检测成功率提高了0.91%~3.66%,且CPU 利用率降低了5%左右.

3 结论

在本研究中,提出了一种广义信息熵与深度学习模型相结合的DDoS 攻击检测方案.本方案主要解决SDN 环境下DDoS 攻击的检测问题.实验结果表明,本方案在提高检测成功率的同时降低了CPU 的利用率.控制器作为SDN 网络架构的核心,建立实时高效的防御方案,有效保证控制器的正常运行将会是未来工作的重点.

猜你喜欢
交换机控制器神经网络
基于神经网络的船舶电力系统故障诊断方法
三转子式比例控制器设计与内泄漏分析
南京溧水电子3款控制器产品
MIV-PSO-BP神经网络用户热负荷预测
基于NFV的分布式SDN控制器节能机制
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
浅谈交换机CAN基本配置
罗克韦尔发布Strat ix 5410分布式交换机
智能液位控制器在排水系统中的应用
信息网络中交换机的分类和功能