如何使用 AWS WAF 限制到 ALB 的直接流量,并仅允许通过 CloudFront 的流量?

上次更新日期:2022 年 7 月 20 日

我想使用 AWS WAF 限制用户直接访问应用程序负载均衡器(ALB),并仅允许通过 Amazon CloudFront 进行访问。如何使用 AWS WAF 做到这一点?

解决方法

要使用 AWS WAF 限制流向 ALB 的直接流量,并仅允许通过 CloudFront 的流量,请执行以下操作:

  1. 将 CloudFront 配置为在 CloudFront 发送给 ALB 的请求中添加带有密钥值的自定义 HTTP 标头。
  2. 在与 ALB 关联的 AWS WAF Web ACL 中创建规则,以阻止不包含自定义 HTTP 标头密钥值的请求。

将 CloudFront 配置为在 CloudFront 发送给 ALB 的请求中添加带有密钥值的自定义 HTTP 标头

  1. 打开 Amazon CloudFront 控制台。
  2. 在导航窗格中,选择 Distributions(分配)。
  3. 选择分配给您的 ID。
  4. 选择 Origins(来源)。
  5. 选择您的 ALB 来源,然后选择 Edit(编辑)。
    注意:如果您没有 ALB 来源,请参阅创建分配更新分配
  6. 对于 Add custom header(添加自定义标头),添加 Header name(标头名称)和 Value(值)。例如,Header name(标头名称)是“自定义标头”,Value(值)为“随机 12345”。
    重要信息:考虑将 Header name(标头名称)和 Value(值)作为安全凭证,例如用户名和密码。
  7. 选择 Save changes(保存更改)。

在与 ALB 关联的 AWS WAF Web ACL 中创建规则,以阻止不包含自定义 HTTP 标头密钥值的请求。

注意:如果您没有与 ALB 关联的现有 Web ACL,请按照创建 AWS WAF Web ACL 中的步骤进行操作。如果您有与 ALB 关联的现有 Web ACL,则继续创建规则

创建 AWS WAF Web ACL

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于 Region(区域),请选择您的 ALB 所在的 AWS 区域。
  4. 选择 Create web ACL(创建 Web ACL),然后输入 Name(名称)。
  5. 对于 Associated AWS resources(关联的 AWS 资源),关联您的 ALB,然后选择 Next(下一步)。
  6. 对于 Default web ACL action for requests that don't match any rules(不匹配任何规则的请求的默认 Web ACL 操作),请选择 Allow(允许),然后选择 Next(下一步)。
  7. 对于 Request sampling options(请求采样选项),选择 Enable sampled requests(启用采样请求),然后选择 Next(下一步)。
  8. 查看 Web ACL 配置。如果它符合您的规格,请选择 Create web ACL(创建 Web ACL)。

创建规则

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于 Region(区域),请选择您的 ALB 所在的 AWS 区域。
  4. 选择您已将 ALB 关联到的 Web ACL。
  5. 选择 Rules(规则),然后选择 Add Rules(添加规则)、Add my own rules and rule groups(添加我自己的规则和规则组)。
  6. 对于 Name(名称),输入 rule name(规则名称),然后选择 Regular Rule(常规规则)。
  7. 对于 If a request(如果请求),选择 doesn’t match the statement(NOT)(与语句不匹配(NOT))。
  8. Statement 1(语句 1)中:
    对于 Inspect(检查),选择 Single Header(单标头)。
    对于 Header field name(标头字段名称),输入在 CloudFront 中创建的 Header name(标头名称)的名称。例如,“自定义标头”。
    对于 Match type(匹配类型),选择 Exactly matches string(完全匹配字符串)。
    对于 String to match(要匹配的字符串),请输入在 CloudFront 中创建的 Value(值)。例如,“随机 12345”。
    对于 Text transformation(文本转换),选择 None(无)。
  9. 对于 Action(操作),选择 Block(阻止)。
  10. 选择 Save rule(保存规则)。
  11. 对于 Set rule priority(设置规则优先级),如果您有多个规则,将此规则设置为最高优先级。
  12. 选择 Save(保存)。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?