転送された IP アドレス - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

転送された IP アドレス

このセクションは、ウェブリクエストの IP アドレスを使用するルールステートメントに適用されます。デフォルトでは、ウェブリクエストオリジンの IP AWS WAF アドレスを使用します。ただし、ウェブリクエストが 1 つ以上のプロキシまたはロードバランサーを通過する場合、ウェブリクエストの発信元には、クライアントの発信アドレスではなく、最後のプロキシのアドレスが含まれます。この場合、通常、発信元のクライアントアドレスは別の HTTP ヘッダーに転送されます。このヘッダーは通常 X-Forwarded-For (XFF) ですが、別のヘッダーにすることもできます。

IP アドレスを使用するルールステートメント

IP アドレスを使用するルールステートメントは次のとおりです。

  • IP セット一致 - IP セットで定義されているアドレスと一致する IP アドレスを検査します。

  • 地理的一致 - IP アドレスを使用して発信元の国と地域を特定し、それを国のリストと照合します。

  • レートベースのルールステートメント - IP アドレスでリクエストを集約して、個々の IP アドレスがリクエストを過度に高いレートで送信しないようにできます。IP アドレスの集約は、単独で使用することも、他の集約キーと組み合わせて使用することもできます。

これらのルールステートメントには、ウェブリクエストのオリジンを使用する代わりに、X-Forwarded-Forヘッダーまたは別の HTTP ヘッダーから転送された IP AWS WAF アドレスを使用するように指示できます。仕様を指定する方法の詳細については、個別のルールステートメントタイプのガイダンスを参照してください。

注記

指定したヘッダーがリクエストに含まれていない場合、 AWS WAF ルールはウェブリクエストにまったく適用されません。

フォールバック動作

転送された IP アドレスを使用するときに、指定された位置に有効な IP AWS WAF アドレスがない場合にウェブリクエストに割り当てるマッチステータスを指定します。

  • 一致-ウェブリクエストをルールステートメントと一致するものとして扱います。 AWS WAF ルールアクションをリクエストに適用します。

  • 一致なし - ウェブリクエストをルールステートメントと一致しないものとして処理します。

AWS WAF ボットコントロールで使用される IP アドレス

Bot Control が管理するルールグループは、からの IP アドレスを使用してボットを検証します。 AWS WAF Bot Control を使用し、プロキシまたはロードバランサーを介してルーティングするボットを検証した場合は、カスタムルールを使用して明示的に許可する必要があります。例えば、転送された IP アドレスを使用して検証済みボットを検出および許可するカスタム IP セット一致ルールを設定できます。ルールを使用して、さまざまな方法でボット管理をカスタマイズできます。説明と例については、「AWS WAF ボットコントロール」を参照してください。

転送された IP アドレスの使用に関する一般的な考慮事項

転送された IP アドレスを使用する前に、次の一般的な注意事項に留意してください。

  • ヘッダーは途中でプロキシによって変更でき、プロキシはヘッダーをさまざまな方法で処理することがあります。

  • 攻撃者は、 AWS WAF 検査をバイパスしようとしてヘッダーの内容を変更する可能性があります。

  • ヘッダー内の IP アドレスは、形式が正しくないか、無効である可能性があります。

  • 指定したヘッダーは、リクエストにまったく存在しない可能性があります。

転送された IP アドレスをと一緒に使用する場合の考慮事項 AWS WAF

次のリストでは、で転送 IP アドレスを使用する際の要件と注意事項について説明します。 AWS WAF

  • 単一のルールでは、転送された IP アドレス用に 1 つのヘッダーを指定できます。ヘッダーの仕様では、大文字と小文字は区別されません。

  • レートベースのルールステートメントでは、ネストされたスコープステートメントは、転送された IP 設定を継承しません。転送された IP アドレスを使用する各ステートメントの設定を指定します。

  • AWS WAF ジオマッチとレートベースのルールでは、ヘッダーの最初のアドレスを使用します。たとえば、ヘッダーに uses が含まれているとします。10.1.1.1, 127.0.0.0, 10.10.10.10 AWS WAF 10.1.1.1

  • IP セットの一致では、ヘッダーの最初のアドレス、最後のアドレス、または任意のアドレスのいずれと照合するかを指定します。いずれかを指定すると、ヘッダー内のすべてのアドレスが一致するか、最大 10 AWS WAF 個のアドレスが検査されます。ヘッダーに 10 個を超えるアドレスが含まれている場合は、最後の 10 AWS WAF 個を検査します。

  • 複数のアドレスを含むヘッダーでは、アドレスの間にカンマ区切り文字を使用する必要があります。リクエストでカンマ以外の区切り文字が使用されている場合、 AWS WAF はヘッダーの IP アドレスの形式が正しくないとみなします。

  • ヘッダー内の IP アドレスが不正な形式であるか、または無効である場合、 AWS WAF は、転送された IP 設定で指定したフォールバック動作に従って、ウェブリクエストをルールに一致するか一致しないかを指定します。

  • 指定したヘッダーがリクエストに含まれていない場合、 AWS WAF ルールはリクエストにまったく適用されません。つまり、 AWS WAF ルールアクションは適用されず、フォールバック動作も適用されません。

  • IP アドレス用に転送された IP ヘッダーを使用するルールステートメントでは、ウェブリクエストの発信元によって報告された IP アドレスは使用されません。

転送 IP アドレスを使用する際のベストプラクティスは次のとおりです。 AWS WAF

転送された IP アドレスを使用する場合は、次のベストプラクティスを使用します。

  • 転送された IP 設定を有効にする前に、リクエストヘッダーの可能な状態をすべて慎重に検討してください。目的の動作を実現するには、複数のルールを使用する必要がある場合があります。

  • 複数の転送された IP ヘッダーを検査したり、ウェブリクエストの発信元と転送された IP ヘッダーを検査したりするには、IP アドレスのソースごとに 1 つのルールを使用します。

  • 無効なヘッダーを持つウェブリクエストをブロックするには、ブロックするようにルールアクションを設定し、転送された IP 設定のフォールバック動作を一致するように設定します。

転送された IP アドレスの JSON の例

次の地理一致ステートメントは、発信元の国が US である IP が X-Forwarded-For ヘッダーに含まれている場合にのみ一致します。

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