《安全攻防技能》-防火墙

来源极客时间《安全攻防技能30讲》
以下是自己总结笔记,仅用于学习思考!

一、WAF的工作模式

WAF 的本质是“专注于 Web 安全的防火墙”,Web 安全关注于应用层的HTTP 请求。因此,WAF 的分析和策略都工作于应用层。

工作模式分别是:透明代理、反向代理和插件模式。

1、透明模式

透明代理和大部分防火墙的工作模式相同:在客户端和服务端通信不需要作出任何改变的情况下,对 HTTP 流量进行请求和转发。在这个过程中,为了解密 HTTPS 流量,WAF 必须和服务端同步 HTTPS 对称**。

《安全攻防技能》-防火墙
透明代理本身不是一个 Web 服务,所以它无法修改或者响应 HTTP 的请求,只能够控制请求的通过或者拒绝。正因为如此,它也无法实现 Web 服务所提供的认证、内容过滤等功能。

2、反向代理

反向代理要求客户端将请求的目标地址指向 WAF,而不是服务端。
《安全攻防技能》-防火墙
因为反向代理 WAF 本质上是一个 Web 服务,所以 HTTPS 证书可以直接部署在 WAF上。WAF 在对 HTTPS 流量解密之后,就可以在内网中用 HTTP 的形式,向服务端发起代理请求了。

优点:功能丰富(前台认证、对服务器隔离更彻底)

缺点:开销大,宕机就难搞了。

3、插件模式

将WAF 植入到服务端的逻辑中呢?我们最常使用的一种技术就是AOP(面向切面编程)技术。在 AOP 技术中,WAF可以作为一个切片植入到服务端的逻辑中。

《安全攻防技能》-防火墙
WAF 和服务端一块工作在服务器上,会消耗服务器额外的资源,对 Web 服务本身的性能产生影响。

总结:
《安全攻防技能》-防火墙

二、WAF功能

1、HTTP解析能力

在 HTTP 中,通用的内容包括:请求的 URL 以及其中的参数、HTTP 头部信息、POST 的 body 内容等。

HTTP 中的内容可能经过了 UrlEncode 等编码方式的处理,因此,WAF 需要具备解码能力,避免攻击的特征通过编码来进行绕过。

想要看到 HTTPS 中的加密内容,WAF 必须能够解密 HTTPS 请求。

2、Web防护

在HTTP解析能力基础下,WAF 就可以对请求内容进行分析,为Web 服务提供安全保护了。

三种主要的分析能力:
签名匹配:和杀毒软件中病毒库的概念类似,WAF 也可以维护一个攻击样本库。样本库中存有已知攻击请求的散列签名,只要 HTTP 请求内容的散列签名在这个样本库,就说明 HTTP 请求中携带了攻击内容。

正则匹配:签名匹配需要请求完全一致才能够检测出来,而正则匹配只需要部分特征就以检测。WAF 可以通过抽象一些攻击特征的正则表达式,对 HTTP 请求进行检测。比如,如果请求的某个参数中出现了单引号,那么很有可能就是黑客发起的 SQL 注入攻击。

行为分析:除了针对单次请求的分析之外,WAF 还可以针对连续的访问请求特征进行提取和分析。为什么要这么做呢?这是因为,很多时候,我们无法准确判断单次请求是不是攻击请求,但是如果疑似的攻击请求频繁出现,我们就基本能够确定了。也就是说,一个用户不会频繁地访问同一个页面,而黑客需要对一个漏洞点发起多次尝试,才能够实现攻击的效果。

识别检测到就进行拦截了。

3、审计告警

WAF 还有另外一个重要的功能,就是为 Web 服务提供安全相关的审计和告警功能。

4、数据保护和虚拟补丁

反向代理或者插件模式的 WAF,还能够对 HTTP 请求中的数据进行一定的处理,提供额外的数据保护功能。

在介绍插件漏洞的时候,我们提到了防火墙可以提供虚拟补丁的功能,来临时对插件漏洞进行修复。比如:在经典的 Structs 2 漏洞中,黑客是通过 Structs 2 中包含的漏洞接口发起攻击的。所以,
WAF 只需要将这些包含漏洞的接口进行封禁,或者对请求内容中的 Structs 2 攻击特征(特定接口的异常序列化数据)进行分析拦截,就能够临时避免 Structs 2 受到已公开的漏洞攻击。之后,我们只需要对 Structs 2 进行升级再打上补丁,这样就可以下线虚拟补丁了。

三、总结

《安全攻防技能》-防火墙