APP下载

一种面向SDN的跨平面协作DDoS检测与防御方法

2020-11-14曹永轶金伟正

计算机工程 2020年11期
关键词:细粒度交换机数据包

曹永轶,金伟正,吴 静,罗 威,朱 博

(1.武汉大学 电子信息学院,武汉 430072; 2.中国舰船研究设计中心,武汉 430064)

0 概述

分布式拒绝服务(Distributed Denial of Service,DDoS)是一种具有高破坏性的网络攻击行为。DDoS攻击者通过多个分布式攻击源伪造出海量虚拟IP地址,并对服务器发起访问式攻击,消耗大量的服务器资源,导致受害服务器崩溃而无法响应正常用户的服务请求[1],这种在互联网发展初期已存在的网络安全威胁,至今仍是互联网上最流行、效率最高的攻击方式[2]。

软件定义网络(Software Defined Network,SDN)作为一种新兴的网络模式[3],引起了学术界和工业界的关注。SDN从底层网络设施中抽象出控制器,并解耦控制平面和数据平面,使得网络状态具有逻辑集中的特性[4]。SDN的出现提高了网络的可管理性、可扩展性、可控性和动态性[5]。然而,随着SDN应用的普及,SDN安全性问题成为SDN领域的关键研究课题之一。

由于SDN控制器灵活、可扩展以及集中控制的特点,在SDN下的DDoS攻击检测多数是在控制平面上进行的。传统的经典检测方法是在控制平面上进行熵值计算,从而判断流量中源IP的离散程度,并利用伪造数据包导致DDoS攻击流量中源IP地址复杂多样性的特点来检测出异常流量[6]。该检测系统的检测精度取决于熵的阈值,而阈值的选择是通过调整实验中参数大小而得到,因此该方法具有一定的片面性。还有一类方法是利用控制平面可扩展的计算能力,在控制平面的数据包头中提取DDoS流量的关键特征,利用基于概率的统计方法或机器学习算法进行检测[7]。文献[8]提出PacketScore方法,该方法对数据包包头中的某些属性值分布进行分析,并使用贝叶斯定理对数据包进行评分。PacketScore具有相当高的过滤精度,且易于部署,但由于其得分与攻击强度有关,因此不适用于处理大量攻击流量。此外,它在评分方面存在一些代价高昂的计算操作,导致处理效率低下,且难以及时防御。文献[9]提出一种基于支持向量机(Support Vector Machine,SVM)算法的网络入侵检测系统,但该系统存在检测时间较长、检测效率低等问题。文献[10]提出一种基于深度学习的多矢量DDoS检测系统,在SDN控制器上实现基于SAE模型的检测,对于从网络流量包头派生出来的大量特征,利用深度学习对其进行特征降维与分类。在控制平面上基于机器学习的DDoS检测方法可以达到较高的准确率,但普遍存在较高的控制器CPU消耗以及南向接口通信开销。

由于上述DDoS攻击检测机制均是基于控制平面,每次攻击流量到达控制器时均会产生大量的南向接口负荷以及系统开销,因此这些方法普遍存在检测时延长、检测开销大以及对新型DDoS攻击检测能力较弱等问题[11-12]。在数据包到达控制器之前,其转发在数据平面上的交换机中进行,文献[13]提出一种新的思路,即在数据平面上利用OpenFlow交换机CPU计算熵值,从而实现DDoS攻击检测,但是由于熵值仅代表源IP离散性的一个特征,因此该方法的准确率较低。

本文没有从单平面角度解决上述问题,而是采用一种跨平面协作方法来优化面向SDN的DDoS攻击检测方法。该方法提取更多的适合数据平面计算的DDoS流量特征,并将部分轻量级的DDoS检测机制下发给数据平面,同时保留控制平面的细粒度检测。经过数据平面的检测与过滤,到达控制平面检测的流量会减少,从而降低了南向接口通信开销。同时,本文方法除了利用数据平面以及控制平面两级检测之外,还采用了防御策略以及长期有效的黑白名单机制。

1 机制描述

