APP下载

基于SDN的DDoS攻击防御系统

2021-02-27王文蔚肖军弼

计算机与现代化 2021年2期
关键词:流表信息熵交换机

王文蔚,肖军弼,程 鹏,张 悦

(1.中国石油化工股份有限公司胜利油田分公司物探研究院,山东 东营 257022;2.中国石油大学(华东)计算机科学与技术学院,山东 青岛 266580)

0 引 言

随着计算机的迅猛发展,网络用户越来越多,网络规模越来越大,以TCP/IP为基础的传统网络模式面临网络管理困难、灵活性差等问题,使其无法满足日益增长和不断变化的需求[1]。软件定义网络(Software Defined Networking, SDN)[2]是一种新型的网络架构,其核心思想是控制层和转发层分离,交换机只负责高速转发,所有交换机的控制、管理和决策功能全部集中在控制器[3],使得网络控制更加灵活和集中。虽然SDN网络架构的这些特点提高了网络管理和网络维护的灵活性,为维护人员带来了便利,但是SDN控制器的高度集中化,很容易造成单点故障,一旦SDN控制器受到攻击,会导致控制器和交换机的通信失败,致使整个网络瘫痪[4-5]。

当今SDN网络面临的最大威胁之一是分布式服务攻击(Distributed Denial of Service, DDoS)攻击[6]。DDoS是DoS攻击的分布式版本,攻击者控制大量的傀儡主机组成僵尸网络,在短时间内对服务器发送大量的攻击流量[7]。DDoS攻击会造成服务器资源被攻击者占用,导致服务器无法对其他正常用户提供服务,是一种危害极大的攻击手段。SDN网络中,攻击者通常会利用僵尸网络对控制器发起DDoS攻击[8]。由于SDN集中管控的特性,当DDoS攻击出现时,交换机与控制器之间通信次数急剧增加,交换机流表数呈爆炸式增长,最终会使交换机流表缓存耗尽,链路拥塞[9],控制器系统资源耗尽,最终导致SDN网络崩溃。

1 相关工作

信息熵是检测DDoS攻击的常用方法,Giotis等人[10]运用信息熵构建了SDN环境中的DDoS攻击防御系统,通过引入sFlow,降低了控制器的负载。文献[11]提出了一种基于信息熵的DDoS攻击检测方法,使用层次分析法设计构建了DDoS攻击量化模型。文献[12]提出了一种通过检测网络中目的IP熵值的DDoS攻击检测方法,但是并没有考虑正常情况下熵值可能变化较大的情况。Robinson等人[13]提出了一种利用连续窗口的方式计算信息熵偏差的方法,使用连续窗口有效地减少了误报率。文献[14]提出了一种多维条件熵的检测算法,该算法计算多个流表项的条件熵得到多维向量进行攻击判断,有效地降低了误报率。

除了信息熵外,也有一些其他机器学习算法的解决方案。文献[15]利用OpenFlow流表中的流量信息,从流表中提取6个特征,使用SOM神经网络处理特征数据,检测DDoS攻击流量。肖甫等人[16]提出了一种基于KNN优化算法的DDoS攻击检测方法,该方法优化了传统KNN算法,实现更加简单,且具有较强的实用性。Liu等人[17]使用SVM算法检测攻击,采用动态IP地址绑定解决IP欺骗问题,最后下发流表关闭攻击源的端口。Thapngam等人[18]提出了一种基于网络行为特征的检测方法,通过使用皮尔逊相关系数提取分组到达的可重复特征,达到快速响应的目的。Chen等人[19]提出了一种名为XGBoot的DDoS攻击分类方法,与随机森林算法相比具有精度高、速度快的优点。

2 DDoS攻击检测方法

本文提出一种基于信息熵和复合机器学习分类算法的DDoS攻击检测算法。基本思想为:控制器从底层交换机的流表项中收集特征,并定期计算信息熵,若发现异常则进一步使用SVM和K-Means复合算法对网络流量进行分类,最终判断该流是否是攻击流量。其检测流程如图1所示。

图1 DDoS攻击检测流程图

2.1 基于熵值的检测

熵是热力学概念,用于描述系统的混乱程度,混乱程度与熵值成正相关。信息熵是熵在信息论中的应用体现,目的是度量系统的随机程度[20],一个系统越是有序,信息熵就越低;相反,一个系统越是混乱,信息分布越分散,信息熵越高。公式(1)为香农(Shannon)信息熵的计算方法:

(1)

