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

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

レートベースのルールは、各発生元 IP アドレスからのリクエストのレートを追跡し、レートが制限を超えると、IP に対するルールアクションをトリガーします。制限は、5 分間あたりのリクエスト数として設定します。このタイプのルールを使用すると、過剰なリクエストを送信している IP アドレスからのリクエストを一時的にブロックできます。デフォルトでは、AWS WAF はウェブリクエストの発信元からの IP アドレスに基づいてリクエストを集約しますが、代わりに、X-Forwarded-For などの HTTP ヘッダーからの IP アドレスを使用するようにルールを設定できます。

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

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

レート制限によって現在ブロックされている IP アドレスのリストを取得できます。詳細については、「レートベースのルールごとにブロックされている IP アドレスの一覧表示」を参照してください。

次の注意事項は、AWS WAF レートベースのルールに適用されます。

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

  • AWS WAF は最大 10,000 個の IP アドレスをブロックできます。10,000 を超える IP アドレスが同時に高レートのリクエストを送信する場合、AWS WAF はそれらのリクエストのうち、10,000 件のみをブロックします。

AWS WAF で追跡およびカウントするリクエストの範囲を絞り込むことができます。これを行うには、レートベースのステートメント内に別のスコープダウンステートメントをネストします。その後、AWS WAF は、スコープダウンステートメントに一致するリクエストのみをカウントします。スコープダウンステートメントの詳細については、「スコープダウンステートメント」を参照してください。

例えば、最近確認された米国の攻撃者からのリクエストに基づいて、次のスコープダウンステートメントを使用してレートベースのルールを作成できます。

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

    • 発生元が米国であるリクエストを指定する Geo 一致ステートメント。

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

また、レート制限を 1,000 に設定するとします。IP アドレスごとに、AWS WAF は両方の条件を満たすリクエストをカウントします。両方の条件を満たさないリクエストはカウントされません。IP アドレスのカウントが 5 分間で 1,000 リクエストを超えると、その IP アドレスに対するルールのアクションがトリガーされます。

別の例として、ウェブサイトのログインページへのリクエストを制限するとします。これには、次のネストされた文字列一致ステートメントを使用してレートベースのルールを作成します。

  • [Inspect] (検査) [Request component] (コンポーネントをリクエスト) は URI path です。

  • [Match type] (一致タイプ) は Starts with string です。

  • [String to match] (照合する文字列) は login です。

このレートベースのルールをウェブ ACL に追加することで、残りのサイトに影響を与えることなく、ログインページへのリクエストを制限することができます。

ネスト不可 - このステートメントタイプを他のステートメント内にネストすることはできません。このタイプは、ウェブ 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