AWS WAF Classic の仕組み - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced

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

AWS WAF Classic の仕組み

警告

AWS WAF Classic へのサポートは 2025 年 9 月 30 日に終了します。

注記

これは AWS WAF Classic ドキュメントです。2019 年 11 月より前に AWS WAF でルールやウェブ ACL などの AWS WAF リソースを作成し、それらをまだ最新バージョンに移行していない場合にのみ、このバージョンを使用する必要があります。Web ACL を移行するには、AWS WAF Classic リソースを AWS WAF に移行する を参照してください。

最新バージョンの AWS WAF については、AWS WAF」を参照してください。

AWS WAF Classic を使用して、API Gateway、Amazon CloudFront、または Application Load Balancer がウェブリクエストに応答する方法を制御します。まず、条件、ルール、ウェブアクセスコントロールリスト (ウェブ ACL) を作成します。条件を定義し、ルールに追加したら、ルールをウェブ ACL に結合します。

注記

また、AWS WAF Classic を使用して、Amazon Elastic Container Service (Amazon ECS) コンテナでホストされているアプリケーションを保護することもできます。Amazon ECS は、クラスターで Docker コンテナを簡単に実行、停止、管理できる非常にスケーラブルで高速なコンテナ管理サービスです。このオプションを使用するには、AWS WAF Classic が有効化された Application Load Balancer を使用して、サービス内のタスク間で HTTP/HTTPS (レイヤー 7) トラフィックをルーティングおよび保護するように Amazon ECS を設定します。詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「Service load balancing」(サービスのロードバランシング) のトピックを参照してください。

条件

条件では、ウェブリクエストで AWS WAF Classic が監視する基本的な特徴を定義します。

  • 悪意のある可能性が高いスクリプト。攻撃者は、ウェブアプリケーションの脆弱性を悪用できるスクリプトを埋め込みます。これはクロスサイトスクリプティングと呼ばれます。

  • リクエストの発生元の IP アドレスまたはアドレス範囲。

  • リクエスト送信元の国または地理的場所。

  • クエリ文字列など、リクエストの指定された部分の長さ。

  • 悪意のある可能性が高い SQL コード。攻撃者は、ウェブリクエストに悪意のある SQL コードを埋め込むことで、データベースからデータを抽出しようとします。これは SQL インジェクションと呼ばれます。

  • リクエストに表示される文字列。例えば、User-Agent ヘッダーに表示される値、またはクエリ文字列に表示されるテキスト文字列です。正規表現を使用してこれらの文字列を指定することもできます。

条件によっては、複数の値を指定できる場合があります。例えば、IP 条件では最大 10,000 個の IP アドレスまたは IP アドレス範囲を指定できます。

[Rules] (ルール)

条件をルールに追加して、許可、ブロック、またはカウントするリクエストのみが対象になるようにします。AWS WAFClassic には、次の 2 種類のルールがあります。

通常ルール

通常ルールでは、特定のリクエストを対象とするための条件のみが使用されます。例えば、攻撃者からの最近のリクエストに基づいて、次の条件を含むルールを作成できます。

  • リクエストが 192.0.2.44 から発生した。

  • リクエストの User-Agent ヘッダーに BadBot 値が含まれる。

  • それらのクエリ文字列には、SQL などのコードが含まれる。

ルールに複数の条件をすべて含めると、この例のように AWS WAF Classic によってすべての条件に一致するリクエストが検索されます。つまり、これらの条件を AND で連結したことになります。

少なくとも 1 つの条件を通常ルールに追加します。条件のない通常のルールはどのリクエストにも一致しないため、ルールのアクション (許可、カウント、またはブロック) はトリガーされません。

レートベースのルール

レートベースのルールは、レート制限が追加された通常のルールに似ています。レートベースのルールは、ルールの条件を満たす IP アドレスから到着したリクエストをカウントします。IP アドレスからのリクエストが 5 分間でレート制限を超えた場合、ルールはアクションをトリガーできます。アクションがトリガーされるまで、1~2 分かかることがあります。

レートベースのルールの条件はオプションです。レートベースのルールに条件を追加しない場合、レート制限はすべての IP アドレスに適用されます。条件をレート制限と組み合わせると、レート制限は条件に一致する IP アドレスに適用されます。