公式(1)中,H为随机变量的不确定性和随机性的度量,p(xi)是随机变量xi出现的概率。在网络中流量的随机性通常是比较大的,系统的信息熵会保持在一个值,然而当网络遭受DDoS攻击时,会出现大量的攻击流量发送给被攻击的主机,通常目的主机只有一个,此时网络系统的随机性会被打破,从而导致系统信息熵减少,因此可以通过观察信息熵的变化判断是否发生DDoS攻击。

在SDN网络中,数据平面的交换机用流表存储转发规则,流表中蕴含着丰富的流量信息,流表项结构如图2所示。从流表项中提取数据包的源IP地址、目的IP地址、数据包数量和IP协议,组成四元组信息I=。假定每收集n个数据包对I进行一次信息熵计算,并设定信息熵阈值T,阈值的设定与网络正常状态的信息熵值有关,如果连续4次计算得到的熵值H小于T,则说明网络中可能存在异常流量。本文设定窗口大小为50,所以需要检测200个数据包来判断流量是否异常。选择连续检测4个窗口是为了避免偶然性结果,减少意外事件对检测信息的干扰。

虽然信息熵的计算能判断出网络是否含有异常流量,但是并不能完全确定网络受到了DDoS攻击,因为在某些特殊情况下,网络中可能存在正常流量使得系统随机性降低的情况,例如由于业务原因,网络中某个服务器一段时间内持续处于高负载状态,大量的请求流量发送至此服务器,导致网络随机性降低。所以系统在发出信息熵异常警告后调用机器学习分类算法对流量进行进一步处理。

2.2 基于SVM和K-Means的DDoS攻击检测算法

SVM是一种基于统计学的分类算法,具有较好的鲁棒性和较强的泛化能力。使用SVM算法对链路流量进行分类,通过对出错点的分析发现,SVM分类器在最优超平面附近容易出错[21],为此,本文提出一种SVM和K-Means相结合来检测DDoS攻击的方法。首先使用SVM把流量分类为正常流量和异常流量2个集群,并标记无法准确分类的流量,然后将2个集群作为初始集群,使用K-Means算法对集群进行迭代,直到集群中心点不变,最终得到收敛的正常流量集群和攻击流量集群。K-Means算法的迭代优化功能弥补了SVM最优超平面附近分类不准问题,SVM和K-Means的组合减少了系统总体误差。

2.2.1 特征提取

特征提取模块部署于控制器,每隔5 s向数据平面发送请求,查询数据平面所有流的状态。由于DDoS攻击通常只含有一个数据包,字节数明显大于正常流的字节数,且数据包到达间隔很短,所以本文选取数据包数量、字节数、数据包的平均大小和数据包到达的时间间隔4个特征作为DDoS攻击检测的输入。

2.2.2 SVM算法分类过程

SVM是一种基于统计学的有监督类分类算法,在样本较少时,也具有良好的统计效果,时间复杂度低,可以将低维空间线性不可分问题映射到高维空间后实现线性可分[22]。

(2)

最优超平面可以表示为:

(3)

(4)

将拉格朗日乘子αi代入上面公式后,上述约束问题可以转化为:

(5)

对ω和b求偏导,由于公式满足 KTT 条件,故依据对偶性质的定义,将最小化目标函数值的求解目标,变为其对偶形式的取值最大化。 将所得结果代入公式(4)可得:

(6)

得出αi的值后求得ω和b结果:

(7)

求得αi获得最终的SVM分类器:

(8)

使用SVM对流量进行分类,通过分析误判样本点发现在最优超平面附近容易出错,为了解决这个问题,本文使用K-Means算法处理这些数据点。

2.2.3 K-Means算法过程

K-Means是无监督学习中的一种聚类算法,利用近邻信息来标注类别,将未标注的样本数据中相似的分为一类,具有简单高效的特点[23]。

给定一组样本(x1,x2,…,xn),K-Means算法的目的是将n个样本划分为k个集群。为集群指定k个初始质心(c1,c2,…,ck),计算每个样本点到k个质心的距离,每个样本点属于距离平均值最近的集群,使得每个集群最小化其平方和,即每个样本点距离质心的距离之和最小。集群内的平方和计算公式如下:

(9)

当所有的数据点都分配给对应集群后,重新计算集群的中心点作为该集群的质心,质心更新后,可能会导致集群内的数据点被分配给另一个集群,所以重复样本点分配过程,并再次更新质心。重复该过程,直到数据点的集群分配结果不改变。

2.2.4 DDoS攻击检测算法过程

将最优超平面分类得到的2类流量作为初始集群,分别是正常流量集群和攻击流量集群,并计算2个集群的质心。将异常流量重新分配,分配到具有最小平均值的集群中。重新执行此步骤,直到集群中心点收敛,最终基于流量集群,将流量划分为正常流量和攻击流量。

