如何用自定义AWS WAF速率规则实现1分钟超20请求IP封禁10分钟?
AWS WAF 基于ALB的IP限速封禁方案(无需Lambda/API Gateway)
实现步骤
1. 进入目标WEB ACL
登录AWS WAF & Shield控制台,切换到对应区域,找到绑定了ALB的WEB ACL。
2. 创建速率规则
- 点击「Add rules」→「Add my own rules and rule groups」
- 选择Rate-based rule,输入规则名称(如
IP_Rate_Limit_Block) - 在「Rate limit settings」区域:
- 设置「Rate limit」为
20,「Rate limit duration」选择1 minute(对应1分钟内超过20次请求的阈值) - (可选)通过「Scope-down statement」添加限定条件,比如仅统计特定路径、请求方法的请求,留空则统计所有请求
- 设置「Rate limit」为
- 在「Action」区域:
- 选择
Block动作 - 勾选「Block additional requests from the IP address for」,设置时长为
10 minutes(对应封禁10分钟) - (可选)配置自定义响应,比如返回403状态码及自定义提示内容
- 选择
3. 调整规则优先级
确保这条速率规则的优先级高于其他允许类规则,避免被提前放行。
4. 验证配置
保存WEB ACL后,用测试IP发起超过20次请求,确认是否被封禁;等待10分钟后,验证是否自动解除限制。
常见问题说明
- 手动自定义JSON规则易出错,比如速率统计的语法、IP匹配范围设置错误,建议通过控制台可视化配置避免这类问题。
- 统计的源IP为客户端真实IP(前提是ALB已启用X-Forwarded-For),不会误统计ALB自身IP。
- 支持IPv6地址的统计与封禁,只要WEB ACL和ALB已开启IPv6支持。
内容的提问来源于stack exchange,提问作者mihiruk
相关产品推荐
相关产品推荐

