分布式拒绝服务(distributed denial-of-service,DDoS)攻击已成为网络安全的最大威胁之一,破坏力强、实施门槛低且缺乏简单可行的对抗措施。对抗DDoS攻击的传统方式基于静态网络架构,采用入侵检测、流量过滤和多重验证等方法,然而这些方法存在明显的缺陷:难以实现全网统一调度、消耗大量资源并且易导致网络设备工作愈加繁重。从根本上讲,上述缺陷是由现有网络的静态架构导致的。
软件定义网络(software-defined networking,SDN)是一种新型网络架构,主要由数据层、控制层、应用层、南向接口、北向接口5部分组成。数据层包括基于软件或硬件实现的通用数据平面设备,通过南向接口接收来自控制层的指令,并根据指令完成网络数据处理。控制层具有网络的全局视角,负责管控网络:对下层,通过南向接口与数据层通信;对上层,通过北向接口向应用层提供基础服务和可编程能力。应用层由开发者通过控制层提供的编程接口对底层设备进行编程,以实现不同的网络功能应用,为开发者提供了丰富的定制开发能力与自主权。传统网络中如负载均衡、网络配置、流量工程、安全控制等服务均可在应用层上得到实现[1-2]。
软件定义网络的出现为设计、搭建以及管理网络提供了一种全新的思路,也为检测DDoS攻击带来了新的启示:全局视角和集中控制的特性为实时监控全网和各节点的流量情况提供了基础,数控分离和动态可编程的特性为网络中报文的深度分析、流量的监控管理以及实时更新网络转发规则提供了条件。
本文针对现有基于SDN的DDoS检测方案中检测周期过小导致系统开销大的问题,设计实现了由触发检测和深度检测相结合的联合检测方案,并讨论了可行的防范技术。
1 相关工作基于SDN的DDoS攻击检测技术的核心思想是利用SDN全网视角、集中控制和数控分离的特性,通过采集网络信息、提取特征、分析特征以及分类检测等一系列步骤来发现异常,实现攻击的检测。本文主要研究部署在控制器上的检测方案,根据检测算法的不同,现有的方案分为基于传统统计学算法的检测方案以及基于机器学习算法的检测方案两大类。
对基于传统统计学检测方案的研究有以下成果:Dao等[3]提出通过分析每个主机发出数据包的频率来判断该主机属于合法主机还是僵尸主机的方法,但该特征过于单一,误判率较高。文[4-5]等使用熵作为表征网络流量的关键特征,提出通过从全网数据包中提取4个特征(源IP地址、目的IP地址、源端口号和目的端口号)并计算其熵值的方式来表征网络的状态,通过实验设定4个阈值以检测异常。文[6-7]等使用基于累积和(cumulative sum,CUSUM)控制图的技术对特征量的变化进行实时跟踪,建立模型并自动探测到异常值,提出了一种改进的CUSUM算法,实现了阈值随网络变化而自动调节的功能,并用改进算法来检测网络中数据包的数目是否产生异常。
然而基于传统统计学的检测方案具有可行性不强、准确性不够高以及可拓展性较弱等缺点。文[8-16]将机器学习技术应用于检测算法,包括支持向量机、逻辑回归、K-近邻、朴素Bayes、神经网络等算法。Braga等[8]提出基于流的特征“六元组”,使用自组织映射算法根据“六元组”识别出恶意流量和正常流量,但该算法收敛较慢,训练时间较长。文[13]则提取了网络中数据包的几个特征:响应时间、源地址和目的地址,分别使用朴素Bayes算法、K-近邻算法、K-means算法等不同算法对特征进行分类以识别异常,但该文献对不同算法的不同性能分析不足,使用现有数据集进行仿真,缺少实际SDN网络的仿真环境。
2 DDoS联合检测方案 2.1 检测方案概述图 1描述了攻击检测系统的整体架构,包括触发检测和深度检测2个串行的检测模块,以及为攻击检测提供网络信息的流信息采集模块。触发检测模块在网络中保持长期运行,提取全网流量特征并执行粗粒度的异常检测;深度检测模块在接收到攻击预警后立即运行,提取更细粒度的特征并使用基于决策树的AdaBoost算法识别流量,最终判定网络是否存在攻击。
![]() |
图 1 联合检测系统架构 |
2.2 流信息采集
在SDN环境里,各个交换机中的流表统计信息是全网流量信息的主要来源。流表信息采集模块负责收集和统计各个交换机中的流表信息:基于OpenFlow协议以轮询的方式定期地向所有交换机发送收集流表信息的请求,并通过安全通道接收交换机回复的流表信息,包括交换机内所有的流表项以及相应的计数器信息,最后对上述信息进行处理和统计。
每个交换机在完成与控制器的认证后开始正常的工作:一方面通过安全通道与控制器进行通信,另一方面根据控制器下发的流表中的规则对网络数据包进行转发。每当一个数据包到达交换机时,将经历流表匹配的过程,即将报文信息与流表项的匹配域进行匹配。一旦数据包与流表项匹配成功,该流表项中计数器的对应统计字段则会实时更新,流表项的计数器信息见表 1。若数据包匹配失败,则被交换机转发至控制器,控制器生成新的流表并下发至交换机,告知其如何处理此类数据包。
统计量 | Bits |
Received Packets | 64 |
Received Bytes | 64 |
Duration (seconds) | 32 |
Duration (nanoseconds) | 32 |
记信息采集周期为T_poll,基于上述交换机与控制器的工作流程,信息采集模块每隔T_poll向网络中所有交换机发送收集信息的请求,即OFP_FLOW_STATS_REQUEST类型的报文;每个交换机在收到请求后,向控制器回复OFP_FLOW_STATS_REPLY报文,报文中包含表 1所示的流表项统计信息;流表信息采集模块解析报文,并完成数据的预处理,计算该流表项在每个时间周期内的统计信息:
$ {X_i} = {S_i}-{S_{i-1}}. $ | (1) |
其中:Xi表示该字段在第i个周期的统计值,Si表示第i个周期来自交换机的原始报文中计数器记录的统计量的值。
2.3 基于改进的CUSUM算法的触发检测在触发检测模块,本文提出改进的CUSUM算法,该算法利用CUSUM算法对样本偏差灵敏度高、计算开销小的优势,实时跟踪多维度序列并基于其统计特性的累积偏差进行异常检测。
将网络中的流量看作一个随机模型,发生DDoS攻击时该模型的分布将发生变化。CUSUM算法基于这一特征进行异常检测,通过度量模型分布的当前值与目标值的累积偏差来判定是否出现异常。原始的CUSUM算法依赖于随机序列的参数模型,根据模型的概率密度函数来监控序列,计算每个样本值与目标值偏差的累积和。而网络流量模型是一个复杂的随机模型,其特征序列的整体分布难以预测,因此无法通过一个准确的参数模型来表示。此处引入非参数的方法来解决这个问题,非参数的CUSUM算法与原始CUSUM算法的不同点在于:用正常运行状态下的平均值(即观测到的历史均值)替代原始算法中基于参数模型求出的目标值,通过当前值与平均值的累积偏差来判定是否出现异常。本文对非参数的CUSUM算法进行改进,以适应SDN环境中基于网络流量进行异常检测这一特殊场景,主要改进部分包括以下3点:
1) 基于滑动窗口的实时检测。
由于对网络进行异常检测是一个持续的过程,检测算法需要实时提取数据进行判决。过长的序列将导致计算复杂度的提升和存储资源的浪费,并且难以适应不断变化的网络流量模型,因此本文改进算法以适应滑动窗口机制,在为特征序列添加新的数据的同时,移除旧数据,以保障序列的新鲜度。
2) 自适应的阈值调节。
CUSUM算法通过判决函数dN中的阈值N来判断是否发生异常,表示如下:
$ {d_N} = \left\{ \begin{array}{l} 0, \;\;\;\;y \ge N;\\ 1, \;\;\;\;y > N. \end{array} \right. $ | (2) |
其中y表示累积和系数。
对于实时变化的网络流量模型来说,固定的阈值存在以下缺陷:a)设定好的固定阈值将受限于本系统,缺乏拓展性;b)固定的阈值将无法适应网络流量的变化趋势,比如在高峰时期流量将明显大于低谷期,相同的阈值显然不合理。因此本文提出了自适应的阈值调节算法,实时计算滑动窗口(长度为L)中序列Xi的方差,阈值随着方差的变化而改变,与方差呈线性关系,系数为h:
$ N = h{\sigma _{{X_L}}}. $ | (3) |
其中σXL表示序列的方差
$ {\sigma _{{X_L}}} = \sqrt {\frac{{\sum\limits_{i = 1}^L {{{\left( {{X_i}-\mu {X_L}} \right)}^2}} }}{{\left( {L-1} \right)}}}, $ | (4) |
μXL表示序列的均值
$ {\mu _{{X_L}}} = \frac{{\sum\limits_{i = 1}^L {{X_i}} }}{L}. $ | (5) |
3) 多维特征结合。
由于攻击种类不同,攻击引起的网络流量变化也不尽相同,单一维度的特征不足以全面地捕捉到网络流量的变化,换句话说,单一维度的特征将造成极高的漏检率。因此本文改进算法以适应多维特征序列的检测。假设提取三个维度的特征,对于每个滑动窗口,均有序列Xi, 1、Xi, 2、Xi, 3,分别计算累积和系数得到y1、y2、y3,第k维特征的判决函数为
$ {d_{{N_k}}} = \left\{ \begin{array}{l} 0, \;\;\;\;{y_k} \le {N_k};\\ 1, \;\;\;\;{y_k} > {N_k}. \end{array} \right. $ | (6) |
由此,得到一个三维的判决向量D=(dN1, dN2, dN3),最终的判决函数为:
$ r\left( \mathit{\boldsymbol{D}} \right) = \left\{ \begin{array}{l} 0, \;\;\;\;\left\| \mathit{\boldsymbol{D}} \right\| < 1;\\ 1, \;\;\;\;\left\| \mathit{\boldsymbol{D}} \right\| \ge 1. \end{array} \right. $ | (7) |
其含义是当任一维度的特征判决结果为异常时,最终判决结果则为异常。
综上所述,改进的CUSUM算法流程见图 2。将改进算法应用于触发检测模块,提取表 2中的几个特征来粗粒度地表示网络流量变化。本文中熵的含义是变量分布的离散程度,因此其计算公式均未使用负号。
![]() |
图 2 改进的CUSUM算法流程 |
特征量 | 计算方法 |
总数据包数 | |
源IP地址的熵 | |
目的IP地址的熵 |
2.4 基于AdaBoost算法的深度检测
深度检测模块作为最终的判决模块,负责对触发检测模块中发现的疑似异常流量进行细粒度的检测,以获得较高的检测精度,其核心是分类检测算法。本文使用机器学习中的一种集成学习算法即自适应提升(adaptive boosting,AdaBoost)算法来进行分类检测。
SDN中,通过基于滑动时间窗的特征构造方法,得到由所有样本点组成的二分类训练数据集:
$ \mathit{\boldsymbol{T}} = \left\{ {\left( {{x_1}, {y_1}} \right), \left( {{x_2}, {y_2}} \right), \cdots \left( {{x_N}, {y_N}} \right)} \right\}. $ | (8) |
其中:N表示样本点个数,每个样本点由特征向量xi与标记yi组成。特征向量xi∈χ⊆Rn,对应表征网络流量的特征向量;标签yi∈ψ={-1, +1},对应网络中是否发生DDoS攻击。AdaBoost分类算法的攻击检测流程见图 3。
![]() |
图 3 AdaBoost算法 |
基于图 3算法,深度检测模块的工作原理如下:通过在网络中模拟正常行为以及攻击行为,提取特征作为训练样本;根据训练样本及其标签来训练AdaBoost算法,得到适用于SDN网络的分类器;最终基于训练好的分类器,实时进行攻击检测。
本文首先通过调节触发检测模块中所涉及的参数保证其极低的漏检率,第一时间发现可能的异常并发起攻击预警;深度检测模块收到预警信号后立即启动,进行细粒度的特征提取并使用AdaBoost算法执行攻击检测。表 3为深度检测模块中提取的表示网络流量变化的8个细粒度特征。
特征量 | 计算方法 |
总流表数 | flowCount=n |
总数据包数 | |
总字节数 | |
源IP地址的熵 | |
目的IP地址的熵 | |
不对称数据包数 | |
不对称字节数 | |
流表匹配率 |
表 3中,n表示该时间内收集到的各个交换机中流表项的总数,k表示IP地址对的总数,d表示交换机的总数,asypkgsi表示第i个IP地址对的不对称数据包的数目,asybytesi表示第i个IP地址对的不对称数据包的字节数目,matchesi表示第i个交换机匹配成功的次数,lookupsi表示第i个交换机尝试匹配流表的次数。
3 实验与评估本文选择Mininet作为搭建SDN网络的平台,Ryu作为SDN网络的控制器。基于Mininet平台,在SDN的应用层内则实现了完整的DDoS检测系统。选择图 4的胖树(fat-tree)结构作为实验的网络拓扑结构:一方面,胖树结构被广泛应用于数据中心网络,而数据中心是SDN网络的最常见应用场景;另一方面,数据中心是DDoS攻击的重点对象。
![]() |
图 4 胖树网络拓扑 |
真实流量生成:利用Mininet中自带的iperf工具进行功能拓展,将收集的实际网络流量引入到Mininet网络中生成测试数据。
DDoS流量生成:本文采用Scapy工具实现SYN Flood和UDP Flood这两种当前DDoS攻击中流量最大的攻击,设h1、h2为攻击主机,h7为TCP服务器,h4为合法的TCP客户端。
本文在不同的网络环境下进行多次实验,以测试攻击检测系统在不同网络带宽以及不同攻击强度下的表现,具体在实验中体现为网络的平均流速和攻击数据包的发包速率,表 4为4种实验类型的参数。
如图 4所示的网络中,h7为服务提供者,h1和h2是向服务器发起DDoS攻击的2个僵尸主机,h4为合法请求者。基于表 4中的不同实验类型,主机h1~h8模拟不同流速的合法网络通信行为,此外,h1和h2作为攻击源还将根据不同的发包速率向h7发送大量攻击数据包,数据包内容和大小由程序随机生成。表 5列出了检测结果的精确度,由表 5可见在本文模拟的网络环境中,检测方案的精确度很高。
图 5表示4类实验的归一化混淆矩阵,该图表明,检测系统中的分类算法在4个指标上均表现优异,能够很好地区分出当前网络处于攻击状态还是正常状态。
![]() |
图 5 攻击检测算法的归一化混淆矩阵 |
图 6是4类实验的接收者操作特征曲线(receiver operating characteristic curve,ROC)。图中横坐标表示假正例率,纵坐标为真正例率,AUC表示曲线包围的面积,用来衡量ROC曲线的表现情况,面积越大表示分类器性能越好。由图可见,每类实验中,AUC均接近于1,表明了分类器的良好表现。
![]() |
图 6 攻击检测算法的ROC曲线 |
表 6展示了本文所提出的检测方案的平均检测准确率与文[5-6]与文[13]的对比。由表可见,本文提出的联合检测方案与现有研究相比检测准确率较高,系统具有较强的可靠性。
接下来对检测系统的复杂度进行评估,使用CPU占用率这一指标作为计算复杂度的核心指标。图 7描述了深度检测系统中实时检测阶段的AdaBoost分类算法在与触发检测系统中的改进的CUSUM算法分别保持运行时,CPU占用率的变化。由图 7可见,AdaBoost算法在进行判决时,消耗了相对较高的CPU。经计算,改进的CUSUM算法的CPU占用率平均比AdaBoost算法的判决部分降低约4%,即CPU占用率减小了20%,表明本文提出的由触发检测模块中低开销的算法替代机器学习分类算法在网络中长期运行实现粗粒度检测的方案,相比直接使用机器学习算法进行检测,计算复杂度得到了明显的降低。
![]() |
图 7 AdaBoost算法与改进的CUSUM算法的CPU占用率 |
下面分析系统的延时,即从攻击源发起攻击到系统检测到攻击所需要的时间。检测系统的检测时长tdelay为触发检测模块的检测延迟时间ttrigger和深度检测模块的检测延迟时间tdeep之和,表示如下:
$ {t_{{\rm{delay}}}} = {t_{{\rm{trigger}}}} + {t_{{\rm{deep}}}}. $ | (18) |
触发检测模块的延时ttrigger包括该模块中控制器的轮询周期即信息采集周期T_poll,以及改进的CUSUM算法的延时t改进的CUSUM,如下所示:
$ {t_{{\rm{trigger}}}} = {\rm{T}}\_{\rm{poll}} + {t_{改进的{\rm{CUSUM}}}}. $ | (19) |
实验表明,后者几乎可以忽略不计,因此ttrigger近似为信息采集周期T_poll=5 s。深度检测模块的检测延时主要取决于基于决策树的AdaBoost算法在进行检测判决时所消耗的时间。图 8通过累计分布函数(cumulative distribution function,CDF),显示了基于滑动时间窗的特征构造对判决时间的影响。由图可见,通过滑动时间窗增加特征值并未给系统延时造成明显的增加,80%以上的样本每次判决时间在5 ms以内。整个检测系统的延时tdelay约为5.005 s。
![]() |
图 8 基于滑动时间窗的特征构造对判决时间的影响 |
4 防范技术研究
SDN中DDoS攻击的防范技术需要解决以下问题:
1) 攻击阻断后,大量无效流表占用交换机的资源。交换机作为SDN中数据平面内的一个轻量级的转发节点,无效的流表将造成其有限内存的消耗甚至导致流表溢出。
2) 网络可用性的提升。一方面,遭受攻击的网络将发生拥堵现象,需要采取措施降低合法请求受到的负面影响,提升整个网络的效率;另一方面,执行攻击阻断措施时,要设法降低合法流量被过滤的概率。
基于上述问题,可采用基于路由动态调整和溯源主动阻断相结合的防御方案。动态路由模块目的是利用网络资源来分散和吸收攻击流量,其核心是基于带宽的最优路由算法,即优化的K最短路径算法。该算法根据流量和带宽信息制定路由方案,通过控制器下发流表的方式将该路由方案告知交换机,由此整个网络可以动态地根据拓扑和流量的变化灵活路由,在面临攻击时,其可用性和抗压能力得以提升。攻击阻断模块包括基于主机行为的攻击溯源阶段和基于动态流表的报文实时过滤阶段:溯源阶段,提取基于主机行为的特征8元组,使用AdaBoost算法基于8元组来识别异常主机;过滤阶段,提出了一种基于流表保护机制的报文过滤方案,该方案制定针对攻击源的动态流表来实时过滤攻击报文,并为流表项定义较短的闲置超时时间,自动删除无效流表以释放资源,通过全局白名单机制来保护合法主机被误判和阻断,增强系统的灵活性与网络的可用性。实验表明:该防御方案对攻击报文进行了成功的过滤,且过滤后删除无效流表约22.7%,节省了交换机的资源。
5 总结本文提出了一种基于SDN的DDoS联合检测方案,由触发检测和深度检测2个模块构成,将低开销、粗粒度的触发检测算法与高精度、细粒度的深度检测算法相结合,以扬长避短。触发检测模块在网络中保持长期运行,通过改进的CUSUM算法实时跟踪多维度序列进行粗粒度的异常检测,同时调节参数保障极低的漏检率,第一时间发现可能的异常,起到预检测的作用;深度检测模块则在触发检测模块发起警报后启动,提取更细粒度的特征并引入基于时间窗的特征构造方案,使用高精度的AdaBoost算法识别流量是否异常。实验结果表明:该防护系统具有系统开销小、检测准确率高的特性,实用价值较强。
[1] |
DIXIT A, HAO F, MUKHERJEE S, et al. Towards an elastic distributed SDN controller[C]//Proceedings of the 2nd ACM SIGCOMM Workshop on Hot Topics in Software Defined Networking. Hong Kong, China: ACM, 2013: 7-12.
|
[2] |
GAO S, LI Z, XIAO B, et al. Security threats in the data plane of software-defined networks[J]. IEEE Network, 2018, 32(4): 108-113. DOI:10.1109/MNET.2018.1700283 |
[3] |
DAO N N, PARK J, PARK M, et al. A feasible method to combat against DDoS attack in SDN network[C]//Proceedings of 2015 International Conference on Information Networking. Siem Reap, Cambodia: IEEE, 2015: 309-311.
|
[4] |
GIOTIS K, ARGYROPOULOS C, ANDROULIDAKIS G, et al. Combining OpenFlow and sFlow for an effective and scalable anomaly detection and mitigation mechanism on SDN environments[J]. Computer Networks, 2014, 62: 122-136. DOI:10.1016/j.bjp.2013.10.014 |
[5] |
MOUSAVI S M, ST-HILAIRE M. Early detection of DDoS attacks against SDN controllers[C]//Proceedings of 2015 International Conference on Computing, Networking and Communications. Garden Grove, USA: IEEE, 2015: 77-81.
|
[6] |
CONTI M, GANGWAL A, GAUR M S. A comprehensive and effective mechanism for DDoS detection in SDN[C]//Proceedings of 2017 IEEE International Conference on Wireless and Mobile Computing, Networking and Communications. Rome, Italy: IEEE, 2017: 1-8.
|
[7] |
WANG X L, CHEN M, XING C Y, et al. Defending DDoS attacks in software-defined networking based on legitimate source and destination IP address database[J]. IEICE Transactions on Information and Systems, 2016, 99(4): 850-859. |
[8] |
BRAGA B R, MOTA M E, PASSITO P A. Lightweight DDoS flooding attack detection using NOX/OpenFlow[C]//Proceedings of the IEEE Local Computer Network Conference. Denver, USA: IEEE, 2010: 408-415.
|
[9] |
肖甫, 马俊青, 黄洵松, 等. SDN环境下基于KNN的DDoS攻击检测方法[J]. 南京邮电大学学报(自然科学版), 2015, 35(1): 84-88. XIAO F, MA J Q, HUANG X S, et al. DDoS attack detection based on KNN in software defined networks[J]. Journal of Nanjing University of Posts and Telecommunications (Natural Science Edition), 2015, 35(1): 84-88. (in Chinese) |
[10] |
GAO S, LI Z, YAO Y, et al. Software-defined firewall: Enabling malware traffic detection and programmable security control[C]//Proceedings of the 2018 on Asia Conference on Computer and Communications Security. Songdo, Korea: ACM, 2018: 413-424.
|
[11] |
左青云, 陈鸣, 王秀磊, 等. 一种基于SDN的在线流量异常检测方法[J]. 西安电子科技大学学报(自然科学版), 2015, 42(1): 155-160. ZUO Q Y, CHEN M, WANG X L, et al. Online traffic anomaly detection method for SDN[J]. Journal of Xidian University, 2015, 42(1): 155-160. DOI:10.3969/j.issn.1001-2400.2015.01.32 (in Chinese) |
[12] |
XU Y, LIU Y. DDoS attack detection under SDN context[C]//Proceedings of the IEEE INFOCOM 2016-The 35th Annual IEEE International Conference on Computer Communications. San Francisco, USA: IEEE, 2016: 1-9.
|
[13] |
DA SILVA A S, WICKBOLDT J A, GRANVILLE L Z, et al. ATLANTIC: A framework for anomaly traffic detection, classification, and mitigation in SDN[C]//Proceedings of the NOMS 2016-2016 IEEE/IFIP Network Operations and Management Symposium. Istanbul, Turkey: IEEE, 2016: 27-35.
|
[14] |
NANDA S, ZAFARI F, DECUSATIS C, et al. Predicting network attack patterns in SDN using machine learning approach[C]//Proceedings of 2016 IEEE Conference on Network Function Virtualization and Software Defined Networks. Palo Alto, USA: IEEE, 2016: 167-172.
|
[15] |
GAO S, PENG Z, XIAO B, et al. FloodDefender: Protecting data and control plane resources under SDN-aimed DoS attacks[C]//Proceedings of INFOCOM 2017-IEEE Computer Communications Conference. Atlanta, USA: IEEE, 2017: 1-9.
|
[16] |
BARKI L, SHIDLING A, METI N, et al. Detection of distributed denial of service attacks in software defined networks[C]//Proceedings of 2016 International Conference on Advances in Computing, Communications and Informatics. Jaipur, India: IEEE, 2016: 2576-2581.
|