Skip to content

AWS WAF - Runbook 与参考

English · GitHub source 事实核对时间(对照 AWS 官方文档):2026-08-19

概述

AWS WAF 是 Web 应用防火墙,监控发往受保护资源的 HTTP(S) 请求,并根据规则(IP、查询字符串、请求头、请求体)控制访问。命中时返回内容、HTTP 403 或自定义响应。

可保护的资源

  • CloudFront 分发
  • API Gateway REST API
  • Application Load Balancer
  • AWS AppSync GraphQL API
  • Amazon Cognito 用户池
  • AWS App Runner、AWS Amplify、AWS Verified Access

核心概念

  • Web ACL:与受保护资源关联的规则容器。
  • 规则与规则组:单个匹配语句或可复用组;AWS 托管规则组覆盖常见威胁。
  • 基于速率的规则:在时间窗口内限制某个 IP 的请求数;适合 DDoS/爬虫防护。
  • 动作:allow、block、count 或自定义响应;先 count 测试再阻断。
  • 标签与日志:给匹配请求打标签,日志发送到 S3、CloudWatch Logs 或 Kinesis Data Firehose。

常用操作(AWS CLI)

# 创建 Web ACL(默认动作文件)
aws wafv2 create-web-acl --name my-acl --scope REGIONAL \
  --default-action file://default-action.json \
  --visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=my-acl

# 关联资源(ALB/API Gateway)
aws wafv2 associate-web-acl --web-acl-arn <acl-arn> --resource-arn <resource-arn>

# 更新规则
aws wafv2 update-web-acl --name my-acl --scope REGIONAL --id <acl-id> \
  --default-action file://default-action.json \
  --rules file://rules.json \
  --visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=my-acl

# 查看
aws wafv2 list-web-acls --scope REGIONAL
aws wafv2 get-web-acl --name my-acl --scope REGIONAL --id <acl-id>

# 开启日志
aws wafv2 put-logging-configuration --logging-configuration file://logging.json

最佳实践

  • AWS 托管规则组开始,再加业务自定义规则。
  • 基于速率的规则防 DDoS/爬虫。
  • count 模式测试,看日志确认后再改 block。
  • 标签和日志定位命中规则。
  • 作用域要正确:CloudFront 用 CLOUDFRONT,ALB/API Gateway 用 REGIONAL
  • 用 CloudWatch 监控 WAF 指标,对拦截请求激增告警。

故障排查

症状 检查与处理
正常流量被拦 从日志确认命中规则;先用 count 模式;调整 IP set 或规则范围。
意外 403 检查 Web ACL 关联、规则动作、托管规则组行为。
日志不出现 核对日志配置和目标权限。
性能影响 控制规则数量,用高效匹配语句。
速率规则误伤 调高速率阈值或使用 scope-down 语句。

配额

规则、规则组、Web ACL 有每账户和作用域配额。以 Service Quotas 控制台为准。

官方参考