SDN下基于深度神经网络和三支决策的入侵检测算法
2021-12-13杜祥通李永忠
杜祥通,李永忠
(江苏科技大学 计算机学院,镇江 212100)
随着云计算、物联网、大数据的兴起,网络安全受到了越来越多的关注.分布式拒绝服务(distribute denial of service, DDoS)攻击一直以来都是互联网的主要威胁之一[1].现如今的网络为了体现其架构的高扩展性多采用分布式架构,但也导致了很多安全漏洞的出现,新型的网络技术环境下的DDoS攻击检测面临着很大的挑战[2].
软件定义网络(software defined network,SDN)作为新兴的网络架构,解耦了网络的控制层与数据层,被认为是未来网络发展的方向[3].为防御SDN下的DDoS攻击,国内外许多网络安全专家在常规方法的基础上,将机器学习应用于DDoS攻击的入侵检测.深度神经网络(deep neural networks,DNN)作为深度学习的一个分支,与传统的机器学习相比,DNN可以将低层特征组合后形成更加抽象的高层表示,使得一个基于DNN的学习系统不依赖人工的特征选择,发现数据分布式的特征,学习到更加复杂的表达函数[4].但由于SDN环境下的DDoS攻击的特征数量有限,常规的分类都是二分类,即正常流量和攻击流量,往往会由于特征的不充足和信息的不确定性导致流量分类的错误.
因此,为解决软件定义网络中DDoS攻击难以检测、传统的特征提取方式不能提取到合适的特征而导致的入侵检测率低的问题,文中提出一种SDN下基于DNN和三支决策的入侵检测模型.DNN具有对高维数据的特征提取的完备性高的特点,采用在SDN流表项下直接获取的特征和手动构建的特征作为特征集.随后使用三支决策入侵检测模型进行数据分类,该入侵检测模块将流经控制器的流量分为正域(正常流量)、负域(入侵流量)、边界域(不确定的流量),对于边界域流量使用KNN算法再次进行分类.文中模型通过多次实验改良后,对SDN下的DDoS攻击具有更高的识别率,更低的误报率,提升了DDoS攻击的检测效率.
1 相关技术
1.1 入侵检测技术
目前已有的SDN下的入侵检测技术按照类别可划分为常规的检测技术,基于传统机器学习的检测技术以及基于深度学习的检测技术.常规的入侵检测技术已经取得了初步的效果,文献[5]提出了SDN下基于统计解决方案的DDoS攻击检测方法,该方法在检测范围和检测准确率上相比其他基于熵的方法有显著的效果.文献[6]提出了SDN下选择性检测数据包来检测DDoS泛洪攻击的方法,一定程度上提高了入侵检测的正确率.但由于SDN下的DDoS攻击的多样化和分布性,使得常规的检测方法容易产生误报、检测效率变低,已经很难适用于现如今的入侵检测中,为此,传统的机器学习被一些国内外专家应用于在软件定义网络的入侵检测中.
基于传统的机器学习的入侵检测技术在软件定义网络中有更好的检测效果.文献[7]从流量跟踪的角度讨论DDoS攻击,使用了不同的机器学习方法将流量分为正常和异常.机器学习在进行入侵检测时,需要手动构建特征进行检测,文献[8]提出基于KNN的DDoS攻击检测方法,检测模型输入的特征均为手动构造的特征,影响了检测的效率,深度学习在SDN中的入侵检测的应用可以有效解决该问题.
深度学习是机器学习领域的一个新的研究方向,在图像识别和自然语言处理方面已经起到了很大的作用,解决很多复杂的模式识别等人工智能的难题.深度学习在SDN下的入侵检测也已经有部分的应用,如文献[9]提出了一种在OpenFlow的SDN中基于深度学习的DDoS攻击的检测和防御,该方法具有较高的精确度的同时运算速率很高.
1.2 深度神经网络
深度学习是一种有效的智能算法,其原理模拟人脑思考的过程,通过原始特征提取出更为抽象的高层特征[10].深度神经网络是以人工神经网络为架构,能够处理具有许多隐藏层的神经网络的有效训练算法[11].
深度神经网络(图1)是一种判别模型,具备至少一个隐藏层的神经网络.“深度”是指一系列连续的表示层,通过这些层可以对数据进行高层的抽象,多层带来的优点是可以用较少的参数表示复杂的函数.
图1 深度神经网络结构
(1)
神经网络在感知机模型上的扩展主要有:
(1) 加入多层隐藏层,模型的表达能力随着网络深度的加深而增强.
(2) 输出层的神经元可以有多个输出,使得模型可以应用于分类,回归,降维和聚类等.
(3) 对激活函数做了扩展,加入了非线性因素,提高了模型的表达能力.
1.3 三支决策
基于文献[12]在研究概率粗糙集和决策粗糙集过程中总结出的一种决策模式,利用两个状态集和3个行动集来描述决策的过程.状态集Ω={X,X},行动集A={ɑp,ɑB,ɑN}分别表示接受、延迟决策和拒绝接受某事件.记λPP,λBP,λNP,分别表示χ属于X时,采取ɑp,ɑB和ɑN3种行动下的损失.λPN,λBN,λNN分别表示χ不属于X时,采取ɑp,ɑB,ɑN时3类行动的损失,其期望损失值分别为:
R(ɑp|[χ])=λPPP(X|[χ])+λPNP(X|[χ])
(2)
R(ɑB|[χ])=λBPP(X|[χ])+λBNP(X|[χ])
(3)
R(ɑN|[χ])=λNPP(X|[χ])+λNNP(X|[χ])
(4)
由贝叶斯准则,选择期望损失值最小的行动集作为最佳决策方案,POS(X)、BND(X)、NEG(X)分别表示正域、边界域、负域, 做一个合理的假设:0≤λPP≤λBP<λNP,0≤λNN≤λBN<λPN,则三支决策准则(P),(B),(N)的条件如表1.
表1 决策规则(P)-(N)条件
通过设置阈值,将样本分为正域、负域、边界域.阈值的设定由期望损失值计算得到.根据贝叶斯准则,设置两个阈值α和β为:
(5)
(6)
则规则(P)-(N)可重写为:
(P1):若P(X|[χ])≥α,则χ∈POS(X)
(B1):若β
(N1):若P(X|[χ])≤β,则χ∈NEG(X)
2 基于深度神经网络和三支决策的入侵检测算法
2.1 入侵检测算法结构设计
文中基于DNN的三支决策DDoS攻击检测模型如图2,主要分为两个模块,即特征提取模块和入侵检测模块.首先输入数据,然后在特征提取模块,并进行数据的预处理,提取关键的字段作为DNN特征提取模型的输入,提取特征后通过三支决策入侵检测模型进行数据的分类,对于边界域的数据使用KNN分类器重新分类后,最终输出分类的结果.
图2 DNN-TWD入侵检测结构模型
2.2 入侵检测算法描述
(1) 算法流程
入侵检测算法流程如图3,分为输入数据、特征提取、数据分类、边界域处理、输出结果5个阶段.首先对训练集数据进行预处理,随后将数据放入DNN特征提取模型进行特征提取.将提取到的特征放入三支决策分类器,输入测试集,使用分类器进行分类.通过训练集得出的阈值判断数据是否属于边界域,若不属于边界域,直接将数据进行二分类输出,如属于边界域将边界域的数据放入KNN分类器重新进行分类.最后得到入侵检测模型检测的结果,进行输出.
图3 入侵检测算法流程
(2) DNN模型特征提取算法
在使用机器学习进行特征的提取时,特征的选择是算法能否成功的关键[13].选择好的特征可以提升算法的准确率,过少的特征影响算法的正确率,过多的冗余特征又会影响算法的效率.DNN模型通过深度学习能够自动逐层提取特征,并且对提取的特征进行权重值的分配,来达到最好的效果.
根据OpenFlow协议,每条流表的信息都由多个流表项组成,而每个流表项都由多个字段组成.在实验的DNN模型里,直接提取16维字段作为特征输入,此外手动构建了2个特征以区别于SDN下的常规特征,共同构成的DNN模型输入的18维度特征.
手动构造的2个特征为:
平均数据分组数
(7)
式中:packets为分组的包数;duration为持续时间.
平均数据分组位数
(8)
式中:bytes为流表中数据包字节数.
图3中特征提取的具体算法为DNN模型特征提取算法.
输入:训练集、特征集
输出:提取的特征.
算法的具体步骤如下:
Step1:设置循环次数t,模型层数为5,包括一个输入层、一个输出层和三个隐藏层.
Step2:随机初始化每一层的权重向量W和偏移矢量b,设置样本的标准偏差为0.1.
Step3:设置激活函数,选择tanh函数,第h层的输出为:
lh=tanh(bh+Whlh-1)
(9)
Step4:设置输出函数,选择Sigmond函数,代价函数F(W)为:
(10)
Step5:定义代价函数F(W)的梯度θh为:
(11)
即
Wh+1=Wh-τhθh
(12)
式中:τh为学习效率
Step6:经过多批次的梯度下降训练循环迭代后,通过最小化代价函数,得到权重值和偏置后输出提取的特征.
(3) 三支决策分类算法
在入侵检测的数据分类阶段,将三支决策应用于贝叶斯模型,将三支决策分类器转化为概率模型进行数据分类.
输入:测试集X、阈值α,β.
输出:入侵检测分类结果.
算法的具体步骤如下:
Step1:根据决策粗糙集的思想,设置相应的决策所产生的代价的值,即设置λPP,λBP,λNP,λPB,λBN,λNB.根据式(5、6),求出阈值α,β.
Step2:在该分类器中,样本为输入的测试集,将提取的特征放入分类器.将流量定义为事件X,根据规则(P)-(N),把流量分为正域(正常流量)、边界域(不确定流量)、负域(攻击流量).对于正、负域中的流量直接进行分类输出,分别对应为正常流量和入侵流量,对于边界域的数据放入KNN分类器中重新进行二分类.
Step3:边界域处理.对于边界域的数据,使用KNN分类器对边界域的流量进行处理,KNN中节点相似度的计算需要使用距离度量来进行判断,使用欧氏距离计算两点之间的距离,使用交叉验证来确定K的值,再将边界域中的数据进行二分类.
Step4:输出分类结果为二分类数据即正常数据与入侵数据,将数据进行统计分析.
3 实验结果分析
3.1 实验环境和实验数据
文中搭建SDN环境进行仿真实验,在Mininet上运行,控制器采用floodlight,测试集中正常样本采用DARPA 99数据集中的网络流量,DDoS攻击样本采用MIT提供的DDoS数据集LLS_DDoS_2.0.2,所用数据共有7万余条.实验数据集分布如表2,对数据预处理后作为实验数据.
表2 实验数据集
3.2 数据预处理
Min-Max对数据进行归一化处理,将所有数据均转化为字符型.采用标准化方法对训练集和测试集进行处理:
(13)
式中:v为第i个属性列的一个值;mini为第i个属性列的最小值;maxi为第i个属性列的最大值.将数据归一化后,进行数据的输入.
3.3 实验结果分析
选用正确率(accuracy,ACC)、检出率(detection rate,DR)、误报率(false positive rate,FPR)、精确率(precision rate,PR)和F1(F1-score)作为评测入侵检测系统性能的主要评价指标.
(14)
(15)
(16)
(17)
(18)
式中:TP和TN分别为攻击记录和正常记录已正确分类;FP为被误认为是攻击的正常记录;FN为错误分类为正常记录的攻击记录.
使用文中实验模型分别与其他入侵检测模型在LLS_DDoS_2.0.2数据集上进行实验对比,对比实验所选的模型有SDN下基于K近邻算法(KNN)的入侵检测模型[8]、SDN中基于信息熵与DNN的DDoS攻击检测模型[14]、SDN下的跨平面协作DDoS检测模型[15]以及SDN下基于深度信念网络(DBN)的入侵检测模型[16].结果如表3.
表3 不同模型的实验结果评估指标
由表3和图4可知,在使用DNN提取特征的基础上使用三支决策进行入侵检测后在正确率、检出率和F1分数上均有明显的提升.同时误报率如图5,随着训练样逐渐增多,误报率有暂时的上升, 但最终经过大量样本训练后,误报率趋于稳定.
图4 不同算法的检测效果对比折线图
图5 误报率检测效果
将不同的算法进行ROC曲线对比,如图6,以误报率为横坐标,检测率为纵坐标,可以看出本文算法DNN-TWD的ROC曲线面积比其他算法的面积大,说明本文所提算法的性能更优,可以更好的进行入侵检测.
图6 不同算法的ROC曲线对比
文中实验模型手工提取了两个特征,进行对比实验.第一组实验直接用OpenFlow字段提取的16个特征字段作为模型的特征输入,第二组实验用16个原始字段加2个手工提取的两个特征作为模型的输入,通过正确率与耗时进行对比(表4).
表4 不同特征输入下的正确率与耗时对比
通过表4可以发现,手动添加两个特征以后,检测模型耗时增加了仅0.05 s,但是正确率提高了0.71%,可以证明重构特征的有效性.
通过以上实验可以得知,文中基于DNN的三支决策DDoS攻击检测模型对SDN下的DDoS攻击具有很高的识别率和准确率,在OpenFlow中字段的特征维数较低情况下使用在SDN流表项下直接获取的特征和手动构建的特征进行特征的重构后,检测效率有更大的提升,为SDN下的网络安全提供了更有效的保障.
4 结论
针对SDN下的网络攻击,提出了基于深度神经网络的三支决策入侵检测模型.该模型首先从OpenFlow流表中直接提取的特征和手动构造特征构成特征集,使用DNN进行特征的提取,最后利用三支决策检测模型进行流量的入侵检测,从而实现SDN下的DDoS攻击检测.经过仿真实验验证,所提实验模型在正确率、检出率和精确率上都有提升,并在误报率上有所降低,提高了检测的效率.在以后的工作中,将会从解耦特征和入侵防御入手,尽可能地保留权重比较大的攻击特征,减少权重较小的特征,进一步提高检测的效率,并设计检测后的防御方案进一步提高SDN下的网络安全.