网络安全 频道

张海清谈腾讯WAF安全防御

  【IT168 资讯】在互联网应用高速发展的同时,承载Web信息系统的Web服务器也面临着巨大的安全挑战。WAF这一防御系统能够保护Web服务器免受应用级入侵,它弥补了防火墙、IPS这类安全设备对Web应用攻击防护能力不足的问题。在本届白帽子大会上,作为一名在腾讯从事了八年安全防护工作的员工,张海清分享了腾讯的WAF安全防御的措施及方案。

  应对Web安全的措施

  Web安全在应用的周期里面是贯穿于其中的。在开发阶段,为了避免有Web漏洞,需要对开放人员做一些安全培训,和一些日常的安全教育工作。在开发过程中,开发人员需要引用安全的EA还有JS,而且在测试阶段所有的测试都应该吸收接入WAF。上线的时候如果出现严重的事故,应该有一些惩罚措施。

  规则

  腾讯用LUA来检测逻辑和规则,这样做出于以下考虑:一个是考虑性能问题, LUA的性能是最高的,它大概是不到十分之一的样子;另一个是考虑LUA和C的交互是最简单、最方便的。而实现跟C的交互可以用C来实现操作,以解决损耗CPU的问题,而LUA主要用来实现规则。

  任务调度

  腾讯用任务调度系统去协调后端的诸多工作集群。腾讯所采用的是一个开源项目,除了高效、稳定的特性外,还有一些别的特性。比如他可以对任务有优先级,还支持任务的出错,有一些重试和超时的机制。

  爬虫

  腾讯对付爬虫用的开源的Webkit,它实际是一个浏览器。腾讯的开源项目都不会更改代码,或者尽量少更改代码。

  目前业界常见的WAF方案有三个:第一是本机服务器模块模式;第二是采用反向代理的模式,就是搭建一个Nginx的反向代理,在反向代理里嵌入WAF的功能;第三是硬件防护。

  腾讯WAF防御面临的挑战

  腾讯的Web服务器达数万台,流量达3GBps,WebServer有数十种,还会给外部提供一些服务,这些都要求接入WAF之后性能没有受到影响。复杂的网络环境要求腾讯选用恰当的WAF解决方案。腾讯在WebServer里面的硬件端直接加入WAF的检测;服务器Server里面则放入腾讯自主开发的Agent,它只有一个功能就是转发数据;在CDN和业务的Server之间加一个反向代理。

  腾讯WAF架构

  ·Nginx Agent的实现

  用户访问页面时,Agent判定这个行为是恶意还是正常,然后进行反馈。这个行为如果是恶意的话,Agent直接给用户一个恶意码,如果是正常的话就让Server继续往上面走,这个环节是一个在线系统的闭环。WAF系统把所有数据,包括请求数据和检测数据全部转发,这个数据会根据一定的策略把数据分到各个后端的处理系统里面,然后把这些发给大数据分析系统。其实Nginx和apache不太一样,它是以性能著称,包括它的Post的请求也是一步一步来的,它跟WAF的交互也是这样来实现。

  ·Nginx的通信机制

  Nginx实施的是异步机制。腾讯最开始的模式是直接做函数,因为Nginx里面的通信跟别的是合并的,但是这样做是不合理的,所以腾讯后来换成API的方式进行网络通信,这个时候需要Nginx有一个回联函数。考虑到WAF的性能和对抗灵活性,如果用C来实现上传的话,遇到的对抗会非常严重,还得考虑开发测试和上线这些一系列的问题,而用性能高且灵活性强的LUA,能较好地去实现规则。

  ·集群检测

  除了功能性的实现还得考虑负载均衡,比如容灾、雪崩等问题。因为所有的请求都是经过WAF,然后再到具体的处理逻辑,怎么去做相应的防应机制是必须去考虑的。另外还有流量穿透问题,到WAF集群是全面转发,就得考虑CPU的处理能力高低的问题。所以这个方面有很多非功能性的因素影响左右。

  腾讯WAF防护系统

  ·业务Web服务器的配置

  如果要接入服务器,就必须考虑这个机器后端需要哪些WAF集群去对接,这个服务器需要一个系统去进行防御和维护。

  ·规则管理

  首先可能会用一套单独的规则系统,或者是旁路分发,建立自己的规则。另外测试环境和真实环境同样存在,系统修改更新后规则也可以可以很方便地修改更新,后端可以把这些个性规则转到对应的集群里面去,然后实时告诉前端,这个是成功还是失败,然后系统再更新操作。

  ·数据分析

  因为数据量非常大,所以需要有一个系统去查漏补缺。腾讯执行这个任务的系统叫做瀑布流式系统,它支持各种SQL语句,却比SQL语句更强大。数据剥离出来之后,一些非实时的统计数据可能存在“我的存储”里面,对于一些误报,实行更高优先级,就要放到告警的组件里,随时实时发送,对于这些分析结果可以转给其他的Server去处理。

0
相关文章