在SDN架构中,数据包在被控制平面捕获之前,其是在数据平面上转发的,为了提高DDoS攻击检测的性能以及减少检测延迟,在传统的控制平面检测基础上,还应该考虑在数据平面上部署过滤功能。实际上多数支持OpenFlow协议的OpenFlow交换机或混合交换机均由一个或多个正在运行的CPU组成,且这些CPU具有丰富的计算资源,然而目前还未得到充分利用[14]。跨平面协作DDoS防御系统体系结构如图1所示,根据DDoS流量的显著特征,在交换机CPU上执行轻量级的数据平面检测算法。由于在数据平面上采用较为轻量的算法只能进行粗过滤,因此当数据平面检测产生告警后,将数据包包头信息发送至控制平面进行细粒度检测,得到更加准确的结果,数据平面的提前过滤为控制平面的检测减小了压力,这种跨平面两级协作的方法显著提高了检测准确率。在控制平面上选择聚类K-means算法对流量进行更细粒度的检测,该算法具有检测速度快、准确度高的特点。本文方案的控制平面检测基于事件触发而非轮询机制,只有当数据平面产生报警时,流量才会被发送到控制平面进行第二次检测,因此大幅降低了南向接口的通信负荷以及系统开销。在本文方案中还添加了黑白名单机制以及防误判模块。利用黑白名单在交换机入口过滤数据包,降低重复检测带来的开销。在控制平面完成细粒度检测之后,加入防误判模块,以进一步降低虚警率。下文将详细介绍系统的主要模块以及粗粒度和细粒度检测分别是如何进行的。

图1 跨平面协作DDoS防御系统体系结构Fig.1 Architecture of cross plane cooperation DDoS defense system

1.1 数据平面的粗粒度检测

OpenFlow交换机的计数器是计算通过的数据包和字节数。从OpenFlow协议1.0起[15],OpenFlow协议为每条流入口、流表和交换机端口等定义了一组计数器,并将它们的值称为三元组。如图1所示,计数器读取模块依次从交换机硬件中轮询计数器值,并将这些值设置为流监控器模块的输入。在流监控器模块,采用流量检测算法对计数器值进行处理,从而过滤出异常流。

数据平面流监控器流程如图2所示。其中,流监控器模块主要负责根据DDoS攻击流量的突出特性(如大流量和不对称特性)对异常流进行初步过滤,且其由以下3个部分组成:

1)元组解析器。它从计数器的三元组中提取出具体的计数器值。

2)监控线程。利用流监控算法对流量进行检测。

3)流状态采集器。它负责对检测到的异常流状态进行管理,且图2已经给出了流监控器的工作过程。

图2 数据平面流监控器流程Fig.2 Procedure of data plane flow monitor

元组解析器不断地接收由计数器Reader模块发送的三元组,然后包含在三元组中的计数器值根据其所属流(或端口)传递给特定的监控器线程,并利用流监控算法对监控线程进行异常流检测。本文设计一种轻量级的流监控算法,该算法用于数据平面的流量监控模块,检测出由DDoS攻击引起的异常流。与很多其他流监控算法不同,该轻量级算法的目的是利用普通OpenFlow交换机中的轮询计数器来提取DDoS攻击流量的关键特性。

1.1.1 轻量级算法的特征提取

突发的泛洪流量是DDoS攻击的一个重要特征,当DDoS攻击时,单位时间通过交换机的数据分组量以及平均字节数都远高于正常流量。在攻击期间,进入受害服务器的流与从服务器流出的流之间通常存在巨大的速率差异。对于给定的2条流,如果A流的目的地址等于B流的源地址,B流的目的地址等于A流的源地址,则称这2条流为对流。相反,如果只有一条流,且找不到它的对流,则称为单流。DDoS常以IP欺骗的方式发起攻击,因为它们使用假IP地址发送数据分组,所以当DDoS攻击发生时,单流的增长率迅速增大,对流所占比例很小,其原理如图3所示。当DDoS泛洪攻击发生时,不同IP对应的流持续时间较短,因此流的平均持续时间也是一个重要特征。与DDoS攻击产生的IP欺骗相同,攻击者也可通过随机生成端口进行扫描攻击,因此DDoS流量中端口的增长率远高于正常流量[16-18]。

图3 DDoS流量不对称特性示意图Fig.3 Schematic diagram of DDoS traffic asymmetry

通过轮询OpenFlow交换机计数器值,可由以下6个指标反映上述4个DDoS流量特性,具体表示方法为:

1)单位时间平均数据分组量(APPT)

(1)

2)单位时间平均字节数(ABPT)

(2)

3)对流所占的比例(PCPF)

PCPF=

(3)

其中,flow_numsT表示在时间周期T内采集的流数量,T表示采集周期,nums_single_flows表示每个周期T内采集到的流中单流的数量,nums_pair_flows表示每个周期T内采集到的流中双流的数量。

4)单位时间单流数目(SFPS)

(4)

5)流平均持续时间(ADPF)

(5)

其中,durationsi表示每条流表的持续时间。

6)端口增长率(GRDP)

(6)

其中,nums_different_port表示每个周期T内采集到的流表中不同端口号的流数量。

