1. 引言
软件定义网络(SDN)在学术界和行业中都越来越流行,通过将控制逻辑与转发设备分离,SDN可以抽象底层基础结构,并为管理员提供虚拟网络层操作系统,以更好地利用和控制其网络。因此,SDN正在成为数据中心等大规模网络的领先技术,尽管SDN为网络带来了各种迷人的功能和巨大的希望,但它也引入了严重的潜在漏洞和威胁性,在SDN技术暴露的众所周知的漏洞中,分布式拒绝服务(DDoS)攻击是由集中控制逻辑引起的主要威胁,随着越来越多的企业将其应用程序转移到SDN,可以肯定的是,SDN将遭受传统和新型SDN专用DDoS攻击的热潮。面对这种不可避免的趋势,有必要对SDN各层中的DDoS攻击进行全面的分析研究。
本文首先对软件定义网络的主要特点和架构以及OpenFlow的特点进行了说明,然后指出了DDoS的特点以及在SDN中发送DDoS所体现的特征,并进一步分析并归纳了在SDN中防御DDoS的典型方法的优劣性,最后对未来的研究方向的趋势做出了展望。
2. 软件定义网络定义概述
2.1. 软件定义网络
在传统的IP网络中,用于协议计算的控制平面与报文数据转发的数据平面同处在同一台设备中,它必须同时操作5000多种分布式协议来促使整个网络变得智能化,一旦加入了一种新的网络协议,那么所有的网络设备必须同时做出相应的变化,而实际上,一种新的协议的落实需定义网络(SDN)就应运而生了。
软件定义网络(SDN)的起源最初是在2006年由Clean State团队作为学术实验开始的,在2008年,由Mckeown教授正式提出了SDN的概念,SDN作为一种新兴起的网络体系结构 [1],它的控制平面和数据平面是分离的,网络智能和状态在逻辑上是集中地,底层网络基础结构则是从应用程序中抽象出来的 [2],而这样做的好处是使得整个网络根据不断变得流量需求来进行配置和部署,这恰恰是当前网络所不存在的。根据ONF的定义,SDN可分为三层结构,图1展示了它的体系结构。
应用层:处于SDN体系结构的顶层,为软件开发者提供了开放性可编程的接口,让其可以根据用户的特定需求,进行软件的私有化定制,并且可以让网络管理者通过配置来更灵活地掌控并配置网络。
控制层:SDN的核心层,它的核心组件是由集中式控制器组成,这些控制器负责管理整个业务流,通过编程来对路由、流、数据包做出转发丢弃决策。
基础设施层:也被称为数据平面,该层主要由交换机和路由器等转发设备组成,按照控制层下发的流的转发策略来对流进行转发。
2.2. OpenFlow
OpenFlow协议作为一种规范,实现了SDN的南向接口 [2] [3] [4]。该协议构成的要素有OpenFlow控制器、交换机、交换机与控制器之间通道建立的链接,以及交换机中的流表,如图2所示。当交换机收的新的数据包时,首先会根据流表的顺序来进行匹配,如果匹配成功,就会执行流操作中的相关动作,如果匹配失败,则将消息(PacketIn)转发到控制器,以查询有关新流的信息。控制平面会制定新的路径转发策略,并向交换机发送消息(PacketOut),以安装新流程的规则。
3. 分布式拒绝服务攻击(DDoS)概述
3.1. DDoS攻击原理
分布式拒绝服务攻击主要是攻击者利用数量较多的恶意用户来伪造大量的虚假请求来发送到受害端,使得受害端的网络或者系统资源被耗尽,从而无法为合法的用户提供正常的网络服务,导致正常用户的体验下降。随着大数据的兴起,互联网的规模日益趋大,出于各种各样的利益目的,DDoS攻击发生的频率及规模也逐渐变大,并且DDoS的目标也不是单一的服务器,如图2所示。
3.2. DDoS攻击分类
由于参照的标准不同,DDoS攻击划分的形式多种多样 [5] [6] [7] [8] [9],本文则是根据带宽消耗和资源消耗来进行划分。
1) 带宽消耗类
这这类攻击的特点是攻击者通常是利用协议的漏洞,然后针对漏洞形成畸形的数据包发送到主机,然后导致主机的CPU,I/O等系统资源被耗尽,从而导致其无法提供正常服务。
2) 资源消耗类
这类攻击的重点通常都是利用TCP,UDP,ICMP和DNS协议数据包而发起的,特点是攻击者向主机在短时间内发送大量的数据包或者是恶意放大流量来耗尽链路的带宽,它可以分为洪泛攻击和放大攻击。洪泛攻击包括UDPFLOOD和ICMPFLOOD等,而放大攻击包括DNS反射攻击。
3.3. SDN中的DDoS攻击
3.3.1. OpenFlow流重载
OpenFlow交换机的特点是在当收到未知数据包时,会想控制器发送请求信息,来获得新的流匹配规则。但是每个流规则都是有自己严格的生命周期的,一旦超过,则会被另外的流规则所取代。
攻击者恰恰是利用这一特性,生成新的陌生数据包,控制器会为这些新的数据包下发新的流匹配规则,交换机存储流表项的空间有限,这些新的流匹配规则会取代旧的规则,这时,正常的数据包匹配的流规则由于没有空间存储,则会被丢弃。目前,商用的交换机最多可以匹配2000个流规则。
3.3.2. OpenFlow通道拥塞
OpenFlow交换机内部维护着一个较小的三态内容寻址内存器(TCAM),在数据包匹配流表规则的时候,一旦没有匹配到,交换机会将数据包的头部作为Packet-In消息发送到控制器,并将其剩下一部分存储到TCAM中,但是它的空间是有限的,一旦TCAM已满,交换机则会把整个数据包都当做Packet-In消息发送,由于交换机与控制器之间的安全通道带宽是有限的,最终会导致整个通道拥塞, 这样合法的用户数据也无法获得服务。
3.3.3. 控制器过载
控制器作为SDN中的核心,有着集中控制的有点同时也容易造成单点故障,这恰恰是DDoS攻击的首选目标。当大量的假流进入网络时,控制器就会收到许多虚假的“Packet-In”消息,控制器的有限资源将会被耗尽,从而导致整体架构性能降低,甚至瘫痪。
4. SDN中的DDoS防御
DDoS对于网络安全的影响越来越大,在SDN环境中进行DDoS缓解正处于研究和探索阶段,大多数的研究都是在借鉴了传统网络中的检测防御方案的基础上,针对SDN的独有特性来进行一系列探索修改。本节就是针对SDN中的DDoS攻击的防御机制做出介绍分析。
4.1. 流表重载防御
Dao等人提出了一种基于源IP过滤的检测方案 [10],该方法选取了源IP地址、地址统计计数器、用户平均连接数(k)、最小数据包统计数(n)等4个参数作为检测依据,来对正常流量和攻击流量进行一个分类,如果源IP地址建立的连接数小于k,并且每个连接发送的数据包小于n,那么它就认为该连接为DDoS连接,然后控制平面会针对该地址下发丢弃规则策略到交换机。该技术优点在于可以快速的对恶意的流量进行删除,但是同时可以能容易造成误判让用户丢弃正常的数据。
Xu等人提出了一种交换机空间智能管理框架,它可以再流表重载之前作出响应 [11]。它主要包含三个模块流表的状态收集模块、流预测模块、流删除模块,它的工作原理是流表状态收集模块将在、周期时间T获取流表的状态信息,并计算出当前交换机中缓存区的剩余空间,然后流量预测模块预测下一采样周期到达交换机的新流数。如果剩余空间小于预计的数量,则主动流条目删除模块将删除在将来的时期最不可能匹配的流条目,以提供更多的空间来插入新的流条目。另一方面,如果下一周期中新流的预测数量太大,则当流的可能性值超过网络管理员预先设置的阈值时,主动流条目删除模块将评估表溢出的可能性,该框架可以调用某些速率限制策略来防止表溢出的发生,缺陷在于它并没有对其作出响应策略。
4.2. OpenFlow通道防御
Lu Y等人提出了一种结合OpenFlow和sFlow的检测方法 [12],该方法流收集模块、异常流量检测模块、清洗模块构成,主要通过sFlow的报文收集能力,来减少交换机和控制器之间的报文交互,从而减少带宽。
Gao等人提出了一种用于SDN/OpenFlow网络的独立于协议的防御框架 [13],它主要由4个功能模块组成,分别是攻击检测模块、表丢失工程模块、数据包过滤器和流规则管理模块,攻击检测模块会持续的监视网络状态,一旦检测到DDoS,其他3个平时空闲的模块被激活,在DDoS发生时表丢失工程模块会安装保护规则将流量分流到邻居交换机,从而减少控制器和受害者交换机之间的带宽。
4.3. 控制器防御
Zhang等人提出了一种多层队列方法(MLFQ),允许队列动态的扩展和聚合,从而达到网络中的交换机和主机之间强制公平的共享控制器资源 [14],它的基本实现的思路是:当网络中的请求正常时,控制器只利用少数几个队列来进行处理,一旦超过阈值时,就会额外的在维护多个子队列用来处理请求,当请求的数量小于阈值时,临时增加的队列将重新聚合,虽然实验证明了它可以有效的隔离泛滥的请求,但是当攻击的流量太大并且持续时间较长时,它维护起来将会变的很麻烦。
Braga提出了自组织映射(SOM)一种神经网络机制来控制控制器流量 [15],用来对网络中的流量进行分类。它具有三个模块:流收集模块,特征提取模块和分类器模块。流特征提取模块会从流量中提取每流包的平均数、每流平均比特数、每流平均时长、对流比、单流增长速率等六个特征,然后配合机器学习的方法,进行训练分析最后达到检测效果。实验结果显示该算法的检测效果很好,但是在特征提取和训练学习上面花费较长的时间开销,影响了控制器的处理速率。
5. 结语
随着SDN应用的发展,SDN网络的安全问题受到了越来越多的重视,而DDoS则是它主要问题之一。本文主要简单介绍了SDN及DDoS的背景,DDoS攻击对软件定义网络威胁,最后分析了针对SDN结构中的不同的防御方案,讨论了其优劣性。尽管到目前为止,研究学者已经提出了许多防御机制,但是仍然存在一些挑战需要解决,从分析中可以看出在设计SDN的安全防御方案时,结合人工智能、深度学习将是未来研究的方向。