基于软件定义网络的DDoS攻击检测方案

2022-12-28 05:38谢汶锦张智斌张三妞
关键词:特征值队列交换机

谢汶锦,张智斌,张三妞

(昆明理工大学 信息工程与自动化学院,昆明 650500)

0 引 言

软件定义网络(software-defined networking, SDN)是一种逻辑集中控制的新网络架构[1],将网络的控制平面和数据平面解耦分离,抽象了数据平面网络资源,并支持通过统一的接口对网络直接进行编程控制,通过对流表的控制与下发来管理整个网络。尽管SDN拥有许多其他网络架构无法比拟的优势,但其存在的安全隐患依旧令人担忧[2-5]。分布式拒绝服务(distributed denial-of-service, DDoS)攻击是互联网上一个日益严重的问题。攻击者以一些服务器(受害者)为目标,使用大量的虚假请求与这些服务器进行通讯,通过增加该服务器的计算负载和占用内存资源,使合法用户的访问不可用。由于互联网的高速发展,可接入终端的快速增长,攻击者可控制的僵尸网络大量增加,DDoS攻击比以往任何时候都更加常见和激进[6]。

近年来,研究人员对SDN中DDoS攻击的检测提出了很多方案。文献[7]以数据包发送频率作为主机是否为僵尸机的判定标准,使用改进的基于累计和(cumulative sum,CUSUM)算法对网络是否异常进行检测,并实现了阈值的自适应功能[8-9]。文献[10-11]对数据包特征提取进行熵值计算,以数值是否超过阈值来判断网络异常是否有情况。除了以上基于传统统计学的检测方案,为了克服统计学检测存在的准确度不够的问题,机器学习技术被引入其中。文献[12-13]使用基于支持向量机(support vector machine,SVM)的模型来进行异常检测。文献[14]在支持向量机检测模型的基础上作进一步改进,提出了RF-SVM(random forest-SVM)检测算法。文献[15]使用自组织神经网络以流量的“六元组”作为特征来识别恶意流量。文献[16]提出了一种SDN环境下基于广义信息熵和GA-RBFNN(genetic algorithm-radical basis function neural network)的DDoS攻击检测方法,但训练样本数较低。文献[17]将熵值检测与深度学习模型融合,降低了检测方案对控制器的占用,但是特征值提取较少。文献[18]提出了触发检测与深度检测相结合的DDoS联合检测方案。文献[19]对网络数据包源地址、目的地址、相应时间的特征提取并使用朴素贝叶斯算法、K-近邻算法进行分类识别,但是只使用了数据集,没有用实际SDN网络仿真。针对以上问题,本文提出一种在SDN环境下队列论与多维条件熵结合作为粗粒度检测模块,机器学习分类模型作为细粒度模块的检测方案。

1 检测原理

在SDN环境下,一切都由控制器进行管理。根据OpenFlow协议,一个新的报文来到交换机时,交换机中的转发表并没有匹配的路由规则,交换机利用Packet_in数据帧将其封装并发送至控制器,请求新的路由规则。控制器收到消息之后提供相应的应答策略,将指示发送给对应的交换机,交换机根据接收到的规则处理报文。

本文使用粗粒度与细粒度相结合的检测方案。粗粒度检测由两个并行的检测模块构成,多维条件熵检测模块与队列长度检测模块,DDoS攻击发生时,控制器会收到大量交换机请求的数据帧,导致数据包的熵值以及控制器入口队列长度迅速发生变化。因此,使用多维条件熵计算达到数据包相关特征,使用M/M/1队列理论计算控制器Packet_in数据帧队列长度,若熵值或队列长度超过设定阈值则设置警告标志。粗粒度检测模块实时检测的同时,控制器会检查警告标识,如果警告标志未被设置,控制器向交换机下发流表,更新路由规则;否则,控制器将数据包送入细粒度检测模块进一步检查。

1.1 粗粒度检测-条件熵检测模块

当SDN中发生DDoS攻击时,交换机会向控制器递交大量的Packet_in数据帧。由于OpenFlow协议并不会改变到达数据的封装结构,控制器便可对数据包进行特征提取,该模块检测的思想在于从大量统计数据中提取有效特征,创建相应的阈值数据库,并根据后续检测结果做自适应调整。

