En

腾讯安全零距离之大眼——大型网络流量分析系统

作者:BigHy公布时间:2013-12-06阅读次数:65159评论:5

分享

引言



     对于服务海量用户的互联网公司的安全从业者而言,能够打造出一套安全稳定、高质量并且体验优秀的安全服务系统,保护亿万互联网用户的利益不受侵害,是每个互联网安全从业人员的梦想。然而,罗马不是一天建成的,且不说攻防对抗的艰辛,单是在系统建设的道路上,必然会遇到很多问题,走过很多弯路,若是能够把多年摸索的经验和业界分享,必然也是十分快乐的。


     大眼系统是腾讯安全平台部2008年自主研发的DDoS攻击发现系统,在业界各方专家的指导帮助下,已经稳定为亿万互联网用户稳定服务多年。系统每秒处理流量过百G,并且能够通过多层次负载分担线性扩容至T级分析处理。


     本文由腾讯宙斯盾各位同学集体完成,旨在通过介绍大眼系统来分享大型网络流量分析系统设计、建设、运营中的思路和经验。然而,限于笔者的视野和水平,文中所讲述的技术可能存在局限,也可能没有完全解释清楚,甚至存在谬误,真诚欢迎业界大牛给出意见、建议、批评、斧正。

(一)架构篇

    
     其实大容量的流量分析系统在互联网界和安全界并不少见,业界很多厂商提供了高效优秀的流量分析产品,同时也提供了成熟稳定的解决方案。众所周知的“棱镜”计划,更是大型分布式流量分析的巅峰之作,十分令人仰望。

     然而对于互联网公司而言,由于业务的种类不同,在安全领域面临的威胁自然也会不同,流量分析的需求也会完全不同。本文介绍的大眼系统就是在迫切的DDoS攻击发现需求下诞生的,而在大眼的后续版本中,也承担了入侵发现和漏洞发现等艰巨任务。

     另一方面,由于互联网公司的成本敏感性,大规模部署带来的巨大成本压力使得应用业界优秀产品变得十分困难。通过廉价、通用的资源(如互联网公司中唾手可得的服务器、交换机)作为硬件承载流量分析业务就变成大眼系统的另外一个需求,以期获得令人满意的可扩展性,可维护性和低廉的实施成本。



图1大眼系统部署架构

       与所有流量分析系统一样,大眼系统可以分为三个主要部分:流量复制系统、负载分担系统和流量分析单元。

A.            流量复制系统:将需要分析的网络流量复制出来供分析系统分析。

B.             负载分担系统:通过负载分担系统将流量分发至各个流量分析单元进行分析。

C.             流量分析单元:对流量特征进行统计,并按照流量分析算法执行计算。

     在大眼系统中,流量的复制、分发和分析都通过X86服务器和交换机实现,在实现平滑扩展的同时,大大的降低了成本,下面就从流量复制和负载分担两个方面分别介绍大眼系统所采用的关键技术。


1
流量复制


     将流量分析系统串行部署至大规模网络中是不明智的,串行系统单是处理网络中各种各样的突发流量和降低处理延迟方面就已经捉襟见肘了,更别说服务海量用户无法容忍的单点故障风险。因此采用流量复制的方式将流量从网络中复制下来进行分析是十分便捷有效的方法。

流量复制常见的方法有如下几种:

(1)    交换机镜像

     交换机镜像是成本低廉操作简单的方法。交换镜像也普遍应用于网络排障,简单流量分析与监控。但是交换机镜像受到交换机可镜像端口数和CPU性能的限制,大量实施会对网络整体性能产生影响。通过交换机镜像在网络中进行流量复制理论可行但实施条件苛刻。

(2)    分光器

     分光器是广泛使用的流量复制手段,分光器的基本原理是通过精密的光纤生产工艺从物理层面将一束光分成两束,从而达到流量复制的目的。美国的网络流量监控计划之所以起名“棱镜”可能也是使用了大量分光器的缘故。



图2 分光器物理连接


     分光器的厂商和种类很多,比较常用的是盒式分光器和机架式分光器,盒式分光器成本低廉部署简便,但是当存在大量链路需要分光扩展时,盒式分光器现场施工难度就会急剧增加,这时就需要使用机架式分光器了。下图所示是一个一分二的盒式分光器(图片来自网络)。



图3 一分二盒式分光器(图片来自网络)

       在大眼项目中也普遍的使用了分光器用作流量复制,分光器低廉的价格和稳定的特性解决了大眼项目中众多链路的流量复制问题。

分光器的使用要点如下:

A.     分光器的分光比:分光器的分光比是分光器的重要参数,在实际应用中应该非常明确分光器的分光比和分光器每个发光端所占的比例,否则会由于光衰减问题导致链路质量下降而影响网络可靠性。

