レートベースのルールステートメント - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced

レートベースのルールステートメント

レートベースのルールは、各発信元 IP アドレスからのリクエストのレートを追跡し、設定した制限を超過したレートを持つ IP に対してルールアクションをトリガーします。このタイプのルールを使用すると、過剰なリクエストを送信している IP アドレスからのリクエストを一時的にブロックできます。デフォルトでは、このルールはウェブリクエストの発信元の IP アドレスを使用しますが、別の IP アドレスソースを設定できます。

ルールにスコープダウンステートメントを追加して、スコープダウンステートメントに一致するリクエストのみを追跡およびレート制限できます。

IP アドレスに対してルールアクションがトリガーされると、AWS WAF は、これらのリクエストのレートが制限を下回るまで、ルールのスコープダウンステートメントに一致する IP アドレスからのリクエストにアクションを適用します。アクションの変更が有効になるまで、1~2 分かかることがあります。

注記

AWS WAF Bot Control ルールグループのターゲットレベルを使用して、レート制限を設定することもできます。これらの比較については、「レートベースのルールとターゲット Bot Control ルールにおけるレート制限オプション」を参照してください。

設定できる最小レートは 100 です。AWS WAF は 30 秒ごとにリクエストのレートをチェックし、毎回直近 5 分間のリクエストをカウントします。このため、AWS WAF による検出およびブロックの前に、IP アドレスが 30 秒間、高すぎるレートでリクエストを送信する可能性があります。

AWS WAF は、使用するレートベースのルールのインスタンスごとに、ウェブリクエストを個別に追跡および管理します。例えば、2 つのウェブ ACL で同じレートベースのルール設定を指定する場合、2 つのルールステートメントのそれぞれがレートベースのルールの個別のインスタンスを表し、AWS WAF によって独自の追跡と管理がなされます。ルールグループ内でレートベースのルールを定義し、そのルールグループを複数の場所で使用する場合、使用するたびに、AWS WAF によって独自の追跡と管理がなされるレートベースのルールの個別のインスタンスが作成されます。

レートベースの各ルールインスタンスでは、最大 10,000 個の IP アドレスがレート制限されます。ルールインスタンスで 10,000 個を超える IP アドレスがレート制限の対象として識別された場合、送信レートの速い上位 10,000 個のみが制限されます。

レートベースのルールによって現在レート制限されている IP アドレスのリストを取得できます。任意の IP アドレスのレート制限されたリクエストは、レートベースの制限ルールのスコープダウンステートメントと一致するリクエストです。詳細については、レートベースのルールによってレート制限されている IP アドレスの一覧表示を参照してください。

レートベースのルールの範囲の絞り込み

AWS WAF がレートベースのルールで追跡および管理するリクエストの範囲を絞り込むことができます。これを行うには、レートベースのステートメント内にスコープダウンステートメントをネストします。

  • スコープダウンステートメントがネストされていない場合、レートベースのルールはリクエストを IP アドレスごとに集約し、制限を超過した IP アドレスからのすべてのリクエストに対してアクションを実行します。

  • スコープダウンステートメントがネストされている場合、ルールはスコープダウンステートメントに一致するリクエストのみをカウントし、それらを IP アドレスごとに集約します。IP アドレスのリクエスト数が制限を超過した場合、レートベースのルールは、その IP アドレスからのリクエストのうち、スコープダウンステートメントにも一致するリクエストに対してのみアクションを実行します。このルールは、IP アドレスからの他のリクエストに対して検査やアクションを実行することはありません。

スコープダウンステートメントの詳細については、「スコープダウンステートメント」を参照してください。

ネスト不可 - このステートメントタイプを他のステートメント内にネストすることはできません。このタイプは、ウェブ ACL およびルールグループに含めることができます。

(オプション) スコープダウンステートメント – このルールタイプは、オプションのスコープダウンステートメントを使用して、レートベースのステートメントが追跡するリクエストの範囲を絞り込みます。詳細については、「スコープダウンステートメント」を参照してください。

WCU - ネストされたステートメントに 2 つ以上の WCU を使用します。

このステートメントでは、次のオプション設定を使用します。

  • (オプション) 転送された IP 設定 – デフォルトでは、AWS WAF はウェブリクエストの発信元の IP アドレスで集約しますが、代わりに、X-Forwarded-For などの HTTP ヘッダーで転送された IP アドレスを使用するようにルールを設定できます。AWS WAF は、ヘッダーの最初の IP アドレスを使用します。この設定では、指定したヘッダーに不正な形式の IP アドレスを持つウェブリクエストに適用するフォールバック動作も指定します。フォールバック動作は、リクエストの一致結果を、一致または不一致のいずれにするかを設定します。詳細については、「転送された IP アドレス」を参照してください。

このルールステートメントの場所
  • ウェブ ACL のコンソールのルールビルダー[Rule] (ルール) の [Type] (タイプ) で、[Rate-based rule] (レートベースのルール) を選択します。

  • API – 「RateBasedStatement

ウェブサイトのログインページへのリクエスト数を、残りのサイトへのトラフィックに影響を与えることなく制限する必要がある場合は、ログインページへのリクエストに一致するスコープダウンステートメントを含むレートベースのルールを作成します。例えば、スコープダウンステートメントは、URI パスを検査し、/login で始まる文字列に一致する文字列一致ステートメントである可能性があります。

別の例として、最近米国内の攻撃者から送信されている大量のリクエストに対抗するために、次のスコープダウンステートメントを使用してレートベースのルールを作成できます。

  • 次の 2 つ目のレベルのネストされたステートメントを含む AND ルールステートメント。

    • 米国から発信されるリクエストを指定する地理一致ステートメント。

    • User-Agent ヘッダーで文字列 BadBot を検索する文字列一致ステートメント。