本文使用条件熵对数据特征进行提取,条件熵表示在已知随机变量b的条件下随机变量a的不确定性。条件熵可以更好地表示当一个随机变量为定值时,另一个随机变量的分布情况,熵值越大,该变量的随机性越大,反之越小。条件熵的公式为

(1)

为不失一般性,本文使用WIDE实验室数据集作为正常流量,使用林肯实验室DARPA 1999数据集、CIC-DDoS2019数据集作为攻击流量,提取多维条件熵特征,确定起始阈值,作为判定标准,移入SDN环境中进行仿真测试。检测窗口W控制特征的变化情况,窗口过大将降低条件熵对特征变化的敏感度,从而降低精确度,W的选择应依据实验网络的实际负载确定,在本文中,根据实际实验环境,经测量分析,W=200能较好地体现所使用数据集的变化情况。

1.1.1 特征选择

1)H(Sip|Dip)。根据DDoS攻击中源地址与目的地址的多对一映射关系,本文使用H(Sip|Dip)作为源地址关于目的地址的条件熵。正常流量与目标服务器之间大多是一对多或是一对一建立连接,随机性较低,而攻击流量则会表现出极强的随机性和不确定性,有明显的多对一关系,因此H(Sip|Dip)可分辨双方地址之间的随机性大小。

2)H(Sip|Dport):源地址关于目的端口的条件熵。DDoS攻击者会尽可能与目标服务器端口连接,与其发起连接的将会是批量、随机的IP地址,其存在多对一关系,正常流量多数情况下与固定端口连接,大多为一对一和一对多,因此H(Sip|Dport)可分辨源地址与目的服务器端口间的随机性大小。

3)H(Dport|Dip):目的端口关于目的地址的条件熵。为了快速耗尽受害主机资源,DDoS攻击者会对受害主机所有开放端口进行攻击,目的端口比目的地址分布更广,存在多对一关系,因此H(Dport|Dip)可描述目的端口与目的地址间的随机性大小[20]。

1.1.2 阈值选择

将数据集进行预处理后,对正常流量及攻击流量的H(Sip|Dip)、H(Sip|Dport)、H(Dport|Dip)进行特征提取,对计算结果进行线性函数归一化,将结果数据等比例缩放至[0,1]范围内,各特征条件熵频率分布直方图如图1所示。

图1 各特征条件熵频率分布直方图Fig.1 Histogram of conditional entropy frequency distribution of each features

根据图1分析DDoS攻击流量与正常流量各特征的出现频率及分布情况可知,攻击流量与正常流量的重叠面积越小,错误检测概率越小,可根据该统计结果对阈值进行选择。

图1中,正常流量的H(Sip|Dip)、H(Dport|Dip)偏小,分布接近于0,攻击流量偏大,分布接近于1。这是因为正常用户与目标服务器通信,目标服务器被访问端口与用户IP较为统一,分散度小,源IP与被访问端口对于目的IP较为有序,因此熵值较小,而攻击流量是大量由攻击者控制的僵尸机所产生的大量随机、无序的IP地址在短时间与服务各个端口同时发起连接所产生,分散度广,混乱度高,因此熵值偏高。正常流量的H(Sip|Dport)分布则相反,攻击流量分布接近于0,正常流量接近1,这是因为正常流量中对目标服务器不同端口访问的用户较为随机,攻击流量则会让每一个随机生成的IP地址尽可能多地与目标服务器端口进行通信,最大程度消耗目标服务器资源。

图1中重叠部分表示了检测的误差,攻击者会最大程度模仿正常流量,增大图中重叠面积,使其更难以区分。图2为根据上述结果分别测量得到的每个特征值的错误拒绝率(false reject rate,FRR)与错误接受率(false accept rate,FAR)。

图2 不同阈值下各特征值的FAR和FRRFig.2 FRR and FAR for diferent verifcation threshold of each feature