B.      分光器的光功率衰减:分光器的光功率衰减是不可以回避的问题。一般来讲,由于分光器带来的光功率衰减在3个db左右,在分光施工之前需要详细评估光衰增加带来的风险。如何调整光衰减和光功率已经超出了本文的范畴,在这里就不多赘述了。

C.      有源?无源?:一般来讲,在条件许可的情况下,尽量使用无源的分光器。

(3)    流量复制设备

     分光器成本低廉,并且特性稳定,是大型网络中流量复制的首选方案。但是也有其局限性,比如当光衰过大时无法使用。另外,如果网络中存在一定的电口链路,也是无法使用分光器进行流量复制的。这个时候就需要用上专用的流量复制设备。这类的设备和厂商也比较多,但是由于在大眼项目中没有使用,同时笔者也没有进行过测试,这里只是提及,无法给出具体评测。


2
负载分担

      
     无论单个BOX的能力多强,都无法完全承担大型网络上百G的流量分析业务。所以,一个健壮、可靠同时能够线性扩展同时低成本的负载分担架构就成为大型网络流量分析系统中最为重要的一环。大眼系统中使用了一种由交换机实现的负载均衡架构,满足大型流量分析中服务器集群对负载均衡的要求。

A.           保证同一个流(FLOW)的数据包发送到同一个端口,发送给同一个服务器处理。

B.           除了MAC地址之外,负载分担系统不修改数据包的任何内容,并且能够通过配置保留数据包的

其他头部信息(如IP-IP,GRE等)。

C.           具有良好的扩展性,能够平行扩展增强系统分析能力。



图4 二层负载分担架构

整个架构分为两层:

(1)    L0:流量接入:

     每条链路分光后接入交换机对应接口,但是为了在冲突域内控制流量泛洪范围,需要根据实际情况将分光接口放入不同的vlan中。Vlan中的接口个数没有硬性要求,通常将来自同一个运营商的链路放到同一个vlan中。

(2)    L1:流量转发:流量转发层面的要点如下:

A.     连接服务器的物理端口需要被添加至聚合口中,同时将聚合口的负载分担方式配置成需要的负载分担方式(交换机通常支持的负载分担方式有: 源、目的IP地址,源、目的IP地址加源、目的端口,源目的MAC等)。为了达到属于同一个流的数据包负载分到到同一个服务器进行处理的目的,这里推荐使用源、目的IP地址的负载分担方式。

B.      聚合口中的物理端口数目取决于交换机对聚合口的支持,但是通常来讲为了达到良好的负载分担效果,宜使用4的倍数。

C.      为了使数据包能够按照指定的方向进行转发,需要将分光后收到的数据包的MAC地址作为静态MAC配置在连接服务器的聚合口上。这样,将该目的MAC地址强行加入到交换机的二层转发表中。

D.     数据包依照二层转发表将数据包分发至聚合口进行转发。

E.      聚合口依照自身负载分担策略进行负载分担。

  

图5 数据包转发流程

3 扩展


     当网络规模非常大时,需要进行流量分析的链路也非常多。这时就需要对架构进行平行扩展,扩展到能够使用足够多的服务器进行流量分析。


     如果需要两个串行的分析流程,也可以扩展成为两层架构,在前端实现DDoS检测,后端实现应用层漏洞发现。

 

 



图6 架构扩展


     平行扩展十分简便,只需要在前端平行扩展出多个vlan, 在每个vlan中使用上节介绍的方法进行流量分发。垂直方向的扩展略显复杂,基本原理与平行扩展相同。同时,为了顺利实现应用层流重组,需要DDoS集群在流量转发时转发到同一个后端服务器。这个需求的实现也十分简单,事先规划好每个应用层服务器的MAC地址,并将数据包的目的MAC 设置成为需要发送到的服务器的MAC 地址即可。

 

4 局限


正如同世界上没有完美无缺的事物一样,这种架构在如下方面存在局限:

A.     二层转发依赖

     无论是前端转发还是后端转发,交换机进行流量分发的依据都是数据包的MAC地址。然而,在一个VLAN内,如果数据包的MAC地址在交换机的二层转发表内不存在,交换机将会依照泛洪机制将流量转播至这个VLAN内的每一个接口。这就要求在交换机上面需要配置好每一个可能出现的MAC地址,在大型网络中,这大大的增加了管理和维护的难度。

B.      端口密度

     垂直扩展后,需要使用大量的交换机端口进行互联和流量分发。当端口密度受限时,架构的实施就会变得十分困难。


未完待续,下期流量分析软件架构更加精彩)


评论留言

提交评论 您输入的漏洞名称有误,请重新输入