DDoS防护系统建设的一些思路
DDoS威胁的现状
互联网和我们的工作、生活,已经结合得越来越紧密。互联网上承载了越来越多的重要业务,已经成为了关乎国计民生的关键基础设施。DDoS攻击,是对互联网基础设施的重要威胁之一,甚至可能导致一些关键业务发生长时间中断。在网上已经有很多相关的案例,在此不再阐述。
DDoS防护的现状
DDoS的攻击防护,实质上是资源的对抗。不像病毒木马、网站入侵、数据脱库等悄无声息的攻击方式,DDoS攻击受到的影响更为直观。攻击者的目标很明确,就是通过海量请求,使得被攻击者的网络出现拥塞,或者使对外提供服务的服务器资源耗尽,出现宕机。总之,迫使被攻击者服务停止运行,就是他们的目标。而面对这种资源型的攻击,被攻击者在很多时候,也是束手无策的,只能默默地等待攻击结束。
DDoS防护架构
主流的DDoS防护架构,如图一所示。DDoS防护系统一般会由流量检测系统、流量调度系统和流量清洗系统几大部分组成。流量检测系统负责流量数据的实时采集;调度系统,则是根据采集回来的数据,判别攻击并做出响应。具体的响应方式,如图二所示。有些用户场景因为调度逻辑比较简单,可能会将调度系统的功能融入到流量检测系统当中,成为检测系统中的一个子模块,不过响应调度的功能是必须要有的。流量清洗系统的职责,核心则是对异常流量执行清洗动作,并将清洗之后的干净流量回送到网络当中。
流量采集系统
DDoS流量检测系统,部署的位置在整个网络的出口。目前主流的流量采集手段有netflow和分光分流两种方式。Netflow协议最早由CISCO研发出来,运行在路由器上,通过对指定端口、指定方向的数据包进行采样,并将统计信息发送出来,以提供所需要的分析。
另外一种流量采集方式是采用分光器进行分光然后再进行分流。通过这种方式,对进出口的流量做镜像拷贝。因为不是抽样流量信息,因此能提供更深层的防护。
这两种流量采集的方式,各有优劣。采用netflow的方式,无需额外投入建设全流量镜像分析,节省开发运营成本,在流量抽样能够满足需求的情况下,可以考虑这种方式。目前运营商主流采用的DDoS流量统计方式为netlfow,采样比一般会是几千比一这样一个数量级。不过netflow是运行在路由器上的,路由器本身流量就很大,开启netflow统计分析,会消耗路由器性能,加重了路由器负担,同时也增加了稳定性的风险。很多互联网厂商,包括我们以及腾讯,因为不仅仅是DDoS防护的需求,则是通过双向流量镜像的方式,进行流量分析。
流量调度系统
流量调度系统的作用,是通过对采集系统获取的流量数据进行分析,并执行相应的动作。当某个VIP被攻击时,流量调度系统能够实时获取到某个目标ip的流量数据,并根据目标ip的业务属性及被攻击的流量大小,执行不同的防护动作:
• 执行清洗:当被攻击IP地址的当前流量处于清洗阈值和黑洞阈值之间时,对目标IP执行清洗动作;
• 执行黑洞:当被攻击IP地址的当前流量超出黑洞水位时,对目标IP执行黑洞操作;
• 流量调度:因为执行黑洞时,被攻击的ip地址马上就访问不通了,如果有一些重要业务在上面运行,会对业务访问产生影响。因此可能会在执行黑洞之前,做一些其余的操作,例如先停止对该VIP地址的DNS解析,或者不执行黑洞,而是通过撤消路由,来执行某个网段的迁移,将被攻击网段调度到出口容量更大的其它机房进行处理。
• 外部联动:上述清洗、黑洞、流量调度能力,均是我们自身提供的防护能力。但是有些情况下,出于建设成本考虑,或者攻击流量实在超出我们的处理范围,这时就需要能够通过外部的一些手段来对攻击流量实施压制,主要是借用运营商的能力来实施。目前可用的手段包括:电信云堤的近源清洗、云堤黑洞、联通近源清洗、沃盾黑洞、联通BGP FlowSpec调用等手段。
通过上述手段,基本能够处理针对业务的大流量DDoS攻击。当然,除了对单个VIP的流量情况进行监控之外,还需要考虑对机房的整体水位进行监控。当机房出口流量由于DDoS攻击突增,导致水位出现异常时,为了保障机房的稳定性,流量调度系统可能会对机房中,TOP攻击流量IP地址或者网段执行上述的防护动作。
从职责来看,流量调度系统执行决策,承担了最为关键的职责。不管是流量采集系统,还是流量清洗系统,或者是外部的云堤、沃盾能力,都提供了攻击发现,攻击压制的手段,最终决定如何进行处置的,还需要由调度中心来统一调度。
流量清洗系统
流量清洗系统的的功能,主要是对恶意DDoS攻击流量实施清洗。流量清洗系统,需要实现三大功能点,下面分别予以介绍:
• 流量牵引
• 流量清洗
• 流量回注
流量牵引
从图一中的防护架构可以看到,清洗系统一般为旁路部署方式。旁路部署模式下,正常业务流量是不经过清洗系统的,只有当某个ip地址被攻击时,通过修改路由的方式,将被攻击的流量牵引到清洗集群进行攻击流量过滤。
修改路由的方式大致分两种:可以使用静态路由或者动态路由的方式。因为静态路由比较简单,适用于小型规模的企业网络当中,在被攻击时,将被攻击ip的下一跳路由地址修改为清洗集群的IP地址即可实现。而在更多的场景当中,是需要使用动态路由的,通过OSPF、BGP、IS-IS等动态路由协议,向网络中发布32位明细路由,使得被攻击IP地址的流量牵引到清洗集群。
流量清洗
解决了牵引的问题,那下一步就需要对攻击流量实施清洗。目前DDoS防护主流解决的攻击问题是大流量攻击和CC攻击。因为CC攻击往往流量比较小,很难超过调度系统设定的清洗阈值,在很多情况下,流量检测系统甚至发现不了CC攻击,因此CC攻击往往是通过后端服务器或者代理服务器实施防护。大流量攻击中,目前遇到比较多的是SYN Flood攻击和反射型攻击。针对DDoS攻击的防护思路,会在另外一篇文章中进行介绍。
流量回注
经过前面介绍的流量牵引技术,能够把流量成功牵引到清洗集群;而通过集群的流量清洗算法,攻击流量已经被清洗干净;因此,后面要做的事情就是把干净的流量回送到网络中去。因为在做流量牵引时,已经对路由器发布了被攻击VIP的32位明细路由,因此不能直接通过在清洗集群回指路由的方式,将干净流量回注到网络当中去,这样做会导致路由环路的出现。
目前主流的回注手段,有跨接回注、隧道回注、VRF回注等手段。跨接回注是指将回注流量送往下游网络,如下图所示,清洗集群将流量清洗完成之后,送到下游交接机,而下游交换机中保存的被攻击VIP的路由,是指向图中的内网的,这样就避免了将干净流量再次送回清洗中心而产生环路,目前电信云堤的近源清洗,就是采用此种回注思路。
隧道回注是另外一种将干净流量送回下游网络的手段。如下图所示,清洗集群和SW建立隧道,将去往被攻击IP的流量封装在内层,然后再在隧道外层,将目标IP地址设置为SW的IP,通过网卡把包送出去。因为目标IP地址是SW,清洗集群可以根据路由表,把数据包发送给路由器,而路由器也会顺利地将隧道报文发送给SW。数据包到达SW之后,SW解开隧道包,取出内层干净流量,直接通过路由,将流量回送给下游服务器。
还有一种回注方式是在对端路由器创建VRF,将清洗路由和回注路由隔离开,通过不同的路由平台,将路由区分开。清洗设备上配置路由,将干净流量回送到对端路由器即可。
经过上面描述的过程,即实现了将攻击流量牵引至清洗集群中实施清洗,再将干净流量送回服务器的整个流程。
DDoS防护的未来
因为DDoS防护是旁路部署架构,因此没办法做到对攻击的实时清洗,只能做到分钟级或者秒级响应。因此努力的一个方向,是如何缩短从攻击开始,到攻击流量进防护这段时间的延迟;同时,随着IPv6网络的全面部署实施,地址的数量和范围,与IPv4时代不在一个数量级,如何针对每一个IPv6目标地址进行快速攻击发现,也是一项非常大的挑战;第三点,攻击检测的面可以更广,从单纯的流量阈值来检测发现攻击,可以深入到流量成分的分析,比如SYN包占比、HTTP QPS占比等,也可以是触发攻击的条件。
新兴技术层出不穷,日新月异,物联网、5G网络建设发展迅速。个人判断,在往后的一段时间内,DDoS攻击还将是经久不衰,粗暴有效的威胁手段,并且新的攻击方式也会出现。对包括DDoS在内的网络攻击有效防护,为业务保驾护航,是我们安全人员义不容辞的责任。