AWS WAF
保护应用免受 SQL 注入和跨站脚本等 Web 攻击的托管 Web 应用防火墙
概述
AWS WAF 是一项托管 Web 应用防火墙服务,保护 Web 应用免受 SQL 注入、跨站脚本(XSS)、HTTP Flood 等常见攻击。部署在 CloudFront、ALB、API Gateway 或 AppSync 前端,检查每个 HTTP/HTTPS 请求并根据规则允许、阻止或计数。支持 AWS 托管规则、合作伙伴规则和自定义规则的多层防御。
托管规则与自定义规则的多层防御
AWS 托管规则组(Managed Rule Groups)提供开箱即用的防护:Core Rule Set 覆盖 OWASP Top 10 常见漏洞、SQL Database 规则组防御 SQL 注入、Known Bad Inputs 规则组阻止已知恶意载荷。AWS Marketplace 上的合作伙伴规则组(F5、Fortinet 等)提供更专业的防护。自定义规则允许基于 IP 地址、地理位置、请求头、URI 路径、查询字符串、请求体等条件编写精确的匹配逻辑。规则优先级决定评估顺序,第一个匹配的规则决定请求的处理方式。Web ACL 的容量单位(WCU)限制为 5,000,复杂规则消耗更多 WCU。
Bot Control 与速率限制规则
Bot Control 托管规则组识别和管理机器人流量。Common 级别区分已验证的机器人(搜索引擎爬虫)和未验证的机器人;Targeted 级别使用机器学习检测高级机器人(凭证填充、库存抢购)。速率限制规则(Rate-based Rule)在指定时间窗口内(5 分钟)统计来自同一 IP 的请求数,超过阈值时自动阻止。可按 IP、IP+URI、IP+Header 等维度聚合计数。典型应用:登录页面限制每 IP 每 5 分钟 100 次请求防止暴力破解;API 端点限制每 IP 每 5 分钟 1000 次请求防止滥用。CAPTCHA 和 Challenge 操作可在阻止前要求用户证明是人类。
Count 模式的分阶段导入与日志分析
新规则上线的最佳实践是先设为 Count 模式(计数但不阻止),观察一段时间确认不会误拦合法流量后再切换为 Block。WAF 日志(发送到 S3、CloudWatch Logs 或 Kinesis Data Firehose)记录每个请求的匹配规则、操作和请求详情。通过 Athena 查询 S3 中的日志可分析攻击模式和误报情况。CloudWatch 指标提供实时的请求计数、阻止计数和规则匹配统计。Firewall Manager 在 Organizations 级别统一管理多账户的 WAF 策略,确保所有账户应用一致的安全基线。费用按 Web ACL 数(每个每月 5 美元)、规则数(每个每月 1 美元)和请求数(每百万次 0.60 美元)计费。