安全产品的核心逻辑-WAF
概述
在《软件定义安全》中介绍了所有的安全产品本质上就是对安全业务的软件开发。本文介绍WAF的核心内容和核心逻辑。
一、WAF的作用
Web应用防护墙(Web Application Firewall,简称WAF)是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品,主要用于防御针对网络应用层的攻击,像SQL注入、跨站脚本攻击、参数篡改、应用平台漏洞攻击、拒绝服务攻击等。
1.1 为什么要上WAF
WAF是专门为保护基于Web应用程序而设计的,传统的防火墙,是基于互联网地址和端口号来监控和阻止数据包。一个标准的端口号对应一种网络应用程序类型。传统防火墙无法应对应用层的攻击进行有效抵抗。虽然IPS可以做到部分应用层的防护,但由于IPS是全流量全协议的,所以从能力上看很难把每种协议都防护的很好,从性能上看添加过多的防护策略会导致性能跟不上,所以出现了Web应用防火墙系统,只防护Web协议。
1.2 WAF的部署模式
WAF要想达到防护效果必须要串接到网络中,串接到网络中主要有透明代理串接模式和反向代理模式,这两种在实际环境中用的都挺多的。当然如果只做检测不做阻断也可以用旁路模式。

透明代理模式

反向代理模式
二、WAF的技术
WAF主要是由流量采集和攻击分析引擎两部分组成,流量采集部分比较通用,采集这个和IPS等是通用的可以参考《安全产品的核心逻辑-IPSIDS》。很多的WAF的设计开发是在代理服务器上修改的,比如nginx,haproxy等。
2.1 攻击分析
攻击分析主要是根据采集到的Web协议,分析http/https的报文中有没有攻击行为。这个和IPS的分析逻辑也有些类似,主要是正则表达式、关键字匹配、上下文分析等。开源的有两种规则可以参考借鉴,ModSecurity规则和Naxsi规则。
2.2 ModSecurity规则
ModSecurity是一个开源的跨平台Web应用程序防火墙(WAF)引擎,用于Apache,IIS和Nginx,由Trustwave的SpiderLabs开发。作为WAF产品,ModSecurity专门关注HTTP流量,当发出HTTP请求时,ModSecurity检查请求的所有部分,如果请求是恶意的,它会被阻止和记录。
2.2.1 ModSecurity的规则
基本格式:SecRule VARIABLES OPERATOR ACTIONS
SecRule:ModSecurity主要的指令,用于创建安全规则,固定单词。
VARIABLES:代表HTTP包中的标识项,规定了安全规则针对的对象。常见的变量包括:ARGS(所有请求参数)、FILES(所有文件名称)等。
OPERATOR:代表操作符,一般用来定义安全规则的匹配条件。常见的操作符包括:@rx(正则表达式、@streq(字符串相同)、@ipmatch(IP相等)等。
ACTIONS:代表响应动作,一般用来定义数据包被规则命中后的响应动作。常见的动作包括:deny(数据包被拒绝)、pass(允许数据包通过)、everity(定义事件严重程度)等。详见:https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-(v2.x)
2.2.2 ModeSecurity规则例解
规则1:防XSS攻击
以下规则用于通过检查请求参数和标头中的
