AWS WAF クラシックの仕組み - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced

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

AWS WAF クラシックの仕組み

注記

これは AWS WAF Classic ドキュメントです。2019 年 11 AWS WAF 月以前にルールや Web ACL AWS WAF などのリソースを作成していて、まだ最新バージョンに移行していない場合にのみ、このバージョンを使用してください。リソースを移行するには、「AWS WAF クラシックリソースをに移行する AWS WAF」を参照してください。

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

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

注記

AWS WAF クラシックを使用して、Amazon Elastic Container Service (Amazon ECS) コンテナでホストされているアプリケーションを保護することもできます。Amazon ECS は、クラスターで Docker コンテナを簡単に実行、停止、管理できる非常にスケーラブルで高速なコンテナ管理サービスです。このオプションを使用するには、 AWS WAF クラシック対応の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 アドレス範囲を指定できます。

ルール

条件を組み合わせてルールを作成し、許可、ブロック、カウントしたいリクエストを正確にターゲットにします。 AWS WAF Classic には次の 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 WAF その後、Classic はリクエストが最初に一致したルールに関連するアクションを実行します。たとえば、ウェブリクエストが、リクエストを許可するルールとリクエストをブロックするルールに一致する場合、 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 に転送し、サービスはリクエストされたオブジェクトで応答します。

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

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

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

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