上述6个指标中,指标1与指标2从流量的体积特征来判断流量是否异常,指标3与指标4利用DDoS流量的不对称特性来评估流量,指标5与指标6分别显示了DDoS流量的短时多流以及伪造端口的特点。

1.1.2 数据平面轻量级算法描述

在监控线程中,本文提出一种轻量级算法,该算法可用于捕获上述6个指标的变化,从而对异常流量进行检测。该算法利用一段时间流量的6个指标值来估计预测值,如果下一个周期的6个指标实际值都落入预测范围内,则表示当前流正常,否则,预测值与观测值之间的偏差代表了网络行为的变化;如果6个指标观测值都超出了可接受范围,则将其确定为DDoS攻击造成的异常流量。

(7)

(8)

(9)

(10)

1.2 控制平面的细粒度检测

控制平面接收到报警消息后,将异常流状态存储在数据库中,触发事件通知基于控制器的DDoS机器学习细粒度检测模块,对特定的异常流进行深度检测。在系统中,如果接收到警报消息,控制器将向特定的交换机发出标准的OFPT_FLOW_MOD消息(从OpenFlow协议1.0开始定义)。该消息可以指示OpenFlow交换机从特定的异常流中缓冲数据包,将其发送到控制器并存储在数据库中进行细粒度分析。在控制平面,利用K-means聚类算法结合提取的相关特征进行细粒度检测,该方法的流程如图4所示,其中,虚线表示训练过程,实线表示检测过程。

图4 控制平面细粒度检测流程Fig.4 Procedure of fine-grained detection of control plane

1.2.1 特征提取

实验可以从数据平面发送的数据包中提取各种特征,并用于聚类算法。由于DDoS流量最显著的特征是发出大量伪造源IP和端口的数据包,五元组包含了多数DDoS特征信息,因此需要提取每个数据包的五元组信息。由于熵能够很好地表示不确定度,基于DDoS攻击随机伪造源IP和端口的特点,对这些字段分别计算熵并作为输入的特征值。根据相关工作,本文使用熵作为度量来帮助构造特征,以检测DDoS流量[19-20]。样本熵可定义为:

(11)

其中,S为数据包的总数,N为不同IP地址或端口的数目,其表示特定的指标(如某IP地址出现的次数)。

特征分布越集中,熵值越低。研究发现,DDoS流量对五元组(目的地址、目的端口、源地址、包大小与流的持续时间)的熵值有较大影响[21],这是由DDoS特性决定的。同时,使用SYN/SYN+ACK来描述DDoS引起的半连接状态。考虑到在高速网络中难以记录所有数据包大小,本文重新定义了如表1所示的数据包大小级别。

表1 数据包大小级别定义Table 1 Definition of packet size level

由于正常的突发大流量也会改变分组大小的熵,因此对分组大小熵进行如下改进,以区别于DDoS业务,具体如式(12)所示:

(12)

其中,imax是数据包的大小以及级别,且多数数据包都包含在这些级别里面。值得注意的是,指标1~指标6代表了DDoS的基本特征。包头信息和特征的对应关系如表2所示,虽然实验数据集只包含DDoS种类的一部分,但是本文方法仍可以用于检测各种类型的DDoS攻击。

表2 包头信息和特征对应关系Table 2 Correspondence between Baotou information and features

1.2.2 机器学习算法K-means分类及检测

在训练过程中,采用聚类方法对流量进行建模,并确定检测阈值。需要说明的是,所有的训练数据均只包含正常流量。本文使用机器学习算法K-means来满足实时检测的要求,因为该算法比其他机器学习分类算法快。使用欧氏距离来量化2个熵向量的相似性。此外,基于簇半径的加权平均值[21],本文方法能够找出最好分类的簇数k。使用上述特征组成的特征矩阵作为K-means算法的输入,输入处的m个节点表示具有m个特征的记录,如X={x1,x2,…,xm}。聚类完成后需要滤去噪声,而滤去噪声的方法是剔除稀疏的簇,并根据统计中常用的规则,即如果训练数据总共有n个点,则剔除那些不足0.05n个点的簇,且对于每个簇,实验均记录检验数据的中心C和半径r,C由所有点的平均值决定,r由C与集群中任意点之间距离的最大值决定。

控制平面上DDoS攻击的细粒度检测的具体步骤为:

步骤1对于在单位时间内检测到的可疑流量,计算其熵值,得到预处理模块中的熵向量X。

步骤2计算熵向量X与所有簇中心Ci之间的欧式距离,并将结果记录为di。

步骤3选择最小距离dt=min{di},并将样本熵向量X分配给相应的簇。

步骤4对dt和聚类半径rt进行比较,若dt

