WAF成本优化

AWS WAF 成本

AWS WAF 定价 包括以下几个定价组件:

  • Web ACL 数量和规则总数(按小时计费)
  • 通过 AWS WAF 检查的百万次请求数
  • 合作伙伴管理的规则(Marketplace 规则)各有自己的定价
  • 智能威胁缓解(CAPTCHA、机器人控制等)

以下是一些可以遵循的初步指南,以开始优化我们的 WebACL 成本:

  1. 使用无额外成本的规则(地理封锁、速率限制、IP 列表、IP 声誉)阻止大量流量。
  2. 对于付费规则(特别是Bot control)使用Scope of inspection,以限制需要检查的流量。
  3. 以这样的方式排列我们的 web ACL 规则,使得大量(可能产生成本影响)的流量先命中无额外成本的规则,然后再命中有成本的规则。

使用检查范围(Scope of inspection)

我们的Bot control托管规则组本身就是一个重要的成本节省因素,因为它确保没有机器人流量进入我们的应用程序,从而避免处理不需要的工作负载。但是,我们的应用程序并非所有部分都与机器人相关,因此没有必要对所有请求进行Bot control流量检查。

在我们的示例中,我们希望将image/css/video/js排除在机器人控制检查之外。通过单击 web ACL 规则选项卡中的框并单击编辑来编辑AWS-AWSManagedRulesBotControlRuleSet托管规则。

image-20240623221430378

单击Only inspect requests that match a scope-down statement

image-20240623221840416

对于If a request,选择AND语句, 添加两个规则如下:

image-20240623221724397

单击Save。从现在开始,对 .jpg 或 .png 文件的请求将不会被Bot control检查,我们也不会为此产生任何成本。

web ACL 的规则顺序

充分利用基于 IP 的防御措施应该是我们 web ACL 中的首要规则。确保 IP 声誉和匿名 IP 规则位于列表的顶部。

规则排序范围限定是优化 AWS WAF 成本的有效方法。对于我们担心 L7 DDoS 攻击的应用程序,将 AWS WAF 与 AWS Shield Advanced 结合使用更为合适。

在付费规则之前使用高级基于速率的规则

使用聚合键的基于速率的规则 允许我们将请求的不同元素组合成一个单一的键,服务将使用它进行速率限制。这就开启了将多个请求头和标签组合成单一规则的可能性。

我们可以使用组合标准来阻止违反预期流量规则的请求,例如traffic source、缺少特定的cookie或头部,以及其他评估标准如标签。这将导致更多的流量在到达诸如Bot Control等付费规则之前被阻止和缓解。

```javascript
fields @timestamp, httpRequest.uri, action
| parse @message '{"name":"User-Agent","value":"*"}' as userAgent
| filter userAgent like "curl"
| sort @timestamp desc
| limit 10
| filter action = "BLOCK"
---

完成!这个规则将有助于阻止一些HTTP库流量,而不会产生Bot Control的成本。