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

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

转发的 IP 地址

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

使用 IP 地址的规则语句

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

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

  • 地理匹配-使用 IP 地址确定原产国,并将其与国家/地区列表进行匹配。

  • 基于速率-按 IP 地址聚合请求,以确保没有任何单独的 IP 地址以太高的速率发送请求。

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

中使用的 IP 地址Amazon WAF自动程序控制

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

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

在使用转发的 IP 地址之前,请注意以下常规警告:

  • 一路上,代理可以修改头文件,代理可能会以不同的方式处理头文件。

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

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

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

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

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

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

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

  • 对于地理匹配和基于速率的规则,Amazon WAF使用标题中的第一个地址。例如,如果一个标题包含 “10.1.1.1、127.0.0.0、10.10”,则Amazon WAF使用 “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标头包含一个 IP,其原产国为US

{ "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标头。规则计数仅请求匹配嵌套的地理匹配语句。嵌套的地理匹配语句还使用X-Forwarded-For标头来确定 IP 地址是否表示US. 如果这样做,或者如果标题存在但格式不正确,则 geo match 语句返回匹配项。

{ "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" } } } }