本文主要介绍火山引擎 Web 应用防火墙的全局规则匹配优先级机制,通过基础原理、示例说明和最佳实践的内容,帮助你深入理解 WAF 工作原理,掌握规则配置方法,提升安全防护效果。当你需要配置多种可能冲突的防护规则,或在排查特定请求被意外拦截/放行的原因时,理解规则的匹配优先级至关重要。
WAF 采用多层优先级防护体系,通过预定义的规则匹配顺序,对 HTTP 请求进行逐层检测和处理。
火山引擎 WAF 将防护策略分为以下几类,每类策略的配置复杂程度和对性能的影响存在差别:
策略类型 | 主要功能 | 配置复杂度 | 性能影响 |
|---|---|---|---|
访问控制 | IP 白名单/黑名单管理 | 简单 | 低 |
地理位置访问控制 | 分地域管理访问源 | 简单 | 低 |
漏洞防护 | Web 漏洞检测与防护 | 中等 | 中等 |
API 防护 | API 接口安全管控 | 简单 | 中等 |
Bot 管理 | 自动化工具识别与防护 | 复杂 | 高 |
CC 防护 | 频率限制与 7 层 DDoS 防护 | 中等 | 中等 |
敏感信息泄漏 | 响应内容过滤 | 中等 | 低 |
网页防篡改 | 页面缓存保护 | 简单 | 低 |
符号说明:✅ 表示支持配置该类型的匹配条件,- 表示不支持。
一级策略 | 二级规则 | 防护域名 | 访问路径 | 高级条件 | 频次阈值 |
|---|---|---|---|---|---|
访问控制 | 白名单 | ✅ | ✅ | ✅ | |
访问控制 | 黑名单 | ✅ | ✅ | ✅ | |
地理位置访问控制 | ✅ | ||||
自定义拦截响应 | ✅ | ✅ | ✅ | ||
CC 防护 | 自定义 | ✅ | ✅ | ✅ | ✅ |
漏洞防护 | 托管漏洞防护规则 | ✅ | |||
漏洞防护 | 请求加白 | ✅ | ✅ | ||
漏洞防护 | 字段加白 | ✅ | |||
漏洞防护 | 目录遍历 | ✅ | ✅ | ||
漏洞防护 | 高频扫描 | ✅ | ✅ | ||
API 防护 | 默认路由(未登记 API 执行动作) | ✅ | |||
API 防护 | 手动添加 | ✅ | ✅ | ||
API 防护 | 自动发现 | ✅ | |||
Bot 管理 | Bot 自定义分类 | ✅ | ✅ | ||
Bot 管理 | Bot 托管分类 | ✅ | |||
Bot 管理 | Bot 频率限制 | ✅ | ✅ | ✅ | ✅ |
Bot 管理 | Bot 统计防护 | ✅ | ✅ | ✅ | ✅ |
Bot 管理 | Bot 动态令牌 | ✅ | ✅ | ||
Bot 管理 | 行为地图 | ✅ | |||
防敏感信息泄漏 | ✅ | ✅ | ✅ | ||
网页防篡改 | ✅ | ✅ |
按序依次执行对应规则的匹配,若命中且执行动作为终止类,则终止检查,按设定动作处置对应请求。
说明
以下策略不检测请求内容,因此暂不参与优先级排序:
优先级 | 一级策略 | 二级规则 |
|---|---|---|
1 | 访问控制 | 允许访问名单 |
2 | 访问控制 | 禁止访问名单 |
3 | CC 防护 | 自定义规则 |
4 | CC 防护 | 智能防护(仅BP) |
5 | 地理位置访问控制 | |
6 | Bot 管理 | 自定义分类 |
7 | Bot 管理 | 托管分类 |
8 | Bot 管理 | 频率限制 |
9 | Bot 管理 | 统计防护 |
10 | Bot 管理 | 行为地图 |
11 | Bot 管理 | 动态令牌 |
12 | API 防护 | 未登记 API 执行动作 |
13 | API 防护 | 手动添加 |
14 | API 防护 | 自动发现 |
15 | 漏洞防护 | 请求加白 |
16 | 漏洞防护 | 字段加白 |
17 | 漏洞防护 | 漏洞托管规则 |
18 | 漏洞防护 | 高频扫描 |
19 | 漏洞防护 | 目录遍历 |
下文以某条同时满足多个防护规则的请求为例,为您详细介绍对应的规则匹配逻辑和顺序。
假设在 WAF 控制台配置了如下防护规则:
优先级 | 规则类型 | 规则内容 | 执行动作 |
|---|---|---|---|
1 | 访问控制-允许访问名单 |
| 放行 |
2 | 访问控制-禁止访问名单 |
| 观察 |
16 | 漏洞防护-字段加白 |
| 加白字段跳过漏洞检查 |
17 | 漏洞防护-托管防护规则 |
| 拦截 |
为了全面演示 WAF 规则匹配优先级机制,我们构造一个包含多种攻击特征的真实 HTTP 请求:
POST /api/user/login HTTP/1.1 Host: example.com X-Forwarded-For: 185.220.1.1 X-Real-IP: 185.220.1.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Content-Type: application/x-www-form-urlencoded Content-Length: 59 Cookie: sessionid=abc123 Referer: http://malicious-scanner.com/scan Connection: keep-alive username=admin' OR '1'='1'--&password=123456&remember=true
攻击类型 | 具体特征 | 位置 | 对应检测规则 |
|---|---|---|---|
恶意 IP |
| X-Real-IP | 访问控制-禁止访问名单 |
可疑来源 |
| Referer | 漏洞防护-字段加白 |
SQL 注入 |
| POST Body | 漏洞防护-漏洞托管 |
当此恶意请求到达 WAF 时,按照优先级顺序执行以下检测:
顺序 | 规则 | 检测内容 | 规则配置 | 匹配结果 | 下一步 |
|---|---|---|---|---|---|
1 | 允许访问名单 | 请求源 185.220.1.1 是否在允许访问名单中 | 192.168.1.100 | 不匹配 | 继续检测 |
2 | 禁止访问名单 | 请求源 185.220.1.1 是否在禁止访问名单中 | 185.220.1.1 | 匹配 | 执行动作非终止类(观察),继续检测 |
3 | 漏洞防护字段加白规则 | 请求 Header 中的 referer 字段 | 将请求 Header 中的 referer 字段加白 | 匹配 | Referer 字段内容豁免,继续检测 |
4 | 漏洞防护托管规则 | 请求内容是否存在漏洞攻击风险 | 开启漏洞防护托管规则并设置防护等级为正常 | 匹配( | 执行动作为终止类(拦截),停止后续检查 |
以下是一些在 WAF 规则配置和故障排查方面的实践建议,帮助您有效利用 WAF 规则匹配优先级机制,提升防护效果和系统性能。
配置思路 | 典型场景 | 注意事项 |
|---|---|---|
信任优先 | 内网IP、监控接口、特殊字段 | 避免误拦截关键业务 |
访问控制 | API 管控、恶意 IP 拦截 | 平衡安全性和可用性 |
行为检测 | 扫描防护、频率限制 | 设置合理阈值和时间窗口 |
智能防护 | Bot 检测、行为分析 | 关注误报率和用户体验 |
内容检测 | 漏洞防护、信息泄露 | 定期更新规则库 |
WAF 性能优化是确保业务可用性的关键,以下是具体的优化策略:
当 WAF 出现异常拦截或放行时,可参考以下流程图进行故障排查:
问题类型 | 症状描述 | 可能原因 | 解决方案 |
|---|---|---|---|
误拦截 | 正常请求被拦截 | 规则过于严格、IP误判 | 添加白名单、调整规则参数 |
漏检 | 攻击请求未被拦截 | 规则覆盖不全、优先级问题 | 完善规则库、调整优先级 |
业务连续性问题 | 响应延迟增加 | 规则过多、匹配复杂 | 优化规则、启用短路机制 |