3 DDoS攻击处理

流量的检测完成后,下一步的工作是对攻击流量的处理,DDoS攻击处理的实质就是如何处理攻击流量。常用的处理方式有2种:1)将攻击流量路由到安全设备中;2)将攻击流量丢弃。在SDN网络中,这2种方式都可以使用OpenFlow流表实现。

如图3所示,在SDN网络中,当攻击者控制僵尸网络对服务器发起DDoS攻击时,攻击流量首先到达边缘交换机S1,S1检测流量空间内是否有匹配该流标签的流表,若有,直接按照流表规则转发,若没有,则将流信息上传至控制器,等待控制器做决策。控制器收到流信息后,执行DDoS流量检测算法,判断该流是否为DDoS攻击流量,若不是则计算转发,下发含有路由信息的流表至交换机,交换机按照流表规则转发;若是,控制器下发含有丢弃指令流表至交换机,之后交换机会丢弃此DDoS攻击流量。为了避免流量过于庞大导致交换机流表空间溢出,设置流量软超时时间,因为DDoS攻击流量通常是瞬时的,所以软超时时间设置为1 s即可,即该流表超过一秒没有被匹配就自我删除。

图3 SDN网络示意图

4 仿真与结果分析

4.1 仿真环境

本文在Floodlight开源控制器上集成了DDoS攻击防御系统,并用Mininet模拟了数据平面的环境,实验拓扑如图4所示。使用常用的DDoS工具TFN发起DDoS攻击,攻击流量的类型有TCP flood和ICMP flood。

图4 实验拓扑图

4.2 仿真结果

分别验证基于信息熵的攻击检测算法的效果和基于复合机器学习算法在DDoS攻击场景中的性能。

首先验证基于信息熵的攻击检测算法效果。实验结果如表1所示,W是窗口大小,HN是正常情况下的熵值,HA是遭受攻击时的熵值。由数据可得,当串口大小为50时,网络受到攻击时的熵值变化量最大,所以窗口设定数为50。

表1 基于信息熵的攻击检测算法实验结果

本文从3个角度比较SVM、K-Means以及本文SVM+K-Means方法在DDoS攻击检测方面的性能,分别是检测率(Detection Rate, DR)、准确率(Accuracy,ACC)和误报率(False Alarm Rate, FAR)。

(8)

(9) )

(10)

其中,TP(True Positive)表示正常样本被检测为正常的数量;TN(True Negative)表示攻击样本被检测为攻击的数量;FP(False Positive)表示正常样本被检测为攻击的数量;FN(False Negative)表示攻击样本被检测为正常的数量。

复合机器学习算法跟SVM和K-Means的性能比较如表2所示,可以看到,SVM+K-Means方法的检测率为96.2%,识别DDoS攻击的精度更高。3种算法中,SVM+K-Means方法的准确率要高于另外2种算法,表明本文提出的方法使得流量分类更精确。从误报率的实验数据中也可以看出,本文提出的复合机器学习算法的性能要优于原始的SVM和K-Means算法。

表2 3种方法的实验结果对比

另外,本文还对系统的CPU平均利用率进行分析,将本文提出的带信息熵检测的DDoS攻击检测模型与没有信息熵检测的SVM+K-Means检测模型的CPU平均利用率进行对比,对比结果如图5所示。本文方法的CPU平均利用率低于没有信息熵检测的方法。信息熵检测用于网络流量的早期检测,当信息熵发生异常才对流量进行进一步检测,由于信息熵的计算消耗CPU资源较少,所以本文方法相比没有信息熵早期检测的SVM+K-Means方法CPU平均利用率更低,有效地防止了DDoS攻击引起的CPU过载。

图5 有无信息熵检测的CPU利用率对比图

5 结束语

本文提出了一个在SDN网络架构中的DDoS攻击检测模型,模型首先监控交换机端口的信息熵,当信息熵异常报警时,再通过复合学习算法,对流量进行精确处理,判断网络中是否含有攻击流量。实验结果表明,本文算法在检测率、准确率和误报率上性能均优于原始的SVM和K-Means算法。

猜你喜欢

流表信息熵交换机
基于匹配动作表模型的可编程数据平面流表归并
基于信息熵可信度的测试点选择方法研究
基于时序与集合的SDN流表更新策略
修复损坏的交换机NOS
简析yangUI流表控制
软件定义网络中一种两步式多级流表构建算法
使用链路聚合进行交换机互联
一种基于信息熵的雷达动态自适应选择跟踪方法
基于信息熵的IITFN多属性决策方法
PoE交换机雷击浪涌防护设计