查看原文
其他

宙斯盾系统构建之路—系统介绍


关键词:宙斯盾、DDoS攻击、负载均衡


引言

宙斯盾系统是腾讯安全中心为腾讯业务和腾讯云用户提供的一套集DDoS攻击检测防御于一身的网络层DDoS攻击防御解决方案。经过多年运营,目前该系统平均每年为腾讯用户防御数万次DDoS攻击。

这篇文章将揭开宙斯盾系统的神秘面纱,从宙斯盾系统过构建程中对网络基础架构和流量模型、流量检测、流量清洗回送几个DDoS攻防关键技术的角度介绍宙斯盾的一些思考和实践,给关注构建大流量DDoS攻击防御系统的读者一些参考,共同对抗网络中的滚滚洪流。

最后依然是一句老话,没有最好的方案,只有最适合的方案。限于笔者的视野和水平,文中所讲述的技术可能存在局限,也可能没有完全解释清楚,甚至存在谬误,真诚欢迎业界大牛给出意见、建议、批评、斧正。

宙斯盾系统介绍

宙斯盾系统是腾讯安全中心为腾讯业务和腾讯云用户提供的一套集DDoS攻击检测防御于一身的网络层DDoS攻击防御解决方案。经过多年运营,目前该系统平均每天为腾讯用户防御数万次DDoS攻击。下图为2014年以来宙斯盾DDoS系统为腾讯云用户清洗攻击流量情况。


图1 2014年宙斯盾系统为腾讯云用户清洗流量效果图

对于互联网公司而言,业务自身种类十分丰富,很难用单一的流量模型覆盖。不同业务遭受不同类型的攻击时的反应,现象和容忍程度也完全不同。另一方面,面对海量的用户请求,防御设备自身的性能瓶颈和成本压力也使得长期保护方式难以实施。因此,构建一套能够快速检测攻击发生,并且能够快速进行流量保护和策略下发的系统,自动化进行DDoS攻击防御是十分重要的。

宙斯盾系统主要分为三大组成部分,流量分析系统,流量清洗系统和策略联动系统。其中:

  • 检测系统负责分析流量和产生攻击告警。

  • 流量清洗系统负责丢弃网络中的攻击流量,并将正常用户请求回送至服务器。

  • 策略联动系统负责根据攻击的实际情况被攻击的业务的流量特征制定防御策略。


图2 宙斯盾系统三大组成部分


攻击检测


DDoS攻击检测是DDoS攻击防御的基础,一个优秀的检测系统除了能够产生告警给网络管理员处理之外,还需要能够准确的提供当前攻击的详细信息,比如:攻击的类型、攻击流量大小(或请求数)。如果能够自动提取攻击特征,并且加上被攻击的服务器正常时候的流量参数供防御效果的参考就更好了。业界已有的DDoS攻击流量检测方法主要是通过对网络中的数据类型,如:协议,标志位,应用层特征(GET/POST)进行统计,当统计结果偏离原有模型、阈值时,则认为攻击发生。根据数据来源的不同,攻击检测使用的技术可以分为如下几类:


1) NetFlow


NetFlow最初于1996年由Cisco提出,用于对高速转发的IP数据流(FLow)进行测量和统计,经过多年的技术演进,NetFLow已经被主流网络设备厂商支持,成为网络中对流经网络设备的IP数据流进行测量和观察的主要手段之一。尤其是后来的NetFlowV9,最终被IETF采纳,成为IPFIX标准(RFC3954)。在RFC3954中,详细定义了NetFlow作为流量信息采集协议的数据包格式。


图3NetFlow协议格式(图片来自网络)


值得一提的是,与传统网管协议(如: SNMP)和使用其对网络进行监控和管理的系统(如 Cacti)不同,NetFlow更加注重于呈现网络中每一个会话的信息和状态,而不是网络设备端口上的数据信息。这使得NetFlow技术被广大运营商和骨干网清洗服务提供商采用,成为高速骨干网上面的重要检测手段。

