SDN中DDoS攻击的高效联合检测和防御机制
2020-09-16曾荣飞王兴伟
曾荣飞, 高 原, 王兴伟, 张 榜
(1. 东北大学 软件学院, 辽宁 沈阳 110169; 2. 东北大学 计算机科学与工程学院, 辽宁 沈阳 110169)
随着计算机网络的高速发展,传统的TCP/IP网络在已有架构的基础上不断引入新技术,传统网络已不能满足当今网络需要,一种新型网络架构——SDN(software-defined networking)由此出现.这种新型网络架构的最大特点是将数据平面与控制平面相分离,通过编程控制网络[1].目前,一些企业已成功将SDN部署到真实的网络环境.例如,谷歌的数据中心[2]、无线传感器网络[3]、NTT边缘网关[4]等.由于SDN拥有在传统网络中无法获得的灵活性、可编程性和可扩展性,一提出就受到广泛关注[5].
新型SDN网络在具有诸多优点的同时,还面临着控制器DDoS攻击等安全问题.控制器是SDN的核心,攻击者一旦接入控制器,就可以控制整个网络,从而造成难以预料的危害.
针对上述问题,本文设计了一种高效的联合检测和防御机制,利用改进的SOM算法和多维条件熵算法分别对流表项和控制器进行检测,基于这两种算法的检测模块互相为对方提供反馈信息.本文针对不同的联合检测结果采取不同的防御策略.该检测和防御机制对攻击流量更加敏感,从而能够更好地对SDN控制器中的DDoS攻击进行检测和防御.
1 相关工作
到目前为止,针对该工作使用的检测方法主要包括统计学和人工智能两大类.
Mousavi等[6]根据SDN控制器使用资源的情况,提出了一种基于目的IP地址熵变化的轻量级解决方案来检测SDN中的DDoS攻击.
Li等[7]、Jiang等[8]和Vokorokos等[9]均采用自组织映射(self-organizing mapping,SOM)算法对流量进行聚类,但是传统的SOM算法其网络结构是固定的,网络没有很好的自适应能力.本文针对以上局限性对传统SOM算法进行改进,增加了生长操作,增强了网络的自适应性.
2 架构设计
本文将面向SDN控制器的DDoS攻击分为两个阶段:第一个阶段是针对SDN中交换机的流表项;第二个阶段是针对大量被发送到控制器的数据包.结合两个攻击阶段的特点和传统网络中的三种检测方式(源端、中间网络、目的端),提出了以改进SOM算法为主,多维条件熵算法为辅的联合检测机制.另外,本文还根据不同的检测结果采取不同的防御策略,整体框架如图1所示.
2.1 联合检测机制
2.1.1 改进自组织映射算法
本检测是针对攻击的第一阶段.利用改进的SOM算法对OpenFlow交换机中流表项信息进行检测分类.对判定为正常型的流表项直接放行,攻击型的流表项传入防御模块,可疑型的流表项传入多维条件熵检测模块.根据多维条件熵检测模块的反馈结果来决定是否新增聚类中心.
传统的SOM算法主要包括初始化、采样、竞争、突触适应这几个步骤.该算法存在诸如网络结构不能动态变化,网络在没有经过完整的学习前,不能增加新类别等不足.为此,本文提出改进SOM网络,此种网络增加了动态生长操作,算法流程图如图2所示.
该算法首先为每一个输入样本x,找到其最佳匹配节点b及其邻域.然后,调整与b相连以及b邻域中各节点的权值.接着,计算x与b的累积误差M,若M大于预先设定的生长阈值GT(growth threshold),则在b的邻域中生成一个新节点,否则做权值调整操作,直到算法收敛.改进的算法详细步骤如下:
1) 为使输入数据落在[0,1]区间,本文采用简单缩放中的min-max标准,公式为
(1)
2) 记第一个输入的向量为第一个聚类中心,根据需求计算生长阈值GT,公式为
GT=D×(1-β)n
(2)
其中:D是节点权重向量的维数;β为调节因子;n为聚类次数,满足0<β<1,n>1.
3) 找到最佳匹配节点b,并记录当前神经元的最大差异(该神经元与其他神经元的最小距离),记为dis,初始化为0.
4) 计算W的累积误差,记为M,公式如下:
(3)
式中:v为节点权重向量;D为v的维数.
5) 若M>GT,按式(4)做生长操作,生成b的新的子节点c;
LR(i+1)=LR(i)×σ
(4)
其中:LR(i)为学习率;σ为调节因子,满足0<σ<1.
6) 若M≤GT,按式(5)做权值调整操作;
(5)
式中:vj(i+1)为j调整后的权值;Ni+1为第i+1次训练时b的邻域.
7) 当有新聚类中心生成时,计算该聚类中心与其他聚类中心的最小欧氏距离,记为S.若S>dis,则更新dis=S.
8) 重复以上操作,直到无节点生成.
9) 计算每一个生成的聚类中心获胜的次数,将获胜次数过小的中心节点删除,并重新训练,直到网络不再有新节点生成.
2.1.2 多维条件熵算法
本检测是针对攻击的第二阶段.利用该算法对已上传到控制器中的数据包和从改进SOM检测模块传来的可疑型流表项检测,将检测结果反馈给改进SOM检测模块,使改进SOM检测模块可以根据反馈信息决定是否增加新的聚类中心.
该算法首先是对控制器中的数据包进行特征提取,包括源IP地址Sip、目的IP地址Dip和目的端口号Dport.由这三个特征可以得到H(Sip|Dip),H(Dip|Sip)等6个条件熵.然后,由以上6个条件熵组成1个六维向量.计算该六维向量与正常情况下流表项的六维向量的欧氏距离,结果与阈值进行比较,如果连续5次大于阈值,则认为攻击已经发生.对正常情况下六维向量的值和阈值的选取可通过训练正常流量和攻击流量的实验获得.
此外,该检测模块需要将目的端检测结果反馈给改进SOM检测模块,并与改进SOM检测模块相结合,具体结合如下:
在改进SOM检测模块中,当S>dis时,新增聚类中心;当GT
1) 当改进SOM检测模块新增聚类中心时,若多维条件熵检测模块的检测结果为正常,则将该聚类中心标记为正常;反之,标记为攻击.
2) 当改进SOM检测模块的聚类中心设为待定聚类中心时,由目的端检测结果和距离此待定中心最近的聚类中心标签的结果共同决定是否新增此聚类中心.若二者检测结果相同,则不增加此聚类中心,并将离其最近的聚类中心当作生长时期的获胜节点.若二者检测结果不同,则新增此聚类中心并将其标记为目的端的检测结果.
3) 当无新增聚类中心且多维条件熵检测模块检测到攻击时,对攻击和可疑数据包对应将要下发的流表项做新增聚类节点操作,并做出标记.
2.2 联合防御机制
对于改进SOM检测模块,采用限流的常规防御策略;对于多维条件熵检测模块,采用过滤的快速防御策略.该机制流程图如图3所示.
对于改进SOM检测模块,将判定为攻击型的流表项通过添加表1中的属性到Floodlight控制器的ACL中进行限流操作.
表1 ACL控制列表中的属性Table 1 Attributes in ACL control list
对于多维条件熵检测模块,结合该模块对目的端和改进SOM检测模块传入的可疑流表项的检测结果来调整各流表项在Floodlight控制器中防火墙的优先级,优先级高的流表项采用过滤操作.优先级达到10时,认为此节点无限接近正常节点;达到0时,认为无限接近攻击节点.首先,将可疑节点的相关信息添加至防火墙条目中,优先级统一设置为5.然后,根据联合检测结果的四种情况提出如下四类防御策略.
一是目的端未检测到攻击且可疑节点的熵值正常,此时认为可疑节点是正常节点,提高此节点在防火墙中的优先级;二是目的端未检测到攻击但可疑节点的熵值异常,此时不能确定可疑节点类型,不调整该节点在防火墙中的优先级;三是目的端检测到攻击但可疑节点的熵值正常,此时攻击已经发生,不能排除此节点是潜在的攻击节点,先降低此节点在防火墙中的优先级,并将此节点的分类标签修改为攻击.另外,由于此时目的端检测到攻击,所以需要将熵值异常的节点信息反馈给改进SOM检测模块,并将此节点的分类标签标记为可疑,同时添加到防火墙中,设置优先级为5;四是目的端检测到攻击且可疑节点的熵值异常,此时认为此节点无限趋近于攻击节点,将此节点的优先级降为0,把信息反馈给改进SOM检测模块,并将此节点的分类标签设置为攻击.另外,还需将其他熵值异常节点的相关信息反馈给改进SOM检测模块,并将分类标签设为可疑,同时将这些节点添加至防火墙中,将优先级设置为5.
3 性能评价
3.1 仿真环境
本实验的拓扑参考来自Topology Zoo中的一个拓扑案例.共有4台交换机,每个交换机下面依次有6,7,9,2台主机,如图4所示.
3.2 评价指标
1) 检测准确率.针对分类算法的准确性,统一采用F1-Score进行评价[10],计算公式如下:
(6)
(7)
(8)
(9)
其中:precision为精确率;recall为召回率;F1k为每个类别下的F1-Score;TruePositive为预测答案正确的标签数;FalsePositive为错将其他类预测为本类的标签数;FalseNegative为将本类预测为其他类的标签数.
2) 响应时间.针对检测和防御算法,用响应时间作为评价指标.本文对每十次消耗的时间做累积加和操作,对十次响应时间取平均值,得到平均响应时间.
3.3 攻击检测与防御机制性能评价
本文使用三种攻击速率(fast,faster,flood)以及三种流量(攻击、正常、混合)进行仿真实验,得到检测准确率和响应时间.其中,fast,faster,flood分别代表每秒发送10个,100个和尽最快速度发送数据包且攻击流量占全部流量的比重低于50%.
1) 检测准确率.改进SOM算法中的流量收集时间窗口大小设为5s,特征提取模块提取每个数据流的数据包数、字节数,持续匹配的时间以及端口的变化率,涉及的参数设置如表2所示.训练时期,采用TCP,UDP,ICMP协议进行训练,具体比重参考文献[11].训练数据如表3所示,每个OpenFlow交换机的训练数据如表4所示.
表2 检测模块参数设置Table 2 Parameter setting of detection module
表3 训练数据Table 3 Training data
表4 各个OpenFlow交换机的训练数据Table 4 Training data for each OpenFlow switch
多维条件熵算法中的流量收集时间窗口大小同设5 s,选择不同的攻击速率,依次变换源IP,目的IP和目的端口号.使用正常流量和不同的攻击速率各训练100次,找到正常情况下六维向量的值(设为2)和不同攻击速率下六维向量的值(阈值2.2).然后,在已设定的网络拓扑下进行测试,每五次检测结果取一次平均值,得出的F1-Score如图5、图6所示,训练时期的检测准确率可达94.9%.最后,将其接入仿真环境中,取值方法同上,结果如图7、图8所示,联合检测机制的准确率可达95.2%.
2) 响应时间.依次使用三种攻击速率对常规、快速和联合防御模块各训练100次,得到结果如图9~11所示.计算可知,与单独的常规防御机制和快速防御机制相比,本文设计的联合防御机制的控制器响应时间可分别减少0.1,0.12 s.
4 结 语
本文以SDN架构为基础,对SOM算法进行改进,结合多维条件熵算法建立联合检测机制,将常规防御与快速防御相结合,建立联合防御机制.改进的SOM算法增加了生长操作,并且能够从多维条件熵检测模块得到信息反馈,从而使得该联合检测机制能够达到95.2%的准确率.另外,该机制与单独防御机制相比,控制器的响应时间能平均降低0.11 s.由于本文的仿真实验所设节点数目有限,今后会在更大规模上进行测试.