软件定义网络中DDoS 攻击检测方法研究

2020-12-15 08:36赵贝贝
科学技术创新 2020年36期
关键词:流量分类特征

赵贝贝 赵 旭

(西安工程大学计算机科学学院,陕西 西安710000)

软件定义网络(SDN)是美国斯坦福大学CLean State 课题研究组提出的一种新型网络架构[1]。相较于传统网络,其最大的特点是将控制与转发进行解耦,控制器可实现对网络的全局视图和集中管控,同时开放的API 和可编程性可让第三方对网络进行灵活的设计。虽然SDN 网络架构的管理和开发比传统网络架构更容易,但是其设计也引入了一些新的安全问题。如果SDN 遭受黑客的攻击控制器很容易出现单点失效,南北向接口安全也难以保证[2]。

SDN 所面临的最直接的威胁之一便是分布式拒绝服务(DDoS)攻击。在进行DDoS 攻击时,黑客通常利用自己与受害者之间资源的不对等关系,通过僵尸网络控制大量僵尸主机对受害者发出巨大数量的服务请求。一般情况下,受害者对服务请求的处理能力有限,因此一些正常用户的请求就会被淹没在攻击流量中,当受害者的资源被耗尽,其服务器便无法服务正常合法的用户。相较于传统网络,在SDN 中实施DDoS 攻击更加容易,攻击者们利用SDN 控制- 转发分离这一大特性,通过大量肉鸡耗尽SDN 交换机流表缓存或控制器的系统资源,使得整个SDN 网络瘫痪,无法继续处理新的网络请求。因此,SDN 环境下的DDoS 检测防御已成为当下互联网安全领域的一个重要研究内容。

1 相关工作

针对SDN 网络架构中的DDoS 攻击检测,已有一系列的研究和成果。文献[3]提出了一种基于KNN 的DDoS 攻击检测方法,选取和构建流量特征集矩阵,并进行正常样本训练和异常样本训练,通过分类算法KNN 来区分异常流量和正常流量。该方法具有良好的检测率及较低的误报率,但是其增加了SDN 控制器的负载并占用一定的带宽。文献[4]通过构建深度学习混合模型检测DDoS 攻击。该检测模型输入特征为流表特征和自定义的特征,然后通过训练好的深度学习模型将流量进行分类,该方法检测准确率较高同时对计算资源需求不高。文献[5]将从流表项中提取六元组作为特征向量与SVM相结合来检测DDoS攻击,该算法有一定的检测效果,但实验中模拟的正常流量不够全面且存在一些偶然性。

基于上述研究和分析,传统的机器学习方法虽然在检测DDoS 攻击中有一定效果,但是它们都只是利用当前时刻的攻击流量特征做出分类检测,无法利用流量的历史特征,而DDoS攻击进行时,产生的流量特征跟时序是有一定关系的。因此本文利用RNN 可以记忆训练样本历史信息的特点,结合当前流量特征和历史流量特征信息,可以实现更精确的分类检测。

2 基于RNN 的DDoS 攻击检测

2.1 循环神经网络(RNN)

RNN 是根据“人的认知是基于过往的经验和记忆”这一观点提出的。与DNN,CNN 不同,它可以通过记忆先前的输入,预测后来的输出。网络会对前面的信息进行记忆并应用于当前输出的计算中。RNN 的结构展开图如下图1 所示。

图1 RNN 结构展开图

图中可以看到RNN 由输入层(Input Layer),隐藏层(Hidden Layer),输出层(Output Layer)组成。图示左侧可以看到隐藏层有一个箭头表示数据的循环更新,这是实现时间记忆功能的方法。t-1,t,t+1 表示分别时间序列,x 表示输入的样本,在本文中就是流表项的特征五元组。W、U、V 分别表示输入、此刻输入、输出的样本权重。St表示样本在时间t 处的记忆。o 表示隐藏层的输出值。在t 时刻输出层值为:

其中,f 和g 均为激活函数。f 可以是tanh,relu,sigmoid 等激活函数,g 通常是softmax。根据RNN 在时序上的展开图,将式(2)循环代入到式(1)中可以得到式(3)。

