请启用 Javascript 以查看内容

如何在 AWS WAF 中为固定 URI 请求设置例外?

 ·  ☕ 4 分钟  ·  ✍ CNSRE · 👀... 阅读

作者:SRE运维博客
博客地址:https://www.cnsre.cn/
文章地址:https://www.cnsre.cn/posts/240910113525/
相关话题:https://www.cnsre.cn/tags/aws/


如何通过 AWS WAF 自定义规则处理固定 URI 请求例外

当我们在配置 AWS WAF(Web 应用程序防火墙)时,托管规则组能够保护我们的应用程序免受常见的安全威胁,如跨站脚本 (XSS) 和 SQL 注入 (SQLi)。但是,有时我们可能会遇到一些特殊需求,像是在特定的 URI 上允许某些请求通过,而不受这些托管规则的影响。那么,如何为固定 URI 添加请求例外呢?本文将为我们详细介绍如何通过自定义规则来实现这一需求。

什么是 AWS WAF 托管规则组?

AWS WAF 提供了一系列托管规则组,旨在帮助开发者快速应对常见的 Web 应用程序攻击,例如 XSS 和 SQLi。托管规则组的优势在于它们由 AWS 安全团队不断维护和更新,确保规则始终能应对最新的安全威胁。

不过,在某些情况下,默认的托管规则组可能会拦截一些合法请求。比如,当我们有一个上传图片的页面时,XSS 或 SQLi 规则组可能会误判请求内容,导致上传失败。这时,我们就需要为特定的 URI 设置例外。

如何为特定 URI 添加例外?

为特定 URI 添加例外有多种方法,以下是其中的几个常用方式:

1. 使用自定义规则

在托管规则组之前添加自定义规则是最直接的一种方式。我们可以创建一个自定义规则,允许这些特殊的 URI 通过,并将这个自定义规则放在托管规则组的前面。这样,当 WAF 检测到请求匹配自定义规则时,它将跳过后续规则的检查。

但是,这种方式有一个缺点:在匹配到自定义规则后,所有的托管规则都不再对该请求进行检查。这意味着,除了添加例外 URI 的规则外,其他任何与该 URI 相关的安全检查也会被跳过。

2. 使用 Scope-down Statement

另一种更灵活的方法是使用托管规则组中的 Scope-down Statement。这个选项允许我们缩小托管规则组的作用范围,从而仅在请求不匹配某些条件时(如特定 URI)执行规则检查。

操作步骤:

  1. 选择需要修改的托管规则组,例如 AWSManagedRulesCommonRuleSetAWSManagedRulesSQLiRuleSet
  2. 点击编辑规则组,并启用 Scope-down Statement
  3. 设置匹配条件:选择 URI Path,并设置匹配方式,例如完全匹配、部分匹配或正则表达式匹配。
  4. 输入我们希望例外的 URI,例如 /picture/

这样配置后,WAF 将只在请求的 URI 不匹配该字符串时才执行托管规则组的检查,从而为特定的 URI 添加例外。

3. 仅计数规则 (Count Mode)

如果我们希望暂时观察某些规则的效果,而不希望立即拦截请求,可以将某些规则设置为仅计数模式。具体操作是将托管规则组中的相关规则(如 CrossSiteScripting_BODYSQLi_BODY)的动作改为 Count。这样,即使这些规则匹配到了请求,WAF 也只会记录日志而不拦截请求。

之后,我们可以根据日志中的信息创建自定义规则,确保只有特定的 URI 会绕过这些规则,而不影响其他安全检查。

示例操作

为了帮助我们更好地理解,以下是一个使用 Scope-down Statement 来为固定 URI 添加例外的配置示例。

假设我们希望为 /picture/ 路径添加 XSS 和 SQLi 规则的例外,具体步骤如下:

  1. 进入 AWS WAF 控制台,选择我们要修改的托管规则组,例如 AWSManagedRulesCommonRuleSet
  2. 点击编辑该规则组,找到 Scope-down Statement 选项,并启用它。
  3. 选择 URI Path,并设置匹配方式为 Exactly matches string
  4. Search string 中输入 /picture/

配置完成后,我们可以通过以下命令来验证效果:

1
2
3
4
# 测试URI例外
curl -X POST https://test-waf.cnsre.cn/picture/ -F "user='<script><alert>Hello></alert></script>'"
# 测试其他URI被拦截
curl -X POST https://test-waf.cnsre.cn/picture1 -F "user='<script><alert>Hello></alert></script>'"

在这个例子中,WAF 将放行 /picture/ 请求,而对 /picture1 进行拦截。

结论

通过自定义规则和 Scope-down Statement,我们可以为 AWS WAF 托管规则组添加灵活的例外处理,确保关键的业务流程不会受到不必要的影响,同时保持应用程序的安全性。


作者:SRE运维博客
博客地址:https://www.cnsre.cn/
文章地址:https://www.cnsre.cn/posts/240910113525/
相关话题:https://www.cnsre.cn/tags/aws/


您的鼓励是我最大的动力
alipay QR Code
wechat QR Code

Avatar
作者
CNSRE
一位只会重启的运维






目录