AWS WAF
本文缩写(英文全称与中文含义)
| 缩写 | 英文全称/名称 | 中文含义 |
|---|---|---|
| ACFP | Account Creation Fraud Prevention | AWS WAF 账号创建欺诈防护 |
| ALB | Application Load Balancer | 应用负载均衡器 |
| API | Application Programming Interface | 应用程序编程接口 |
| ARN | Amazon Resource Name | AWS 资源名称,用于唯一标识资源 |
| ASN | Autonomous System Number | 自治系统编号 |
| ATP | Account Takeover Prevention | AWS WAF 账号接管防护 |
| AWS | Amazon Web Services | 亚马逊云服务 |
| CAPTCHA | Completely Automated Public Turing test to tell Computers and Humans Apart | 区分人与机器的自动化验证 |
| CIDR | Classless Inter-Domain Routing | 无类别域间路由,用于表示网段 |
| DDoS | Distributed Denial of Service | 分布式拒绝服务攻击 |
| EC2 | Elastic Compute Cloud | AWS 云服务器服务 |
| HTTP | Hypertext Transfer Protocol | 超文本传输协议 |
| HTTPS | Hypertext Transfer Protocol Secure | 使用 TLS 加密的 HTTP |
| IP | Internet Protocol | 网际协议;IP 地址是网络寻址标识 |
| JSON | JavaScript Object Notation | 一种结构化数据格式 |
| KB | Kilobyte | 十进制千字节,1 KB = 1000 字节;某些旧工具用法不同 |
| NACL | Network Access Control List | 网络访问控制列表 |
| NLB | Network Load Balancer | 网络负载均衡器 |
| OAC | Origin Access Control | CloudFront 源站访问控制 |
| OU | Organizational Unit | 组织单元 |
| PHP | PHP: Hypertext Preprocessor | PHP 编程语言 |
| QPS | Queries Per Second | 每秒查询数 |
| REST | Representational State Transfer | 表述性状态转移,一种接口架构风格 |
| S3 | Simple Storage Service | AWS 对象存储服务 |
| SDK | Software Development Kit | 软件开发工具包 |
| SQL | Structured Query Language | 结构化查询语言 |
| URI | Uniform Resource Identifier | 统一资源标识符 |
| URL | Uniform Resource Locator | 统一资源定位符,通常指访问地址 |
| VPN | Virtual Private Network | 虚拟专用网络 |
| WAF | Web Application Firewall | Web 应用防火墙 |
| WCU | Write Capacity Unit | DynamoDB 写入容量单位 |
| XSS | Cross-Site Scripting | 跨站脚本攻击 |
1. 定位#
AWS WAF 是 HTTP/HTTPS 应用层防火墙:根据请求内容、来源、频率及托管威胁规则执行 Allow、Block、Count、CAPTCHA 或 Challenge。不能代替身份认证、业务授权或应用漏洞修复。
| 服务 | 主要职责 |
|---|---|
| WAF | SQL 注入、XSS、恶意请求、Bot、应用层流量滥用 |
| Shield | DDoS 防护;Advanced 增加资源保护、事件支持等能力 |
| Security Group / NACL | 网络地址、协议、端口边界 |
| Firewall Manager | 跨账号统一下发 WAF、Shield 等安全策略 |
Hands-on:部署、验证、调优与清理,附可下载的 CloudFormation 模板。
2. 资源与 Scope#
使用 WAFv2 API。控制台中的 protection pack 对应 API 的 WebACL。
| 入口 | Scope / 管理位置 | 关联方式 |
|---|---|---|
| CloudFront | CLOUDFRONT,us-east-1 |
在 distribution 配置中设置 WebACL ARN |
| ALB | REGIONAL,与 ALB 同 Region |
WebACL association |
| API Gateway REST API | REGIONAL,与 API 同 Region |
关联 stage;不要套用到 HTTP API / WebSocket API |
| AppSync GraphQL、Cognito user pool、App Runner、Verified Access、Bedrock AgentCore Gateway | 按服务与 Region 支持情况使用区域 WebACL | 对应资源关联 |
| Amplify | Global / CloudFront 管理位置 | 按 Amplify 集成流程关联 |
一个资源最多关联一个 WebACL;一个 WebACL 可关联多个兼容资源。CloudFront WebACL 不能同时关联 ALB。不能直接关联 EC2、NLB、S3 bucket 或 Lambda function。支持资源与限制
3. 规则模型#
请求 -> 按 Priority 从小到大检查规则
-> 遇到终止动作结束检查
-> 没有终止动作时采用 WebACL DefaultAction| 概念 | 用法 |
|---|---|
| WebACL | 关联入口,定义默认动作、规则顺序和可观测性 |
| Rule group | 复用自定义规则,或引用 AWS / Marketplace 托管组 |
| IP set | 维护 IPv4 / IPv6 CIDR 集合;两种地址分别建集合 |
| Regex pattern set | 复用路径、参数等正则模式 |
| Labels | 前序规则标记请求,后序规则匹配标签实现细分处理 |
| WCU | 规则计算容量;不同检查和转换消耗不同,不是请求 QPS 配额 |
| Scope-down | 缩小托管组或限速规则的适用请求范围 |
| Action | 行为 |
|---|---|
| Allow | 终止检查并放行;前置大范围 Allow 会绕过后续防护 |
| Block | 终止检查;默认 403,可自定义状态、响应头和响应体 |
| Count | 记录命中后继续检查,用于观察与调优 |
| CAPTCHA / Challenge | 无有效 token 时验证或阻断;有效 token 时继续后续检查 |
规则组 OverrideAction: Count 只把组返回的动作改为 Count,组内原本的终止行为仍可能限制后续规则观测。需要逐条观察时使用 RuleActionOverrides 将指定组内规则改为 Count。动作与覆盖
4. 功能与使用场景#
| 功能 | 常见用法 | 关键配置 |
|---|---|---|
| 字符串 / 正则 | 限制路径、方法、Header、User-Agent | 检查字段、匹配位置、大小写及 URL decode 等转换 |
| SQLi / XSS | 拦截查询参数或正文中的攻击特征 | 检查范围、SQLi 灵敏度、误报例外 |
| JSON body | 只检查指定 JSON 字段 | JSON pointer、解析失败回退、超长处理 |
| Size constraint | 限制请求组件长度 | 比较运算、阈值、上传接口例外 |
| IP / Geo / ASN | 来源允许/拒绝、地域策略、网络来源限制 | 可信客户端 IP、IPv6、代理和共享出口影响 |
| AND / OR / NOT | 组合路径、方法和来源条件 | 不能任意嵌套所有 statement 类型 |
| Rate-based | 登录、搜索、昂贵接口防滥用 | 窗口、聚合 key、阈值、scope-down |
| JA3 / JA4、Header order | 辅助识别客户端特征 | 检查入口支持情况,不作为用户身份凭证 |
| Labels | 托管检测后按业务路径选择 Block / Challenge | 标签生成规则必须排在标签匹配规则前 |
| 自定义请求/响应 | 放行时附加检查标记、阻断时返回 JSON / 429 | 不在响应中暴露规则细节 |
| CAPTCHA / Challenge / SDK | 浏览器、人机识别、token 管理 | token domain、免验证时长、前端集成和跨域行为 |
限速支持 IP、转发 IP、自定义 key 或对 scope-down 内请求做整体聚合。窗口可选 60、120、300、600 秒;它是近似速率控制,不是精确计费配额。修改规则可能重置计数,多个 WebACL 的计数不共享。Rate-based rules
不要盲信客户端提交的 X-Forwarded-For。只有可信代理能控制该字段且源站不能被绕过时,才按链路语义选择 FIRST/LAST/ANY 或转发 IP 配置;不同 statement 支持的配置不同。
5. 托管规则怎么选#
| 规则组 / 类别 | 适用场景 |
|---|---|
AWSManagedRulesCommonRuleSet |
通用 Web 防护基线 |
AWSManagedRulesKnownBadInputsRuleSet |
已知恶意输入 |
AWSManagedRulesAmazonIpReputationList |
AWS 威胁情报识别的来源 |
AWSManagedRulesAnonymousIpList |
匿名代理、VPN 等来源策略;评估合法用户影响 |
| SQLi、Linux、Unix、Windows、PHP、WordPress | 按技术栈添加,不全部无差别启用 |
| Bot Control:Common / Targeted | Bot 分类、抓取与自动化滥用;Targeted 增加更深入检测 |
| ATP | 登录保护、凭据填充与账户接管检测 |
| ACFP | 注册流程中的欺诈账户创建检测 |
AWSManagedRulesAntiDDoSRuleSet |
应用层 DDoS 检测与缓解,配置 Block / Challenge 灵敏度 |
| Marketplace | 第三方规则;核对订阅费用、适用业务与更新方式 |
托管规则功能和集成要求以 AWS Managed Rules 列表 为准。ATP/ACFP 需要正确映射登录/注册路径和字段;响应检查等能力存在入口限制,不能假定所有资源支持相同功能。
新规则先 Count,观察完整业务周期,再逐条启用默认动作。支持版本管理的规则组应记录版本、订阅更新通知、在到期前测试升级;不是所有组都支持固定版本。
6. 检查边界与误报#
- ALB / AppSync 的 body 检查上限为前 8 KB;CloudFront 等部分入口默认 16 KB,可配置更大上限,最高 64 KB。增加范围可能增加费用。
- 明确
OversizeHandling:CONTINUE检查可见部分,MATCH视为匹配,NO_MATCH视为不匹配。视为匹配后的动作由规则决定。 - WAF 放行时,源站仍可能收到完整正文;“已检查”不代表检查了整个上传文件。
- 大文件、富文本、合法 SQL 示例、Webhook 和移动端应有独立测试集;例外限制到规则、路径、方法和必要字段。
- WAF 不负责解析压缩包、文件杀毒或对象存储内容扫描,也不能解决业务越权。
7. 日志、告警与运维#
| 能力 | 用法 |
|---|---|
| CloudWatch metrics | AllowedRequests、BlockedRequests、CountedRequests、CAPTCHA/Challenge 指标与业务错误率联合观察 |
| Sampled requests | 快速定位命中;不是完整审计日志,可选择关闭 |
| 完整日志 | CloudWatch Logs、S3、Data Firehose;名称使用规定的 aws-waf-logs- 前缀 |
| Logging filter | 按动作或标签保留/丢弃日志,控制成本 |
| RedactedFields / Data protection | 减少凭据与个人信息暴露;分别核对日志、采样和其他数据出口 |
| CloudTrail | 追踪规则、关联和日志配置变更 |
| Firewall Manager | 按 OU、账号、标签下发基线,检查漏关联和策略漂移 |
日志字段脱敏不自动覆盖 sampled requests。示例关闭请求采样并遮蔽 Authorization、Cookie;生产还要审查 URI、查询参数等敏感字段。WAF logging
8. 架构与成本#
推荐入口:Client -> CloudFront + WAF -> ALB -> ECS/EKS。限制源站直接访问,避免攻击者绕过 CloudFront:按架构使用 CloudFront 来源限制、受控 origin header、私有源站等机制;S3 使用私有 bucket 与 OAC。
WAF 常规费用包含 WebACL、规则和请求;额外 WCU、扩大正文检查、Bot/Fraud/Anti-DDoS、CAPTCHA/Challenge、Marketplace 及日志可能增加费用。Count 仍会检查和计费。WAF 价格
多 Region 分别部署区域规则、日志、关联和告警。WAF 规则不会因为数据库切到灾备区而自动同步,见 企业灾备流程。