SDN可编程数据面中的DDoS攻击检测研究*
2022-01-20童永娟顾瑞春马玲珑
童永娟,顾瑞春,马玲珑
(内蒙古科技大学 信息工程学院,内蒙古 包头 014010)
软件定义网络(Software Defined Network, SDN)的核心概念是将数据平面和控制平面分离开,通过OpenFlow协议实现网络流量的灵活控制,从而为核心网络及应用的创新提供良好平台[1].
当网络发生DDoS攻击时,交换机没有处理这些请求的能力[2],会向控制器询问指令.控制器将忙于应对这些DDoS请求,从而导致SDN网络性能下降甚至瘫痪.因此,减少控制器的工作量以防御DDoS攻击是一个巨大挑战[3].SDN的灵活机制使得网络中对数据平面攻击的防御变得非常复杂,且目前SDN数据平面还没有提供比较有效的转发验证机制[4],所以直接在交换机中应用和部署异常攻击者防御方案存在较大困难.因此,在SDN数据面中研究异常流量攻击检测具有重要意义和价值.
鉴于以上动机,文章的主要研究贡献包含3个方面.首先,运用信息熵检测方法在SDN可编程数据面实现DDoS攻击检测原型;其次,提出了一种基于信息熵的DDoS攻击检测优化算法;最终,通过实验评估证明了提出的安全检测机制可以在数据面中实现并获得性能优势.
1 相关工作
文章调研了课题的研究背景及意义,分析了国内外研究现状及基本方法,在此基础上,提出了一套基于SDN可编程数据面的DDoS攻击检测方案,并进行了仿真和实现[5].
行业间的恶意竞争,社会上的敲诈勒索是DDoS攻击的主要动机.如图1所示,根据2020年3月12日,华为举行的《2019年全球DDoS攻击现状与趋势分析报告》线上发布会[6]可知,行业间激烈竞争导致游戏、电商成为DDoS攻击重灾区.
图1 攻击目标行业分布
分布式拒绝服务攻击是一种针对目标系统的恶意网络攻击行为,它通过向服务器提交大量请求,增加服务器负荷,造成网络过载,从而干扰甚至阻断正常的网络通讯.
StateSec等[7]实现的是基于交换机内处理DDoS攻击的检测机制,他将监视功能卸载到数据平面,通过对源和目标IP地址以及传输端口进行熵分析来执行检测.由于该机制要求每个观察到的IP端口4元组值都有1个流表条目,这意味着无限制的表利用率,造成高开销.Sonata等[8]允许运营商定义数据包流过滤查询,以将额外的监视逻辑转移到数据平面.这些查询在可编程转发设备上执行,以便将特定的流量发送到外部流处理器.但是这种机制与外部流处理器的大量通信可能会造成对攻击检测的延迟.
以上研究发现,现有的在SDN控制面上构建DDoS攻击防御机制的方法,对提供高防御性能具有挑战性.一方面,DDoS攻击检测方法需要比实际SDN具有更复杂的分析机制[9],导致控制器需要频繁统计来自数据平面交换机数据包以进行攻击检测和僵尸网络定位,这会显著增加南向开销和检测延迟[10].另一方面,在控制面进行DDoS攻击检测尚未充分利用SDN的潜在优势.因为有效的DDoS攻击检测要求检测机制能极其精准地检测并作出快速反应,现有的基于SDN的攻击检测方法有以下2个关键问题:(1)由于检测和缓解攻击都需要将包括恶意流量在内的所有数据包从数据平面的交换机转发到控制器,因此控制通道变得饱和,控制器进程过载;(2)控制器强制控制数据流的逻辑,如果控制器处理每个数据包,那么它就会破坏原来的SDN机制.
在SDN架构中,控制层对流和控制功能进行攻击分析,控制器负责利用其对整个网络全局视图,执行细粒度攻击检测并制定高级防御策略,丰富计算和存储资源.DDoS实时安全解决方案受到当前大多数转发设备商监视功能的限制,其准确性是以高开销为代价[7],在这种情形下,基于可编程数据面的方法成为目前最优方案,由于数据包是在数据平面上处理,因此应启用具有粗粒度处理功能的交换机以执行检测操作.所以本实验的主要检测方案部署在数据平面内,由粗粒度的行为,流量监控和细粒度的基于流量特征熵的算法以及报警机制组成.
2 P4语言与信息熵的基本概念
2.1 协议无关的数据面编程语言P4
P4(Programming Protocol-Independent Packet Processors)是一种声明式编程语言,它主要通过编程来下达指令给数据转发平面设备(如交换机、网卡、防火墙、过滤器等),告知其对数据流处理方式.
图2展示了P4和已有的协议接口之间的关系.开发人员通过编译P4程序,在可编程的数据平面中生成具体的配置,然后生成运行时应用编程接口从而帮助控制平面和数据平面之间的交互[11].
P4的完整工作流程[11]如下:用户首先需要自定义数据帧的解析器和流控制程序,其次P4程序经过编译器编译后输出JSON格式的交换机配置文件和运行时的API,再次配置的文件载入到交换机中后更新解析器和“匹配-动作表”,最后交换机操作系统按照流控制程序对数据流进行查表操作.
图2 P4和已有的协议接口之间的关系
开发人员首先利用P4定义数据包的处理流程,告诉交换机应该如何处理数据包.然后利用编译器在协议无关的交换机或者网卡上生成具体的配置,以此实现利用P4语言表达数据包的处理逻辑.
2.2 信息熵
熵在信息论中是捕获分散程度或分布集中程度的度量标准,即代表随机变量不确定程度的度量.不确定程度与概率分布有关,概率分布越均匀,不确定程度越大[12].1个离散型随机变量的熵定义为式(1):
(1)
式中:x为事件,X为所有可能的事件,f(x)为事件x发生的概率,即X={x1,x2,x3,…,xN}并且概率分布f={f1,f2,f3,…,fN}.
信息熵描述了随机变量的不确定性,有助于检测数据包字段分布模式的变化[13].测量到达网络数据包中的随机性能力使基于熵的方法成为DDoS检测的理想方式[14].随机性越大,熵越大,反之亦然.基于熵的方法依赖于网络特征分布来检测异常网络活动.通过使用各种网络头部信息(例如源IP地址,目标IP地址和端口号)的概率分布来计算熵[15].
基于以上概念,将通过P4语言在数据面实现基于信息熵的DDoS攻击检测原型,在SDN数据面中对网络异常流量的检测进行探索.
3 DDoS攻击检测设计与实现
DDoS攻击检测机制可以完全在数据面交换机中实现,文章设计了1个数据包处理管道,用于估计源和目的主机地址的熵值,以及传入的以该主机为目的的数据包的源IP地址的熵.熵值的测量既可用于表征流量,又可用于计算异常检测阈值(作为可参考化的灵敏度系数的函数).考虑到转发设备严格的时间和内存限制,使用计数哈希表集来估算不同IP地址的频率.基于合法流量和DDoS攻击的数据集,评估了熵估计误差,并根据准确性和资源消耗评估了检测性能.通过灵活的基于哈希表的熵估算方法,能够在数据平面中执行各种测量任务.
采用pcap技术捕获网络报文,使用来自CAIDA Aninymized Internet Traces 2016的合法数据包跟踪,CAIDA 2016高速Internet骨干链接记录的数据集[16],为表示DDoS攻击,从CAIDA DDoS Attack 2007数据集中获取数据包,CAIDA 2007[17]包括尝试消耗目标服务器的计算资源并阻塞将该服务器连接到Internet的网络连接,利用P4语言在SDN数据平面使用信息熵算法计算出熵值[12],并与阈值比较,通过此技术手段识别和过滤网络中的异常流量,确保及时、准确地进行异常流量检测,从而保证有效减小恶意攻击对网络及网络运营业务造成的影响.
现有的基于信息熵的检测机制是在每一个观察窗口内,计算分析每个数据包的源和目的IP地址的熵值,这种在高速链路上,熵遍历大量数据会降低准确性[18].通过完全在数据平面内启用DDoS攻击检测,提出的机制比以往的工作有了提升.以TCP SYN泛洪攻击为例,只需计算出以该主机为目的地址的所有源IP地址的熵值,如果该数据包的源IP地址熵值很高,就可以判定该网络被攻击.而不需要计算出每个数据包的源和目的IP地址的熵值,然后再将其与该主机的源和目标的熵值进行比较,极大地节省了计算开销.
3.1 Count-Min Sketch的实现
文中使用哈希方式为源和目的地址的信息熵值做二维表格.利用哈希的方法,根据哈希值的范围来确定所需的存储空间.通过P4程序将哈希封装到动作(Action)中,图3是对目标设备哈希操作单元的调用[18].由于此单元无法生成负数,因此对HashAlgorithm.gi的结果通过简单的变换实现,即gi=2×gi-1.
使用哈希方法会产生很多冲突,多个种类的包哈希到同一个哈希桶内,那么这个桶的计数值就会偏大,为了减少误差,设计了Count-Min Sketch,如图4所示.设置了多个哈希函数,开辟一个二维地址空间,包经过不同哈希函数的处理,得到对应的哈希值,而这个哈希值就是Sketch.这些哈希值可能产生冲突,多个种类的包可能有相同的哈希值,则根据哈希值来确定包出现次数则会偏大,所以设立多个哈希函数,取最小哈希值,则最接近实际包数据.
图3 哈希操作的P4代码
图4 Count-Min Sketch的实现
Sketch是使用哈希来进行估计网络流的一种测量方法,可以减少存储开销.Count-Min Sketch取多个哈希函数的最小哈希值作为网络流的估计,实现简单,空间开销较少.
3.2 检测策略基础
DDoS攻击的特征是大量主机(或欺骗源)将恶意流量汇聚到1个或几个受害者,DDoS攻击会带来额外开销并破坏正常网络活动[12],因此在这些恶意活动的情况下,源IP地址和目标IP地址分布往往会偏离合法模式.所以在此观察基础上,基于香农熵的计算来设计DDoS检测机制,通过计算SDN网络中每个源和目的主机IP地址的熵来测量数据包[19].在这里,熵被用来检测大多数攻击,提供快速方便的方式来过滤可疑流量是基于熵过滤的主要优点[20].假设X是总共m个数据包中的IP地址集,f0,f1,…,fN是每个不同地址的频率,熵由式(2)给出:
(2)
3.3 数据包处理管道
基于以上思考,考虑预设值m为源IP地址的熵设置动态阈值[22].标记这个m数据包中的任意一个为恶意的观察结果,以便在接下来的工作中加以区分.为了实现这种方法,文章设计了数据包处理管道.如图5所示,将计算输入数据包流的连续分区IP地址的熵命名为观察窗口,在每个观察窗口的末尾,流量特征单元读取计算出的熵值以生成合法的流量模型[15],然后,异常检测单元将检测阈值与计算出流量模型的函数,当它们被最后的熵估计超过时发出攻击警报[20].
文中对基于信息熵的DDoS攻击算法进行了优化,首先利用哈希的方式为源和目的地址的信息熵值做二维表格,然后计算出以该主机为目的地址的所有源IP地址的熵值,如果该数据包的源IP地址熵值很高,就可以判定该网络被攻击.
4 实验结果与评估
4.1 实验装置和评估方法
鉴于P4的新颖性以及实现P4的设备仍然稀缺[14],使用基于软件的P4基础设施来评估所提出的DDoS攻击检测机制.将CAIDA Anonymized Internet Traces 2016数据集中的合法流量数据包跟踪用作合法数据包跟踪,该数据集包含来自CAIDA的监视器的匿名被动流量跟踪,该跟踪在高速Internet主干链路上进行.此数据对于研究Internet流量的特征很有用.为了表示DDoS攻击,实验过程中,从CAIDA DDoS Attack 2007数据集中获取数据包,其中包括尝试消耗目标服务器的计算资源并阻塞将该服务器连接到Internet的网络连接.虽然这些数据集都不是最近的,但是都是经过精心构建的,具有很高的实用价值.
提出的检测机制允许网络管理员使用灵敏度系数K来调整TPR(True Positive Rate)和FPR(False Positive Rate)之间的平衡,研究了不同灵敏度系数对检测机制准确率的影响.其中TPR如式(3)所示,表示在实际为阳性的样本中,被正确地判断为阳性之比率,FPR如式(4)所示,表示在所有实际为阴性的样本中,被错误地判断为阳性之比率.
(3)
(4)
较低的灵敏度系数值会提高检测阈值,从而导致较高的检测率,但是也会带来误报损失.在实验中,灵敏度参数的值K>4.125时,真阳性率均达不到1,即随着系数的增加,TPR,FPR都会下降到检测完全不敏感的程度.所以对灵敏度系数K小于等于4.125且真阳性率TPR=1时进行的研究,如图6所示,随着灵敏度系数K值的减小,伪阳性率FTP的值却在增加.真阳性率TPR=1.0,伪阳性率FPR=0.007 8,所以在精度测试中,我们预计将K设置为3.5.
图6 灵敏度系数K对真伪阳性率的影响
考虑到DDoS攻击检测不取决于网络的大小,而是取决于构成窗口大小的数据包的数量,仅当数据包的数量m足够且可行时,才能观察到好的效果,但是增加m的值,同时也会导致更高的攻击检测等待时间,因为每次检测都得接收更多的数据包.基于以上考虑,文中结合了灵敏度系数K,测试了不同窗口大小下的FPR的值.
如表1所示,当将窗口大小设置为214时,误报率为0,所以不再继续增加窗口的大小,将m的值设置为214.
表1 窗口大小对检测精度的影响
4.2 与流式计算的DDoS检测方法的比较
为了检测文中所提出的机制检测精度,研究了基于流式计算的DDoS检测方法[20],进行对比试验.基于流式计算的DDoS检测方法也是在装有Ubuntu系统的服务器上搭建实验环境的,设计了2种不同的数据包数量进行实验,第一个实验中包含10 000数据包,第二个实验中包含20 000数据包.在文章所进行的SDN可编程数据面中的DDoS攻击检测机制中,观察窗口中的数据包数量为16 384.
图7描述了在检测机制中设定了数据包数量之后,不同攻击流量占比的情况下,每种DDoS攻击检测机制在检测到TCP中SYN攻击的准确性.文章研究的检测机制数据包数量基于流式计算的检测机制数据包量之间,从图7中可以看出,随着攻击占比的提升,每种检测机制的准确率都会有所提升,但是,研究的检测机制在每种观察条件下,都优于基于流式计算的检测机制.
图7 DDoS攻击检测准确性与基于流式计算的DDoS检测方法的比较
5 结论
文章探索了与协议无关的数据面编程语言P4在可编程数据平面进行网络流量监控的能力.在SDN数据平面使用基于信息熵的DDoS攻击检测,通过实验,不仅证明了数据安全检测机制可以在数据面中实现并获得性能优势,更重要的是充分利用了SDN机制的优势,在数据面进行DDoS攻击检测研究并减少了控制器的开销.此外,实验证明,利用数据包的IP地址熵值进行DDoS攻击检测方法,利用哈希二维表格存储源和目的主机的IP地址熵值,然后计算出以该主机为目的的数据包的源IP熵值,将其与表格中的数据进行对比,如果其源地址的熵值超过阈值,则判定为攻击.这种检测方法,在攻击流量占比超过20%时,都能以100%的高精度检测出DDoS攻击,此外,该检测机制使用哈希Sketch测量方法,实现简单,减少了存储开销,并且此检测机制在攻击流量占比很低的时候就能达到较高的检测精度,满足网络中对数据包处理相关的严格内存空间和处理事件预算要求,实现了预期的低资源利用率以及低时间开销等问题.