用i表示每个特征值,根据上述统计结果选择FAR最接近FRR时的值作为该特征值的阈值Ti,用Ei表示第i个特征值选定阈值Ti后的错误率,用每个特征值的接受率(Ai)评价第i个特征值的准确率,Ai=1-Ei,表1为根据上述方法对各特征值对应参数进行计算后的结果。

表1 各个特征值对应的参数值Tab.1 Parameter values corresponding to each characteristic value

由于3个特征值都存在错误率,使用逻辑回归算法对3个特征值进行合并,如果任一特征超过其阈值Ti则为其分配分数si=1,否则为0,R为最终的结果函数,可以表示为

(2)

使用上述方法对数据包的3个特征值进行提取计算,若任意两个特征值超过阈值Ti,即结果函数R>0.6,则认为发生了DDoS攻击。为了消除设置静态阈值的不足,触发细粒度检测持续时间内,所有被识别为攻击的数据包都会被存储在攻击数据库内,一旦检测框架的Flag被设置超过50次后,根据攻击数据库对相应特征值Ai进行订正更新,实现自适应调整。

1.2 粗粒度检测-队列长度检测模块

队列检测模块如图3所示,当新的数据包到达时,交换机会将无路由记录的数据包通过Packet_in数据帧发送给控制器,通过控制器下发流表获取新的路由规则并根据该规则转发相应的数据包,因此,到达控制器的Packet_in数据帧会在控制器的入口排队。发生DDoS攻击时,数据包的到达率λi、流表无匹配概率pnf会迅速上升,随着Packet_in数据帧发送概率pnfλi的大幅提升,交换机将发送大量的Packet_in数据帧给控制器,由于控制器的服务强度μc是一定的,因此控制器入口队列长度Li会迅速增加,该模块实时检测控制器Packet_in数据帧队列长度,一旦长度Li超过阈值,则认为发生了DDoS攻击,设置警告标志Flag=1。

图3 队列检测模块示意图Fig.3 Schematic diagram of queue detection

根据M/M/1队列模型,控制器中队列Ls平均长度为

(3)

进一步,用Lq表示队列中正在排队的数据帧数量,即Lq=Ls-ρ,可得

(4)

用p0表示队列为空时的概率,pn表示队列长度为n时的概率,可得

pn=ρn(1-ρ)=ρnp0

(5)

用Lt表示队列长度阈值,有

Lt=Lq+kσq

(6)

(7)

(6)—(7)式中:k为放大系数;σq为队列长度标准差。联合(4)式、(7)式,可得队列长度阈值Lt为

(8)

用s表示队列长度Lq大于阈值Lt的最小整数,队列长度超过阈值的概率P{Lq≥s}为

(9)

图4为不同放大系数k与不同服务强度ρ计算得出的队列长度阈值Lt与超过该阈值的概率P。图4中,队列长度阈值Lt随着服务强度ρ与放大系数k的增加而增加,超过阈值的概率P则相反。

图4 不同k值与ρ值情况下的队列长度阈值与超过该阈值的概率Fig.4 Queue size and Probability with different values of k and ρ

经测量,本实验机使用Mininet模拟网络拓扑,以Open vSwitch作虚拟交换机时的满载服务强度ρ=0.85,根据不同控制器性能该取值可能不同。为不使控制器处于满载状态进而对测量结果造成误差,选择服务强度ρ=0.75,队列长度超过阈值的概率P=1%。服务强度ρ=0.75时,链路属于高负载状况,可减少因为闪拥现象引起的队列长度激增导致误判的概率[21]。因此,本文选择放大系数k=4,队列长度阈值Lt=16。

1.3 细粒度检测模块

在SDN环境中,控制器处理由交换机发送来的Packet_in数据帧时,会首先检查警告标志Flag。Flag为0,则正常下发路由规则,更新相应交换机流表项;若Flag为1,则启动细粒度检测模块,细粒度检模块基于OpenFlow协议向发送Packet_in数据帧的交换机收集流表项及计数器信息进行统计处理检测,该模块作为最终的判决模块。