1.3 防误判模块

根据数据平面的粗过滤检测,以及控制平面聚类方法的细粒度检测,可以极大地提高系统的检测准确度并减少系统总开销。但是由于细粒度检验方法都是基于多条流的,即当正常流量混杂在DDoS流量中时,实验很难将其挑选出来,检测结果只是对一个时间段内的流量是否包含DDoS攻击进行判断。因此,利用聚类算法得出检测结果后,本文创新性地加入防误判模块,这样可以将混在DDoS流中的正常业务流挑选出来,并加入白名单。需要特别说明的是,本文的防误判模块是基于概率统计提出的,且数据流量越大,其效果越好。防误判机制示意图如图5所示。

从图5可知,防误判模块的原理为:DDoS具有伪造源IP的特性,且这些伪造源IP是随机的,且在一个很短的时间段Δt内,具有相同源IP地址的流不会有间隔地出现2次,或者说这种概率是极小的,完全可以忽略不计。然而当流量包含正常业务流时,这种在短时间内相同源IP地址的业务流短时间内出现2次甚至多次均是正常的。此时,认为该源IP的流量是正常业务流量,而非DDoS攻击流量,保存该源IP并将其加入白名单,从而达到防误判的效果。需要说明的是,相同源IP的流指的是有间隔的2条流,而不是连续的数据包或者数据分组,且该模块的添加,使得传统的定性检测变为精确到每条流的定量检测,为更加精确地控制防御策略的下发以及黑白名单更新提供了保障,且进一步提升了系统的检测准确度。

2 实验评估

2.1 实验环境设置

本文采用的网络实验平台由校园网络中心的3个OpenFlow交换机组成,实验平台结构如图6所示。从图6可以看出,客户机和攻击主机连接在交换机S1上,服务器连接在交换机S3上。3台交换机与控制器相连,同时源端交换机S1上连接着收集模块。计算服务器配备英特尔e5-2620v3 CPU、64 GB内存和GeForce GTX titan x。操作系统的版本为ubuntu16.04,SDN控制器为onos1.13。

图6 实验平台结构Fig.6 Structure of experimental platform

在收集实验数据流时,将其分为正常数据流和DDoS攻击数据流。DDoS攻击流量是由攻击工具Hping3产生的,设置random-source参数产生随机性的源IP地址,设置flood参数进入泛洪攻击模式。tcpreplay工具用于重放捕获的数据包跟踪文件,并将生成的流量注入特定的以太网端口。正常流量是通过tcpdump和镜像端口,对实验室局域网中的网管交换机流量进行收集。上文已经提出训练集只包括正常数据流,不包括DDoS攻击流量,且训练阶段是为了确定聚类半径的阈值。

2.2 数据平面轻量级算法评估

为了评估部署在数据平面的轻量级算法中6个特征的有效性。在图6中,实验使用Hping3在20 s内发送从H2到H3的DDoS攻击流量,同时H1到H3发送正常的背景流量。图7描述了在DDoS攻击发生时,本文方法中的6个度量指标的变化。从图7可以看出,当时间小于9 s时,链路中只有正常的背景流量,因此各项指标都较稳定;当时间为9 s且DDoS攻击发生时,数据平面粗粒度检测算法中的6个特征指标值发生突变;在DDoS攻击被检测到并采取防御策略后,各指标在一段时间后又恢复到正常水平,这说明在DDoS攻击发生后,本文算法中的6个度量指标能够捕获异常流的变化特征,从而说明了该方法的有效性。

图7 DDoS攻击前后数据平面中6种指标的变化情况Fig.7 Changes of six indicators in data plane before and after DDoS attack

3 实验结果与分析

为了验证本文方法在DDoS检测中的各项评价指标,以及控制器CPU消耗、南向接口通信负荷等方面优于现有方法,以基于熵的检测方法与基于SVM的机器学习检测方法作为对照组,并与本文算法进行对比实验。

3.1 系统评价指标

利用准确度、精确度、召回率和F1值4个评价指标对本文方法与其他方法进行比较,结果如表2所示。

表2 评价指标及其计算方法Table 2 Evaluation index and its calculation methods

在图6的实验环境下,客户机H1使用相同的背景流量,攻击源H2使用相同的攻击数据集对服务器H3进行攻击,分别利用SVM方法、基于熵的方法以及本文方法3种方法进行检测。表3是在多种攻击强度下,分别利用3种方法得到的4种评价指标的平均值大小。从表3可以看出,本文方法的准确度优于其他2种方法,这是因为跨平面的检测方法经过粗、细粒度2次检测,所以相比基于控制平面的一次检测方法有所提高。同时,本文方法的精确度和召回率相比于传统方法也大幅提高,这是因为本文方法中添加了防误判模块,防止正常数据分组被误判为DDoS流量,从而降低了假阳性概率。综合而言,对比实验结果体现了本文方法在各项评价指标上的优越性。