例えば、攻撃者からの最近のリクエストに基づいて、次の条件を含むレートベースのルールを作成できます。

  • リクエストが 192.0.2.44 から発生した。

  • リクエストの User-Agent ヘッダーに BadBot 値が含まれる。

このレートベースのルールでは、レート制限を定義することもできます。この例では、1,000 のレート制限を作成します。前述の条件の両方を満たし、5 分間に 1,000 リクエストを超えるリクエストは、ウェブ ACL で定義されたルールのアクション (ブロックまたはカウント) をトリガーします。

両方の条件を満たさないリクエストは、レート制限に対してカウントされないため、このルールの影響を受けません。

2 つ目の例では、ウェブサイトの特定のページにリクエストを制限します。これを行うには、次の文字列一致条件をレートベースのルールに追加します。

  • [Part of the request to filter on] (フィルタリングするリクエストの一部) は、URI です。

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

  • [Value to match] (一致する値) は、login です。

さらに、1,000 の RateLimit を指定します。

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

ウェブ ACL

条件を組み合わせてルールを作成した後、ルールを組み合わせてウェブ ACL を作成します。ここで、各ルールのアクション (許可、ブロック、カウント) とデフォルトアクションを定義します。

各ルールのアクション

ウェブリクエストがルールのすべての条件に一致すると、AWS WAF Classic はリクエストをブロックするか、リクエストを API Gateway API、CloudFront ディストリビューション、または Application Load Balancer に転送できるようにします。AWS WAF Classic によって各ルールに対して実行されるアクションを指定します。

AWS WAF Classic は、リクエストをウェブ ACL のルールと比較します。ルールはリストされている順に比較されます。AWS WAFClassic は、リクエストが一致する最初のルールに関連付けられているアクションを実行します。例えば、ウェブリクエストが、リクエストを許可する 1 つのルールと一致し、リクエストをブロックする別のルールと一致する場合、AWS WAF Classic によって、どちらのルールが最初にリストされているかに応じて、リクエストが許可またはブロックされます。

新しいルールを使用する前にテストする場合は、ルールのすべての条件を満たすリクエストをカウントするように AWS WAF Classic を設定することもできます。リクエストを許可またはブロックするルールと同様に、リクエストをカウントするルールも、ウェブ ACL でリストされている順番によって影響を受けます。例えば、ウェブリクエストが、リクエストを許可する 1 つのルールと一致し、リクエストをカウントする別のルールと一致する場合、リクエストを許可するルールが最初にリストされていると、リクエストはカウントされません。

デフォルトアクション

デフォルトアクションによって、ウェブ ACL のすべてのルールのすべての条件に一致しないリクエストを AWS WAF Classic が許可するかブロックするかが決まります。例えば、ウェブ ACL を作成し、前に定義したルールのみを追加するとします。

  • リクエストが 192.0.2.44 から発生した。

  • リクエストの User-Agent ヘッダーに BadBot 値が含まれる。

  • それらのリクエストのクエリ文字列に悪意のある可能性がある SQL コードが含まれる。

リクエストがルールの 3 つのすべての条件に一致せず、デフォルトアクションが ALLOW の場合、AWS WAF Classic はリクエストを API Gateway、CloudFront、または Application Load Balancer に転送し、そのサービスはリクエストされたオブジェクトにより応答します。

2 つ以上のルールをウェブ ACL に追加すると、リクエストがすべてのルールのすべての条件に一致しない場合にのみ、AWS WAF Classic はデフォルトアクションを実行します。例えば、以下の 1 つの条件を含む 2 つ目のルールを追加するとします。

  • User-Agent ヘッダーに BIGBadBot 値が含まれるリクエスト。

リクエストが最初のルールの 3 つのすべての条件に一致せず、2 つ目のルールの 1 つの条件に一致しない場合にのみ、AWS WAF Classic はデフォルトアクションを実行します。

ごくまれに、AWS WAF で、リクエストを許可またはブロックするかどうかについて、Amazon API Gateway、Amazon CloudFront、または Application Load Balancer への応答を遅らせる内部エラーが発生する場合があります。そのような場合は通常、CloudFront はリクエストを許可またはコンテンツを提供します。API Gateway および Application Load Balancer は、通常、リクエストを拒否し、コンテンツを提供しません。