从上述推导可见RNN 任意时刻输出,与之前时刻的输入均有关,这使得循环神经网络具有处理时序数据的能力。但RNN对长期依赖的处理效果不太令人满意,因为其采用链式法则来求导数,所以在训练过程中可能出现梯度爆炸和梯度消失,导致梯度中无法很好地在长期依赖中传递下去。针对该问题,长短期记忆模块(LSTM)成为解决其问题的一种方法,但是其结构复杂,参数较多,极大影响模型训练的效率。门控循环单元(GRU)是LSTM 网络的一种变体,它较LSTM 网络的结构更加简单,对于解决RNN 网络中的长依赖问题有很好的效果。因此,本文构建的RNN 模型的隐层循环体采用GRU 门控单元,GRU可以更好地捕捉时间步距在时间序列中的依赖关系,通过引入了门的概念来修改循环神经网络中隐藏状态的计算方式。

2.2 检测方法

根据正常情况与攻击发生时流量特征的差异性,我们可以把DDoS 攻击检测看成分类问题。基于RNN 的DDoS 攻击检测主要分为三部分,分别为流表收集,流表项特征提取和RNN 分类模型。流表收集部分通过定期的向OpenFlow交换机发送流表请求,从而得到交换机给予的反馈流表信息。然后流表项特征提取部分通过收集的流表条目,分析DDoS 攻击的特点,提取可以用来表述DDoS 攻击的流表项特征五元组,最后将提取特征向量五元组作为输入进行RNN 分类检测以区分时段内流量为正常类型或攻击类型。

整个RNN 模型由一个输入层,3 个隐层循环体,一层Softmax 全连接输出层堆叠而成,模型采用沿时间反向传播算法(BPTT)更新网络权重。模型训练过程中,首先需要对输入的训练集数据进行预处理,其次对预处理后的数据集按照流表项的形式来进行特征提取,选取源IP 增长速率、端口增长速率、发送数据包平均时间间隔、流表项速率、流表数均值构成特征向量五元组后作为输入进行模型训练。对网络采用有监督学习的方式进行训练,并采用沿时间反向传播算法(BPTT)更新网络权重。输出结果经softmax 分类为两种类型,分别为正常流量和攻击流量。

3 实验结果分析

本文使用TensorFlow 开源框架构建RNN 攻击检测模型并使用KDD CUP99 数据集来训练模型并验证。采用准确率(Accuracy)和检测时间两个参数来评估构建的RNN 分类模型的检测性能。准确率的公式为下式(4)。

其中,TP 为真阳性,本文中可以理解为被模型正确识别异常流量的概率。TN 为真阴性,表示被模型预测为负类的负样本。FP(FalsePositive)为伪阳性,可以理解为正常流量被错误识别为异常流量的概率,FN(FalseNegative)为伪阴性,可以理解为异常流量被错误识别为正常流量的概率。

表1 分别反映了不同机器学习算法构建的DDoS 分类模型在同一测试集中检测性能。可以看出相较于SVM、BP 神经网络和CNN,本文所使用的RNN 模型在DDoS 攻击中的检测准确率98.2%最高。同时,相较于其他三种机器学习算法,RNN 在DDoS攻击检测中效率更高检测时间更短。

表1 不同算法性能对比

4 结论

本文提出了SDN 环境下基于RNN 的DDoS 攻击检测方法,相较于传统机器学习算法合理利用了流量的历史特征并结合当前流量特征,实现了更精确的DDoS 攻击分类效果,下一步将RNN 分类模型嵌入SDN 控制器中应用于真实SDN 环境中进一步验证。

猜你喜欢
流量分类特征
根据方程特征选解法
冰墩墩背后的流量密码
离散型随机变量的分布列与数字特征
张晓明:流量决定胜负!三大流量高地裂变无限可能!
分类算一算
寻找书业新流量
不忠诚的四个特征
教你一招:数的分类
说说分类那些事
基于ZigBee 通信的流量研究与改进