表3 3种方法的对比结果Table 3 Comparison results of three methods %

3.2 控制器性能指标

为了说明相较于仅基于控制器的方法,跨平面协作的方法在控制器中需要检测的流数量减少,本文设计了以下实验:获取数据库中的异常流状态记录,并计算在20 s内,在同样的DDoS攻击下,不同检测方法中控制器需要监控的异常流数目,结果如图8所示。从图8可以看出,在跨平面架构下,经过数据平面的粗粒度筛查,只有在数据平面告警的情况下才进行控制平面的细粒度检测,因此控制器需要监控的流数目相比其他仅基于控制器的方法大幅减少,这说明本文方法通过跨平面协作,有效减少了控制平面压力。

图8 2种方法中控制器监控的异常流条数比较Fig.8 Comparison of the number of abnormal flows to be monitored by the controller in the two methods

3.3 南向接口通信负荷的比较

在上述实验基础上,实验记录了在一个攻击周期内,不同的检测方法下南向接口通信量的变化,结果如图9所示。从图9可以看出,当时间小于9 s且攻击还没有发生时,基于控制器的SVM方法已经开始轮询,并将数据包发送给控制平面,因此南向接口负荷较高,然而,本文方法只在数据平面检测到异常流时发送警告消息给控制器,并开始执行控制平面检测,此时南向接口通信量接近为0;当时间大于9 s时,随着DDoS攻击的开始以及流量的骤增,基于控制器的SVM方法的南向通信开销也迅速增大。在本文方法下,当数据平面检测粗粒度方法检测到DDoS攻击后,控制平面细粒度检测开始,南向接口通信开销也随之增大。2种方法的南向接口高通信量均持续一段时间,本文方法在检测结束后南向接口通信量恢复到大致为0,这得益于本文方法是基于事件触发机制的主动push,在网络中没有异常流量时不会向控制面发送流量。

图9 2种方法的南向接口通信负荷比较Fig.9 Comparison of southbound interface communication overhead between two methods

3.4 控制器CPU消耗

本文以控制器的CPU利用率来评价控制平面计算资源的开销。图10显示了在一个攻击周期内,当攻击到来之前,本文方法所消耗的CPU处于一个较低的水平,大约为10%,低于对比组的CPU消耗,这是由于本文方法将粗粒度流监控机制卸载到数据平面上带来了明显优势,此时控制器主机仅进行常规运算。而基于SVM的控制平面检测方法由于需要利用OpenFlow轮询或者利用SFlow等方法进行采样,因此CPU维持在40%左右。当攻击流量来临时,需要处理的数据包单位时间内瞬间增多,分析引擎进入高负荷工作状态,2种方法的CPU均处于满负荷运转;当检测结束后,本文方法中的控制器CPU利用率恢复到10%左右,而基于控制器的SVM方法CPU降低到40%左右。

图10 2种方法的控制器CPU利用率比较Fig.10 Comparison of CPU utilization between two methods

4 结束语

基于SDN的跨平面协作DDoS攻击检测与防御框架,本文采用数据平面的粗粒度检测和控制平面的细粒度检测,对异常流执行两级粒度过滤过程,不仅大幅提高了检测性能,而且克服了系统开销和南向接口通信负荷方面的挑战。此外,本文提出一种适用于数据平面的轻量级流量监控算法,该算法利用OpenFlow交换机计数器在控制平面细粒度DDoS攻击检测之前对异常流进行粗过滤。实验结果表明,相比原有的控制平面检测方法,本文方法的性能得到了提高,并降低了南向接口通信量和控制器CPU利用率。同时,本文系统是一个端到端系统,在检测出DDoS流量后立刻执行防御策略,并添加了黑白名单机制,对于大型网络场景具有实用意义。后续将在最新的可编程交换机上,利用P4语言进一步提高本文系统的灵活性。

猜你喜欢

细粒度交换机数据包
融合判别性与细粒度特征的抗遮挡红外目标跟踪算法
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
基于SVM多分类的超分辨图像细粒度分类方法
更换汇聚交换机遇到的问题
基于地铁交换机电源设计思考
C#串口高效可靠的接收方案设计
基于web粒度可配的编辑锁设计
缔造工业级的强悍——评测三旺通信IPS7110-2GC-8PoE工业交换机
支持细粒度权限控制且可搜索的PHR云服务系统