论文
Xu Y , Liu Y . DDoS attack detection under SDN context[C]// IEEE INFOCOM 2016 - IEEE Conference on Computer Communications. IEEE, 2016.
0 Abstract
软件定义网络(Software Defined Networking, SDN)已经成为了一种新的网络管理平台,集中式的控制框架提供了很多新的机会。而网络管理中的检测一直是一项重要任务,而如何快速检测精确检测DDoS攻击是一项重要的挑战。本篇论文提出了一种利用SDN流量监测能力的方法,我们的方法利用了整个SDN网络的可用测量资源来自适应地平衡攻击检测的覆盖范围和粒度。通过实验,我们证明了方法可以通过使用有限次的流量监测规则来快速定位潜在的DDoS攻击者和受害者。
1 Introduction
通过使用SDN,网络的admins可以灵活地在任何可控交换机安装流规则,只要其具有足够的三态内容寻址存储器(Ternary Content addressable memory, TCAM)。在当前的Openflow规则中,每个流规则中都有数据包计数字段和字节计数字段。如果流规则与数据包匹配,则该规则的数据包计数和字节技术字段将相应增加。
DDoS (Distributed denial-of-service, DDoS) 攻击是集中多个攻击者的流量,以压倒性的流量优势使得受害者无法使用在线服务。近几年,DDoS出现的频率越来越高。因此,如何快速有效得检测DDoS攻击成为一个重要的问题。因为DDoS攻击者分布于整个网络中,因此有效的DDoS检测需要整个网络的监控。为了及时发现和缓解,DDoS检测还应对流量异常做出快速的应对反应。SDN中央控制器可以快速快速安装和调整所有交换机上的测量规则,这使得SDN成为DDoS检测的理想平台。此外,在检测到DDoS攻击者后,SDN控制器可以立即安装阻止规则并消除攻击流量,进一步提高DDoS攻击的缓解能力。
当前的DDoS攻击有很多形式,例如消耗计算资源,中断配置信息等,对于不同类型的DDoS攻击,这里有不同的DDoS攻击检测方法。在本工作中,我们关注如何检测大流量的DDoS攻击,即超过数千名攻击者传输数据包,以耗尽受害者的访问带宽。此外,以前的研究表明,流量偏差/不对称是DDoS攻击的另一个重要特征。在DDoS攻击中,通常受害者服务器的流入和流出流量存在巨大的差异。但是如果我们仅仅考虑流量而不观察两个方向的的差异,我们可能错误地将正常的大的流量标记为DDoS攻击流。
SDN交换机使用TCAM作为查询内存,因为其快速的查找能力。但是TCAM非常昂贵且耗电,所以每一个SDN交换机的TCAM大小非常有限。当代SDN交换机只能存储大约3000条规则,同时无法以高的IP细粒度记录整个网络的流统计信息,因此,为了利用SDN来检测DDoS攻击,我们应该解决以下的两个问题:
- 如何获得流的速率和流速率的偏差/不对称特征以实现高精度检测。
- 如何协同使用所有交换机上可用的有限TCAM来监管整个网络。
为了解决第一个问题,对于每个可能存在受害者的IP范围,我们必须安装一对规则来获取进入和流出该范围的流。并且我们需要确保这对规则的范围粒度一致。
而对于第二个问题,我们需要协调所有交换机上放置的监控规则,以有效利用整个网络中可用的所有TCAM来最大化检测范围和最小化检测粒度。
我们提出了一种自适应动态找到潜在的受害者和攻击者的IP范围,并缩小正常的IP范围。此外,我们提出了一个Sequential方法和Concurrent方法来检测受害者和攻击者。最后,我们通过实验评估了方法,展示了其优点及潜在的缺陷。
2 related work
略
3 System Overview
一般来说,DDoS攻击防御主要包含两个部分:受害者检测程序和检测后程序,我们将在下面详细描述:
受害者检测的目的是快速准确地检测DDoS攻击的受害者。如引言所述,正确识别DDoS攻击受害者的关键是共同考虑流量特征和流量不对称的特征。
为了获得这两个特征,对于每一个潜在的受害者IP,我们应该有相应的测量规则来记录到达该IP的总流量以及流出该IP的总流量。因为TCAM大小有限,我们无法为对整个网络中所有的独立IP地址安装上述的测量规则。因此,最初我们只能观察一个IP范围内流量和流量不对称的特征。如果我们发现该IP范围存在潜在的DDoS攻击,我们将自适应地检测更具体的受害者IP范围。
否则,我们将自适应地缩小以节省TCAM大小来检测其他潜在的受害者IP范围。由于TCAM大小限制,如果TCAM大小并不够大,我们可能永远找不到准确的受害者IP地址。当找到最小的可能存在受害者的IP范围时,受害者检测程序结束。
另一个程序则是检测后程序,有两个方法可以对检测到的DDoS攻击做出反应。一种方法是被动处理,例如,联系受害者并让他迁移正常服务到新的IP,但是迁移处理通常需要花费很多时间并且浪费服务器资源。另一个方法则是主动处理,例如,网络管理员找到攻击者IP地址,并在Openflow交换机中安装规则并drop掉从攻击者发送到受害者的数据包。与受害者检测程序相同,攻击者检测同样是自适应的,这种方式也是本篇论文所研究的,我们称为攻击者检测程序。
上述两种检测程序可以顺序执行或者并发执行,这将导致两种不同的检测方法。我们将在下面两节中进行详细讨论。
4 顺序执行
A. 受害者检测
1)初始化规则放置:
最初,如果我们不知道DDoS攻击是否发生及包含受害者的IP范围,DDoS检测系统需要监控系统中所有的IPs。为了更加快速准确地检测,我们希望尽可能地减小用于监控的IP范围粒度。由于所有交换机上流表的大小限制,我们的设计目标是最小化所有受监控IP范围内的最大粒度。换句话说,我们不希望存在一个单独的规则来监控大量的IP地址。
遵循SDN规则的定义,IP范围使用该范围内所有IP地址的公共前缀来表示。给定一个初始IP范围RsR^sRs和最终IP范围RtR^tRt,我们想要为所有可能的起点和重点规划路径,即:
{<s,t>,∀s∈Rs,∀t∈Rt}\{<s,t>, \forall s \in R^s, \forall t \in R^t \}{<s,t>,∀s∈Rs,∀t∈Rt}
在网络中经历相同的SDN交换机序列,为了发现流量不对称性,我们额外想要规划反向路径,即:
{<t,s>,∀t∈Rt,∀s∈Rs}\{<t,s>, \forall t \in R^t, \forall s \in R^s \}{<t,s>,∀t∈Rt,∀s∈Rs}
同样遵循相同的SDN交换机序列。
我们假设正在开发PoP级的拓扑,同时两个PoP路由器之间的所有流量都经过相同的SDN交换机序列。经过这一步操作,我们称每一对{Rs,Rt}\{ R^s, Rt \}{Rs,Rt}视作一个流fff。
在初始话规则设置后,我们确定用于测量的受害者IP范围粒度以及每个流的监视器规则放置。对于规则管理一般有两种方法。第一种方法是针对一个潜在的受害者IP范围和攻击者IP范围分别专用一个测量规则。第二种方法是每一个规则被用来检测潜在的受害者IP范围和攻击者IP范围。
通常来说,如果我们想要将A,B两个区间分别分成kkk个区间,则第一种方法则会产生4k4k4k个监控规则,而第二种方法会产生2k22k^22k2个规则。所以在顺序执行方法中,我们会使用第一种规则管理方法。
使用第一个规则,我们使用如下的算法1来初始化规则分区和放置:
我们先先为每一个流fff设置一个规则来监控。令NfN_fNf为与fff相关的监管规则数量,因此,一开始我们令Nf=1N_f=1Nf=1并且对于fff配置一个从IP范围RsR^sRs到IP范围RtR^tRt的监控规则。
因为我们这个阶段只关注受害者检测,所以我们仅考虑受害者监控范围的精度,我们定义为监控粒度。首先,我们设置监控粒度GGG为一个非常大的值GupperG_{upper}Gupper,然后迭代地减少G的值。每一次迭代,我们找到所有监控的IP范围的最大粒度GmaxG_{max}Gmax,然后对于每个GmaxG_{max}Gmax对应的规则,我们将其监控规则分成两半,并将原有规则替换为两个新的规则,因此,GmaxG_{max}Gmax将减少为Gmax/2G_{max} / 2Gmax/2。规则拆分后,可能出现监控相同范围的规则,此时我们需要去掉冗余的规则。之后再更新每个流的NfN_fNf,同时检查监控规则是否可以放置在网络中所有交换机的TCAM上。如果这里存在一个合法的放置,我们将尝试继续尝试迭代来细化IP范围的粒度。最终能得到最小的最大细粒度即为所求。
2)规则放置合法性检查
算法1存在一个关键问题:给定交换机的空间要求{Nf,∀f∈F}\{ N_f, \forall f \in F \}{Nf,∀f∈F},是否可以找到一个合法的监控规则放置方案。
该问题可以转化为经典的最大流问题,并且可以还使用Ford-Fulkerson算法来解决。在下图我们展示了规则放置检查的虚拟图。
图基本上由四类节点组成:源点SSS和汇点TTT,流经过的节点{fi,i∈F}\{ f_i, i \in F \}{fi,i∈F}和交换机节点
源点SSS连接了所有的流节点fif_ifi,其边权为NiN_iNi。然后,流节点fif_ifi连接了所有的交换机节点sjs_jsj,其边权为正无穷。最后,所有交换机节点sjs_jsj连接到汇点TTT,其边权为第jjj个交换机可用的TCAM容量CjC_jCj。通过此转化,原问题变为是否从SSS到TTT的最大流等于∑f∈FNf\sum_{f \in F} N_f∑f∈FNf。
上述最大流问题可以利用算法Ford-Fulkerson进行解决。程序结束后,我们将知道是否存在可行的放置方案,如果可行,我们可以检查网络中每一个交换机上还需要多少规则空间。
3)检查规则的自适应性
在初始化规则放置后,我们将允许DDoS攻击检测算法来估计在规则集合中每一个IP范围存在受害者的可能性。对于没有攻击迹象的IP范围,我们可以使用更粗粒度的规则来替换细粒度的规则。对于DDoS攻击可能性高的IP范围,则可以利用可用或者新发布的规则空间来安装更加细粒度的规则来监控。
在算法2中,我们展示了自适应算法来迭代地定位潜在的受害者IP范围。对于每一个在现在的监控范围集的终点IP范围d,我们收集其流量统计并使用DDoS攻击受害者的分类器CvC_vCv来计算一个值Cv(d)C_v(d)Cv(d),如果Cv(d)=FalseC_v(d) = FalseCv(d)=False,则ddd将不是一个潜在的受害者。
B. 攻击者检测程序
在找到潜在的受害者IP范围后,我们将启动攻击者检测程序。攻击者检测程序也以自适应的形式进行工作。细节详见下面算法3
对于每个范围sss,我们将使用攻击者判别器Cs(s)C_s (s)Cs(s)来识别是否范围sss存在攻击者。如果存在,我们将放大范围sss来进一步查找攻击者IP。如果已经达到足够细粒度的范围或者交换机不存在足够的TCAM空间来得到更精确的规定集,则我们将直接返回IP或者IP范围。