转发的 IP 地址 - Amazon WAFAmazon Firewall Manager、和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

转发的 IP 地址

本节适用于使用 Web 请求的 IP 地址的规则语句。默认情况下, Amazon WAF 使用来自 Web 请求来源的 IP 地址。但是,如果 Web 请求通过一个或多个代理或负载均衡器,则 Web 请求源将包含最后一个代理的地址,而不是客户端的源地址。在这种情况下,原始客户端地址通常在另一个 HTTP 标头中转发。此标头通常是 X-Forwarded-For (XFF),但也可以是其他标头。

使用 IP 地址的规则语句

使用 IP 地址的规则语句如下:

  • IP 集匹配 – 检查 IP 地址是否与 IP 集中定义的地址相匹配。

  • 地理匹配 – 使用 IP 地址确定来源国和地区,并将来源国与国家列表进行匹配。

  • 基于速率的规则语句 – 可以按其 IP 地址聚合请求,以确保没有单个 IP 地址以过高速率发送请求。您可以单独使用 IP 地址聚合,也可以与其他聚合键结合使用。

您可以指示使用来自X-Forwarded-For标头或 Amazon WAF 其他 HTTP 标头的转发 IP 地址来处理这些规则语句中的任何一个,而不是使用 Web 请求的来源。有关如何提供规范的详细信息,请参阅各个规则语句类型的指南。

注意

如果您指定的标头不存在于请求中,则 Amazon WAF 根本不会将该规则应用于 Web 请求。

回退行为

使用转发的 IP 地址时,如果请求的指定位置没有有效的 IP 地址,则需要指明 Amazon WAF 要分配给 Web 请求的匹配状态:

  • MATCH-将 Web 请求视为与规则语句相匹配。 Amazon WAF 将规则操作应用于请求。

  • 不匹配 – 将 Web 请求视为与规则语句不匹配。

Amazon WAF 机器人控制中使用的 IP 地址

Bot Control 托管规则组使用来自 Amazon WAF的 IP 地址验证机器人。如果您使用机器人控制功能,并且已经验证了通过代理或负载均衡器进行路由的机器人,则需要使用自定义规则明确允许它们。例如,您可以配置自定义 IP 集匹配规则,该规则使用转发 IP 地址来检测和允许已验证机器人。您可以使用该规则通过多种方式自定义机器人管理。有关信息以及示例,请参阅 Amazon WAF 机器人控制

使用转发 IP 地址的一般注意事项

在使用转发 IP 地址之前,请注意以下一般注意事项:

  • 在此过程中,代理可以修改标头,并代理可能会以不同的方式处理标头。

  • 攻击者可能会更改标头的内容以试图绕过 Amazon WAF 检查。

  • 标头内的 IP 地址可能格式错误或无效。

  • 请求中可能根本不存在您指定的标头。

使用转发的 IP 地址的注意事项 Amazon WAF

以下列表描述了在中使用转发的 IP 地址的要求和注意事项: Amazon WAF

  • 对于任何一条规则,您可以为转发 IP 地址指定一个标头。标头规范不区分大小写。

  • 对于基于速率的规则语句,任何嵌套的范围界定语句都不会继承转发的 IP 配置。为每条使用转发 IP 地址的语句指定配置。

  • 对于地理匹配和基于费率的规则, Amazon WAF 使用标题中的第一个地址。例如,如果标题包含 us 10.1.1.1, 127.0.0.0, 10.10.10.10 Amazon WAF es 10.1.1.1

  • 对于 IP 集匹配,您可以指明是与标头中的第一个地址、最后一个地址还是任何地址进行匹配。如果指定,则 Amazon WAF 检查标头中的所有地址是否匹配,最多 10 个地址。如果标头包含的地址超过 10 个,则 Amazon WAF 检查最后 10 个地址。

  • 包含多个地址的标头必须在地址之间使用逗号分隔符。如果请求使用逗号以外的分隔符,则 Amazon WAF 会认为标头中的 IP 地址格式不正确。

  • 如果标头内的 IP 地址格式错误或无效,则 Amazon WAF 根据您在转发的 IP 配置中指定的回退行为,将 Web 请求指定为与规则匹配或不匹配。

  • 如果您指定的标头不存在于请求中,则 Amazon WAF 根本不会将该规则应用于请求。这意味着这 Amazon WAF 不应用规则操作,也不应用回退行为。

  • 使用转发 IP 标头作为 IP 地址的规则语句不会使用 Web 请求来源报告的 IP 地址。

使用转发的 IP 地址的最佳实践 Amazon WAF

使用转发 IP 地址时,请使用以下最佳实践:

  • 在启用转发 IP 配置之前,请仔细考虑请求标头的所有可能状态。您可能需要使用多个规则来获得您想要的行为。

  • 要检查多个转发 IP 标头或检查 Web 请求来源和转发 IP 标头,请对每个 IP 地址源使用一条规则。

  • 要阻止标头无效的 Web 请求,请将规则操作设置为阻止,并将转发 IP 配置的回退行为设置为匹配。

转发 IP 地址的 JSON 示例

只有当 X-Forwarded-For 标头包含来源国为 US 的 IP 时,以下地理匹配语句才会匹配:

{ "Name": "XFFTestGeo", "Priority": 0, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "XFFTestGeo" }, "Statement": { "GeoMatchStatement": { "CountryCodes": [ "US" ], "ForwardedIPConfig": { "HeaderName": "x-forwarded-for", "FallbackBehavior": "MATCH" } } } }

以下基于速率的规则根据 X-Forwarded-For 标头中的第一个 IP 来聚合请求。该规则仅计算与嵌套地理匹配语句匹配的请求,并且仅阻止与地理匹配语句匹配的请求。嵌套的地理匹配语句还使用 X-Forwarded-For 标头来确定 IP 地址是否表示 US 来源国。如果是,或者标头存在但格式不正确,则地理匹配语句将返回匹配项。

{ "Name": "XFFTestRateGeo", "Priority": 0, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "XFFTestRateGeo" }, "Statement": { "RateBasedStatement": { "Limit": "100", "AggregateKeyType": "FORWARDED_IP", "ScopeDownStatement": { "GeoMatchStatement": { "CountryCodes": [ "US" ], "ForwardedIPConfig": { "HeaderName": "x-forwarded-for", "FallbackBehavior": "MATCH" } } }, "ForwardedIPConfig": { "HeaderName": "x-forwarded-for", "FallbackBehavior": "MATCH" } } } }