时间:2024-07-28
侯泽鹏,赵 炜,王 尧,付 强
(国网河北省电力有限公司信息通信分公司,河北 石家庄 050000)
随着网络业务需求不断扩展,网络资源管理呈现多元化趋势,对网络架构的可扩展性、可靠性以及可管理性提出了更高的要求。为应对上述新的网络架构部署需求,软件定义网络(Software Defined Network,SDN)应运而生。SDN起源于2006年斯坦福大学的Clean State研究课题,其核心思想是控制平面与转发平面相分离[1],克服了网络基础设施部署的局限性,具有开放性和可编程性的特点[2-3]。在SDN中,控制层可以实时掌握全局的网络信息,并通过南向接口将转发规则下发到交换机等一些基础设备中,从而实现网络的集中管控[4]。
分布式拒绝服务(Distributed Denial of Service,DDoS)攻击是一种基于DoS的分布的大规模拒绝服务攻击,主要为一种资源耗尽型攻击。研究人员发现针对SDN 本身的DDoS攻击可以分为两类:针对SDN 控制器设备的Packet_in流量DDoS攻击[5]、针对SDN 网络设备的IP 数据包流量DDoS攻击[6]。因此,研究针对SDN 的实时DDoS攻击检测与识别方法非常重要。到目前为止,针对SDN 环境下的DDoS攻击检测与识别方法总体分为基于统计学计算阈值的方法和基于机器学习分类的方法。
基于统计学的检测方法是选取SDN 中若干流量特征,利用统计学对规定时间窗内的特征量进行计算并设定阈值,如果某特征量超过其设定的对应阈值,则判断为DDos攻击。Shariq 等[7]人将IP是否存在于流表中、是否存在成功的TCP连接、协议类型、数据通信速率作为统计特征,对4个特征量进行统计评分;同时采用自适应阈值算法判定DDoS攻击是否发生。ZHENG 等[8]利用R/S 分析算法计算网络流量Hurst指数,即用该指数反映网络流量的相似性并确定阈值。当发生DDoS攻击时,网络流量的Hurst指数会出现向上或向下偏离阈值。但是该方法的检测率和误报率有待提高。Xiang You等[9]将Packet_in流量作为特征量,利用信息熵计算该特征量的离散程度,如果超过阈值,则判定为DDoS 攻击。该方法普适性较差,不同网络环境下及同一网络环境下不同时刻的阈值变化较大。但是以上使用的各种基于熵的统计方法对于小流量的检测效果不够明显。
基于机器学习的检测方法是选取SDN 中若干流量特征,并利用机器学习的方法对恶意流量进行判别,目前被广泛应用的包括SOM、SVM、神经网络等算法。Jin Ye 等[10]首先利用Onp_Flow_Stats收集各流表和各端口的统计信息,然后根据统计信息计算源IP 和源端口的增长率,并同时计算流数据包数量、字节量标准差和可配对比例,最后以SVM 算法作为分类依据判定DDoS 攻击。但是该方法忽略了匹配为通配符的情况,导致计算结果不准确。姚琳元等[11]利用神经网络检测方法,对流量中的七元组进行特征提取并开展机器训练,最终使其具有检测DDoS 的能力。李曼等[12]设计了一种基于XGBoot的DDoS攻击检测方法,该方法使用XGBoot对流量进行建模、特征提取和训练。但是该算法参数过多,耗费过多的控制器计算资源。
综上所述,针对目前SDN 环境下DDoS攻击检测方法准确率较低、额外负载较高的问题,本文提出一种SDN 环境下基于Renyi交叉熵和RMSprop算法的DDoS 攻击检测方法。该方法以轻量化的流量采集方式,引入双向流比例作为第一层检测方法。如果检测发现异常,利用Renyi交叉熵计算当前网络窗口流量特征熵值,同时利用RMSprop算法计算当前网络窗口流量特征熵值的阈值,通过比较熵值与阈值的大小识别DDoS攻击是否发生。
SDN 网络架构由上到下包含三层:应用层、控制层和转发层。在应用层上按照API标准开发应用程序;控制层是SDN 的核心层,其按照Openflow 协议规定的通信规则,以流表项的形式将转发规则下发给交换机和路由器,并对网络的拓扑和状态信息进行维护和管理;转发层只负责数据的转发和状态收集,实现网络流量的灵活控制[13]。
1948年,香农在信息论中引入信息熵,定量地表征一个随机变量x的随机性及取值的分散程度,其定义为
式中:H(x)为信息熵;p(x i)为随机变量x=x i出现的概率,p(x i)≥0且;n为随机变量x可能出现的所有取值种类[14]。
根据式(1)的相关定义,如果假设有一个随机变量存在两种概率分布p,q,其中p为真实分布,q为非真实分布。按照真实分布p,衡量计算非真实分布q所需要的编码长度的期望,得到交叉熵H(p,q),其定义为
式中:q(y i)为随机变量x=y i出现的概率,q(y i)≥0且
Renyi熵是更早出现的一种熵运算,其定义为
式中:α表示阶数,取值为α≥0 且α≠1,
将公式(2)、(3)相结合,可以得到Renyi交叉熵,其定义为
本模型采用RMSprop(Root Mean Square Prop,RMSprop)机器学习算法动态计算SDN 网络特征量阈值,RMSprop是AdaGrad算法的改进型算法。AdaGrad算法中累计梯度的平方会导致学习率过早衰弱,训练过早结束,为了解决该问题,RMSprop算法仅仅累计过去窗口大小的梯度,采用指数加权平均法
式中:θw为当前网络窗口w与前w-1网络窗口平均状态值之间的Renyi交叉熵阈值;g w为窗口w处Renyi交叉熵变化梯度值;σ为学习率,默认值为0.001;为了避免分母为0,增加很小的参数ε,默认值为e-6[15];S w为状态变量,是指数加权平均值,其用来自动调整参数的学习效率,使得阈值计算过程中收敛速度更快,RMSProp算法将梯度按元素平方做指数加权移动平均计算状态变量。
式中:S w-1为前w-1网络窗口的状态变量;γ为超参数,取值为0≤γ≤1;Hα为当前网络窗口w与前w-1网络窗口状态平均值之间的Renyi交叉熵值。
本文的双层级DDoS识别模型由两层模块组成:攻击检测模块和攻击识别模块。其中攻击检测模块作为常态化监视手段,检测效率快、算法简单、占用资源少,减少了耗费过多的网络设备、控制器资源和对正常业务运行的影响,对网络设备和控制器开展全天候实时检测;当攻击检测模块发现异常,攻击识别模块对网络进行精准化、深度化的状态检测,更好提高DDoS识别的准确性。
一个正常的网络访问,如果节点有越多的请求包,那么就会有越多的应答包从该节点返回。在正常情况下网络设备中输入与输出的数据包吞吐量比是一个常数。然而当发生DDoS 攻击时,攻击者发送大量的数据包,但受害者却无法提供服务的响应。这种情况下输入、输出流量就不成一定的比例,从而使输出/输入比值下降[16]。
根据历史数据包流量值确定流量输入/输出比阈值,其包括网络设备IP 流量输入/输出比阈值K1和控制器设备Packet-in流量输入/输出比阈值K2。然后判断网络设备IP流量输入/输出比是否大于阈值K1,如果大于,则确定检测结果为网络设备异常;判断控制器Packet-in流量输入/输出比是否大于阈值K2,如果大于,则确定检测结果为控制器设备异常。任何一种设备出现异常,则触发攻击识别模块。
攻击识别模块对网络进行精准化、深度化的状态检测。杨志[17]等人通过仿真实验得到Smurf、UDP flood、HTTP flood、SYN flood攻击都出现目的IP熵值异常。基于上述研究成果,本模块引入基于源IP熵和目的IP熵的Renyi交叉熵识别方法。
3.2.1 Renyi交叉熵计算
由于熵的计算是以窗口为单位[18],首先生成当前窗口流量中不同源IP和不同目的IP集合,并分别记作so_ip和de_ip。根据式(1)香农熵,计算得到不同源IP 和不同目的IP 熵值H(so_ip)和H(de_ip)。此时定义当前窗口的网络状态为
对V(w)进行平均值求解,得到(w),如式(8)所示。
为了得到当前窗口w的网络状态,需要与w-1窗口值进行比较,根据式(8)得到w-1窗口平均值,如式(9)所示。
根据式(4)Renyi交叉熵,得到当前窗口w的网络状态熵值为,如式(10)所示。
3.2.2 阈值计算
按照公式(6),递归计算得到各窗口的状态变量计算公式
式中:S0作为梯度累积变量,初始化为0。
RMSprop算法采用小批量随机梯度下降方式,每轮迭代采样最近1/(1-γ)个窗口的小批量随机梯度平方项的加权平均组成一个小批量ϕw,然后利用ϕw计算窗口w处的状态变量,ϕ=1/(1-γ)表示批量大小,如果w<|ϕ|,则根据式(11)计算S w,如果w>|ϕ|时,S w最终表示为
将3.2.1中(w-1)和V(w)定义为一组二维向量x=(w-1),V(w)),并且令f(x)=Hα((w-1),V(w)),采用RMSprop算法计算当前窗口f(x)的动态阈值θw;根据式(10)得到当前窗口的预测熵值Hα((w-1),V(w))。如当前窗口的熵值大于预测熵值,则认为该窗口为异常窗口;否则判定为正常窗口,将结果反馈给攻击检测模块,并调整检测模块对应阈值K1或K2。
本模型的实验环境基于Vmware 安装的Ubuntu 16.04 LTS 虚拟机构建,并通过MiniNet虚拟化网络仿真工具模拟搭建SDN 网络环境,实验构造的网络拓扑见图1。利用MiniNet中OVS定义SDN 网络交换机,选择Floodlight作为SDN网络控制器。该实验网络包含11台关键OVS交换机和18台主机,其中S10、S11为核心层交换机,S7,S8,S9为汇聚层交换机,S1-S6为接入层交换机。本实验使用Scapy作为流量生成工具,模拟伪造源IP和采用真实IP的应用层DDoS攻击,通过生成不同速率和比例的攻击流量,并将上述攻击流量与正常流量混合发送。
图1 SDN实验拓扑
4.2.1 Renyi交叉熵阶数α 的设置
在Renyi交叉熵中,阶数α是一个非常关键的参数,其决定着随机变量各样本之间的差距,选取一个大小合适的α使得检测系统可以更有效地区分正常流量和攻击流量[19]。分别按照以下类别模拟不同DDoS攻击网络环境:1)伪造源IP 攻击流量、采用真实IP的应用层攻击流量、正常流量比为1∶1∶1;2)伪造源IP攻击流量、正常流量比为1∶1;3)采用真实IP的应用层攻击流量、正常流量比为1∶1,并通过改变α值,分别计算上述三种网络环境下Renyi交叉熵值H1、H2、H3,以及不存在DDoS攻击时网络状态Renyi交叉熵值HN。并以阶数α为横坐标,Renyi交叉熵差值为纵坐标,绘制|HN-H1|,|HN-H2|,|HN-H3|变化曲线如图2所示。
图2 Renyi交叉熵差随α 的变化
随着α值的不断增大,Renyi交叉熵差不断增大,且当α=7时差值最大。Renyi交叉熵差越大表明正常网络与发生DDoS攻击时网络差别越大,更能准确地判断网络是否发生DDoS攻击。
4.2.2 RMSprop中参数γ 的设置
RMSprop作为一个深度学习算法,超参数γ作为衰减率,它决定着阈值计算的效率,需要通过枚举来确定参数值。在保证合法流量大小不变的情况下,攻击流量中伪造源IP 攻击流量和采用真实IP的应用层攻击流量比均为1∶1。依次改变RMSprop中超参数γ的值,分别为0.1,0.5,0.9,统计10个窗口内α=7的Renyi交叉熵值与阈值的变化情况。
γ取各值条件下窗口Renyi交叉熵值与阈值比较情况见图3。当γ=0.1时,阈值均大于Renyi交叉熵值,无法检测出DDoS攻击;当γ=0.5时,在攻击早期4个窗口阈值均大于Renyi交叉熵值,后期才出现阈值均小于Renyi交叉熵值,攻击检测实时性较差;当γ=0.9时,所有窗口阈值均小于Renyi交叉熵值,初始攻击阶段便可以实时准确检测,所以为了更精确地计算网络状态阈值,本文将γ设置为0.9。
图3 DDoS攻击的熵值与阈值变化
本文利用RYU REST API,将DDoS识别模型部署到SDN 控制器中。
4.3.1 SDN 交换机双向流比例分析
为了测试SDN 交换机双向流比例,进行了如下实验。控制器通过发送Onp_Flow_Stats消息包获取交换机各物理端口的进出流量统计信息。
按照攻击强度30%,40%,50%进行实验(攻击强度表示攻击流量占总流量的比例),前3个窗口为正常状态,中间10个窗口为攻击状态,后3个窗口恢复正常状态。实验结果见图4。
图4 DDoS攻击时出/进交换机流量比例
由以上实验可得,在1-3窗口,出/进交换机流量比例处于稳定状态,此时比例大约为1/1。启动攻击后,出/进交换机流量比例持续下降,而且攻击强度越大,比例下降越多。根据实验结果可知,出/进交换机流量比例可以作为是否遭受DDoS攻击的检测阶段特征。出/进交换机流量比例变化设置阈值K,当出/进交换机流量比例小于K,触发攻击识别模块。
4.3.2 SDN 网络中Renyi交叉熵值分析
根据3.2.1中定义的Renyi交叉熵计算方法,按照4.2.1中确定的Renyi交叉熵α参数,计算不同攻击强度下Renyi交叉熵值与各类信息熵值,并进行对比分析。每类攻击强度设置6组实验,每组实验统计16 个窗口值,计算6 次熵值的平均值。实验结果如表1所示。
表1 不同攻击强度下SDN网络中各熵值比较
由表1实验可知,本模型引入Renyi交叉熵值度量标准与其他熵值相比,增大了正常流量与攻击流量之间的信息敏感距离。特别对于低速DDoS攻击,攻击速度与强度较弱,成倍放大攻击特征信息,提升攻击判断准确性,并迅速发出攻击告警。
同时为了展示DDoS攻击下,本模型的时间开销低、识别成功率高特点,每次攻击20个窗口,持续攻击20次,选取本文引用文献中较为理想的5个方法,计算检测识别成功率和平均耗时,结果如表2和表3所示。
表2 检测识别成功率对比 %
表3 检测识别耗时对比 ms
表2实验结果显示本模型采用的基于Renyi交叉熵的双层级检测与识别方法具有最高检测识别成功率,与目前最优文献[7]方法相比,本模型识别成功率提升6%左右,原因分析如下。
1)该模型兼顾Renyi熵与交叉熵的双重优点,有效扩大正常流量与异常流量数据间的差异性,对较弱攻击检测效果明显提升。
2)利用RMSprop算法,按照当前实际数值与历史数值平滑动态计算当前阈值,可以吸收瞬时突变,进一步提升检测的准确性。表3实验结果显示本模型的检测识别耗时最短,与目前最优文献9方法相比,不同攻击类型及攻击强度下平均检测识别耗时降低15%左右。
3)该模型采用双层结构模型,检测模块可以过滤掉大部分干扰流量,从而有效降低识别模块计算负载;RMSprop算法计算阈值的收敛速度更快,可以在最短的时间内得到窗口阈值。
为了解决SDN 面临的DDoS攻击威胁,使其在遭受DDoS攻击时,能够第一时间被识别,本文通过分析总结目前SDN 环境下DDoS攻击识别方法存在的问题,从提高攻击识别准确性、实时性和降低设备日常检测负载等方面,提出基于Renyi交叉熵和RMSprop算法的双层级DDoS攻击识别模型。通过仿真实验可以得到,与目前最优的检测识别模型相比,该模型平均攻击检测识别耗时降低15%,成功率提高6%,大大提高了SDN 环境下DDoS攻击检测识别效率。
随着对SDN 研究的深入,除了本文提出的两类DDoS攻击外,逐渐出现一些巧妙的DDoS攻击手段,如利用流规则Duration的慢速攻击手段,在每个流规则中都定义了一个软性存活时间,如果在定义的时间段内没有匹配的数据包,则流规则自动删除[19]。攻击者利用该规则,在软存活时间截止前发送一个数据包,从而长期维持对应流规则,使得流表无法得到更新,恶意消耗流表缓存。此外,还有针对Open Flow 处理机制漏洞Buffered-Packet的攻击[20]都会造成SDN 的拒绝服务。未来将继续完善本文检测识别模型,以适应更加多元化的DDoS攻击。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!