应用防火墙(Web Application Firewall, WAF)是Web应用防护系统,也称“网站应用级入侵防御系统”。通过针对基于HTTP/HTTPS协议的流量建立检测或拦截规则,实现安全防护的目的。
WAF架构根据部署方式的不同,通常分为cname部署、module部署、网络层部署。也有部分公司根据自身需要实施混合部署与运营的架构,这通常需要一定的架构设计和开发能力,包括业务方的配合。国外几款商业产品的WAF支持导入证书的方式来解决HTTPS环境的安全防护,通常国内各甲方安全团队自研WAF产品基本不支持HTTPS。
1、cname部署
只需将域名Cname方式解析指向WAF产品分配的cname别名就完成了部署。对于用户来说,整个WAF的防护和运营几乎是透明的。
cname方式最大的优势就是部署方便快速,且理论上还有加速网站性能还和阻断DDoS攻击等效果,实现了安全防护和性能优化双重目标。但其缺陷也是非常明显的,HTTPS流量是无法防护的,因为中间代理无法解析请求内容,进而无法对其攻击负载做检测与防护。
2、module部署
module部署的WAF典型产品是开源软件ModSecurity。最初ModSecurity是基于Apache httpd上的module开发出来的,针对HTTP/HTTPS协议攻击做检测和防护的开源产品。现在已经衍生出IIS版和Nginx版。
这种部署方式相比cname方式麻烦得多,需在webserver部署\编译时支持modules,编译完ModSecurity模块之后,修改webserver配置文件生效。它通常默认就已经有大量的安全策略规则,但如果全启用,一方面性能消耗很大,另一方面也未必适用于自身环境安全问题。所以后续还要对规则进行优化精简和按需增加,对运营人员的要求相对较高。
基于业务环境webserver功能的不同,还出现了一些非典型不知名的简易WAF类产品,这些相对小众,也可能是企业安全团队自身开发和运营的。例如基于Nginx的LUA脚本开发的WAF,基于IIS筛选器开发的WAF。理论上成熟的webserver均有module等二次开发接口,均可以按需开发建设相应WAF类功能产品。
Module WAF在应对HTTPS类业务时非常适用,缺点是产品开发与运营成本非常高。部署过程需要业务中断且运营人员工作量较大,需逐台Server部署,对于规则的运营也需要投入大量人力。所以适合有一定开发和运营能力,且业务规模较小的公司。
3、网络层部署
此类WAF产品是最易部署的方式,它可部署在机房或某被防护的网络入口位置。这不同于其他几类,它的部署和运营可以算是真正的透明。不需要对业务有太多侵入与变更,特别适合互联网公司变更多、架构复杂的环境。
它的缺点明显,对于HTTPS协议无能为力。优势也明显,无侵入性,易部署。不影响业务性能,可旁路接入,通过RESET包阻断HTTP会话。
4、混合型WAF架构
为满足业务的多样性架构的灵活性,很多大型互联网公司还建立了混合型的WAF集群。可以通过前述几类WAF的组合,实现相互补防覆盖不到的地方,真正实现无死角防守。