典型的通过NetFlow采集的流记录中通常包含如下信息:源地址|目的地址|源自治域|目的自治域|流入接口号|流出接口号|源端口|目的端口|协议类型|包数量|字节数|流数量。这些信息刻画了网络中的一条会话(FLow)的多个基础属性。通过对网络中到达同一个目的多个流记录进行关联分析,能够达到发现DDoS攻击的目的。

NetFlow网络中的常见数据采集手段,具有通用性好、部署简单等优点。但同时也具备一些局限:

首先,受制于网络设备性能,NetFlow通常采用采样的方式进行数据采集,这使得小流量攻击检测变得十分困难。其次,是否能够有效检测DDoS攻击也取决于NetFlow采集的数据维度。这些局限使得通过NetFlow技术检测DDoS攻击无法在宙斯盾系统中应用。


2) DPI技术

DPI(深度包解析 Deep Packets Inspection)是一类技术的统称,这类技术通过对数据包格式,协议甚至应用层载荷进行解析,来分析流量特征,进而得到结论。已经在流量管理、安全和网络分析等方面获得成功。

相对于NetFLow而言,使用DPI技术处理的不是经过网络设备格式化之后的流量摘要信息,而是原汁原味的网络数据包。这就使得检测系统能够获得流量的第一手信息,完全还原真实攻击流量。对其进行深入的分析,自动化获取攻击行为、特征,同时方便进行攻击取证和手法分析。但是另一方面,由于DPI技术需要检测系统自身对数据包进行解析,这就要求检测系统的开发具备高性能的IO能力,同时具备高度可扩展的架构。有关宙斯盾检测系统的架构介绍,请参考《腾讯安全零距离之大眼——大型网络流量分析系统》。


攻击防御


典型架构

在DDoS攻击防御系统中,防御设备的流量牵引和回送方案是设计中的难点。在业界不同的网络架构下也有不同的解决方案。在典型的IDC架构中,通常采用如下方式进行:


图4 典型IDC架构的攻击流量清洗方式

宙斯盾所采用的DDoS攻击流量清洗过程可以简单的分成6步:

  1. 检测系统通过流量分析检测到攻击发生。

  2. 自动启动保护。

  3. 防御设备通过和核心交换机的BGP 邻居关系,宣告BGP路由,将被攻击的服务器的流量引入防御设备,实现逻辑上的串行。

  4. 攻击流量通过防御设备清洗,防御设备通过特定的防御算法将攻击流量丢弃。

  5. 防御设备将正常流量会送至服务器。

  6. 其他服务器流量正常,未被攻击影响。


架构扩展


在实际的攻防对抗中,需要在清洗中心内部构建大规模的清洗集群,清洗集群的结构取决与网络本身的架构和路由特性。但是一般来说,主要包括两种方式或是两种方式的结合。

1、等价路由

等价路由是网络中一种常见的流量分担方式,具体实现就是对同一个目标子网有多个下一跳地址。这也就意味在攻击发生时,可以通过等价路由将攻击流量同时发送给多台清洗设备进行清洗。


图5 使用等价路由方式进行负载分担

2、链路聚合

链路聚合是一种常见的负载分担方式,在网络中有着十分广泛的应用,具体做法就是将网络设备的多条链路捆绑成为一条。同样可以应用在DDoS防御系统的扩展上面。同时也可以使用等价路由和链路聚合方式结合,或者在中间增加交换机等设备用作端口扩展。

图6 使用链路聚合方式进行负载分担


在业界实际使用的DDoS防御系统中,引流会送的方式可以多种多样,比如基于策略路由或FlowSpec方式,只要能够快速有效的调度流量即可。

而系统运营和自动化下发策略的部分因业务类型和攻击手法不同,不容易总结出普适的做法和套路。在系统构建过程中需要结合业务流量特征不断迭代调整,以适应攻击的变化。

行文仓促,仅仅介绍了宙斯盾在系统建设中所采用的检测防护方案,业界很多也十分具有代表性的方案如MPLS,GRE回送没能介绍,而检测防御的软件架构和设计思路请关注后续文章。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存