本文使用机器学习中的k近邻分类(K-NN)、朴素贝叶斯(NB)、随机森林(RF)、决策树(DT)、支持向量机(SVM)5种监督学习模型来进行分类检测,K-NN使用“kd-tree”算法,RF与DT使用“Gini impurity”衡量不纯度,NB使用“Bernoulli”模型,SVM使用“RBF”核函数。实验中使用国际标准数据集CIC-DDoS2019作为训练样本及标签对上述模型进行训练,得到适用于SDN网络的分类器,然后将训练好的模型放入仿真环境,进行实时攻击检测,表2为在SDN环境中细粒度检测模块中提取的8维流表项特征,其中,n表示收集到的流表项总数,i为各条流表项,matches和lookups分别表示交换机中匹配成功的次数与查找流表项的次数,idle_ti表示每个流表项两次流之间的平均空闲时间。

表2 特征选择Tab.2 Features selected

续表

2 实验与评估

本文使用的实验计算机CPU为i7 3.3 GHz,内存8GB,操作系统为Ubantu16.04。使用Mininet搭建SDN网络环境,选用支持OpenFlow协议的Open vSwitch作为交换机,Pox作为SDN控制器。Pox是一个用Python编写的基于组件的软件定义网络框架,具有良好的稳定性和可编程性。由于SDN被广泛应用于网络中心,本文使用如图5所示的胖树结构作为网络拓扑进行实验,h1为服务提供者,h31和h32作为攻击者向h1发起DDoS攻击,其余主机为正常用户。

图5 SDN环境下的网络拓扑Fig.5 Network topology in SDN environment

本实验中,使用CIC-DDoS2019数据集对分类模型进行训练,使用交叉验证减少数据过拟合,模型训练数据情况如表3所示。

表3 模型训练数据情况Tab.3 Normal and attack records for training and testing

使用Mininet中自带的iperf工具,将收集的真实网络流量引入Mininet生成正常数据,DDoS攻击流量使用hping3工具实现,生成包括SYN Flood,UDP Flood,ICMP Flood的混合攻击,攻击数据包内容和大小由程序随机生成,使用TCP dump和Wireshark联合对数据进行抓取分析,仿真环境流量如表4所示,其中正常流量的比例为85%的TCP流量,10%的UDP流量,5%的ICMP流量,共计80 000条[22]。

表4 仿真环境流量Tab.4 Simulation environment traffic

本文使用表5所示的4个衡量指标对5种分类模型检测结果进行评估,其中TP为攻击流量被正确识别的数量;FP为攻击流量被错误识别的数量;TN为正常流量被正常识别的数量;FN为正常流量被错误识别的数量。

表5 评估模型检测结果的4个指标Tab.5 Four indicators for evaluating the test results of the model

表6为5种分类模型检测的最终结果。实验数据表明,经数据集训练好的随机森林分类器在SDN环境下表现最佳,各项分数都在98%以上,朴素贝叶斯与支持向量机的检测准确率较低。表7为本文提出检测方案的准确率与文献[19]、文献[10]、文献[8]、文献[20]的对比。由表7可见,本文提出的检测方案与现有的方案相比准确率有所提高,具有较强的可靠性。

表6 检测结果Tab.6 Test result %

表7 检测准确率对比Tab.7 Performance comparison of detection accuracy %

3 结 论

本文提出了一种基于SDN的粗粒度与细粒度相结合的检测方案。粗粒度检测模块实时运行,通过监测Packet_in数据帧中提取的多维条件熵与控制器队列长度是否超过阈值来反映系统的异常状况,起到实时预警作用。一旦粗粒度检测模块发出预警,立刻启动细粒度检测模块进行高精度检测,细粒度检测模块对可疑交换机流表项进行关键特征提取检测,识别是否有恶意流量。实验结果表明,该检测方案检测准确率高,具有较高实用价值。

猜你喜欢
特征值队列交换机
利用LMedS算法与特征值法的点云平面拟合方法
面向未来网络的白盒交换机体系综述
单圈图关联矩阵的特征值
局域网交换机管理IP的规划与配置方案的探讨
队列队形体育教案
队列里的小秘密
基于多队列切换的SDN拥塞控制*
凯莱图的单特征值
更换汇聚交换机遇到的问题
基于地铁交换机电源设计思考