解决方法
以下 AWS WAF 功能有助于防止暴力登录攻击:
- 基于速率的规则
- CAPTCHA 拼图
- AWS WAF 欺诈控制账户盗用防护 (ATP) 托管规则组
- Security Automations for AWS WAF
基于速率的规则
要在请求速率高于预期时阻止请求,请创建基于速率的规则语句。要为基于速率的规则设定阈值,请启用 AWS WAF 日志记录。然后,根据您的日志记录目标,使用 Amazon Athena 或 Amazon CloudWatch Log Insights 来分析日志。
您还可以创建特定于 URI 路径的基于速率的规则语句,例如 /login。暴力攻击通常以登录页面为目标,以获取对账户凭证的访问权限。网站上的不同页面可能会收到不同的请求速率。例如,与登录页面相比,主页获得流量的速率可能更高。
设定阈值后,使用以下范围缩小语句来创建特定于登录页面的基于速率的规则语句:
- 对于 Inspect Request(检查请求),选择 URI path(URI 路径)。
- 对于 Match type(匹配类型),选择 Starts with string(以字符串开头)。
- 对于 String to match(要匹配的字符串),选择 /login。
CAPTCHA 拼图
CAPTCHA 拼图有助于防止以下攻击:
- 来自机器人的暴力攻击
- 凭证填充
- Web 抓取
- 向服务器发送垃圾邮件请求
当您创建包含 CAPTCHA 操作的规则时,用户必须完成 CAPTCHA 操作才能登录。
要在登录页面上设置 CAPTCHA,请使用以下规则配置:
- 对于 Inspect(检查),选择 URI path(URI 路径)。
- 对于 Match Type(匹配类型),选择 Starts with string(以字符串开头)。
- 对于 String to match(要匹配的字符串),选择 /login。
- 对于 Action(操作),选择 CAPTCHA(验证码)。
- 对于 Immunity time(免疫时间),选择 Time in seconds(以秒为单位的时间)。
**注意:**为了帮助防止来自人类的暴力攻击,请设置较短的免疫时间。
有关详细信息,请参阅使用 CAPTCHA 和 Challenge(质询)操作的最佳实践。
ATP 托管规则组
要检查试图盗用您账户的恶意请求,请使用 ATP 托管规则组。例如,暴力登录攻击会通过反复试验来猜测凭证,以获取对您账户未经授权的访问权限。
ATP 托管规则组包含预定义的规则,这些规则提供对意外请求和登录尝试的可见性和控制。
要检查请求,请使用 ATP 托管规则组中的以下规则子集:
- **VolumetricIpHigh:**单个 IP 地址发送的大量请求。
- **AttributePasswordTraversal:**使用密码遍历的尝试。
- **AttributeLongSession:**使用长时间会话的尝试。
- **AttributeUsernameTraversal:**使用用户名遍历的尝试。
- **VolumetricSession:**单个会话发送的大量请求。
- **MissingCredential:**缺少的凭证。
有关详细信息,请参阅账户盗用防护规则列表。
Security Automations for AWS WAF
要使用 AWS CloudFormation 模板部署包含一组规则的 Web 访问控制列表 (Web ACL),请运行 Security Automations for AWS WAF。
当未经授权的用户试图猜测正确的凭证时,该用户会收到错误响应,例如 401 Unauthorized。扫描程序和探测器规则会阻止来自持续接收特定响应代码的 IP 地址的请求。当您启用此规则时,Security Automations for AWS WAF 会部署一个 AWS Lambda 或 Amazon Athena 查询,用于检查日志中的 HTTP 响应代码。为请求可以接收相同错误代码的次数以及规则对超过阈值的请求的阻止时间设置阈值。
相关信息
在 AWS WAF 中使用基于速率的规则语句