

**の新しいコンソールエクスペリエンスの紹介 AWS WAF**

更新されたエクスペリエンスを使用して、コンソールの任意の場所で AWS WAF 機能にアクセスできるようになりました。詳細については、[「コンソールの使用](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)」を参照してください。

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

# AWS WAF Classic の仕組み
<a name="classic-how-aws-waf-works"></a>

**警告**  
AWS WAF Classic は計画的なend-of-lifeプロセスを進めています。リージョン固有のマイルストーンと日付については、 AWS Health ダッシュボードを参照してください。

**注記**  
これは **AWS WAF Classic** ドキュメントです。このバージョンは、2019 年 11 月 AWS WAF より前にルールやウェブ ACLs などのリソースを作成し AWS WAF 、最新バージョンに移行していない場合にのみ使用してください。Web ACL を移行するには、[AWS WAF Classic リソースの への移行 AWS WAF](waf-migrating-from-classic.md) を参照してください。  
**の最新バージョンについては、 AWS WAF**「」を参照してください[AWS WAF](waf-chapter.md)。

 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](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html)」(サービスのロードバランシング) のトピックを参照してください。

**条件**  
条件では、ウェブリクエストで AWS WAF Classic が監視する基本的な特徴を定義します。  
+ 悪意のある可能性が高いスクリプト。攻撃者は、ウェブアプリケーションの脆弱性を悪用できるスクリプトを埋め込みます。これは*クロスサイトスクリプティング*と呼ばれます。
+ リクエストの発生元の IP アドレスまたはアドレス範囲。
+ リクエスト送信元の国または地理的場所。
+ クエリ文字列など、リクエストの指定された部分の長さ。
+ 悪意のある可能性が高い SQL コード。攻撃者は、ウェブリクエストに悪意のある SQL コードを埋め込むことで、データベースからデータを抽出しようとします。これは *SQL インジェクション*と呼ばれます。
+ リクエストに表示される文字列。例えば、`User-Agent` ヘッダーに表示される値、またはクエリ文字列に表示されるテキスト文字列です。正規表現を使用してこれらの文字列を指定することもできます。
条件によっては、複数の値を指定できる場合があります。例えば、IP 条件では最大 10,000 個の IP アドレスまたは IP アドレス範囲を指定できます。

**Rules**  
条件をルールに結合して、許可、ブロック、またはカウントするリクエストを正確にターゲットにします。 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 は、リクエストが一致する最初のルールに関連付けられているアクションを実行します。たとえば、ウェブリクエストがリクエストを許可する 1 つのルールとリクエストをブロックする別のルールに一致する場合、 AWS WAF Classic は、最初にリストされているルールに応じてリクエストを許可または拒否します。  
使用を開始する前に新しいルールをテストする場合は、ルールのすべての条件を満たすリクエストをカウントするように AWS WAF Classic を設定することもできます。リクエストを許可またはブロックするルールと同様に、リクエストをカウントするルールも、ウェブ ACL でリストされている順番によって影響を受けます。例えば、ウェブリクエストが、リクエストを許可する 1 つのルールと一致し、リクエストをカウントする別のルールと一致する場合、リクエストを許可するルールが最初にリストされていると、リクエストはカウントされません。  
**デフォルトアクション**  
デフォルトのアクションは、 AWS WAF Classic がウェブ ACL のルールのすべての条件に一致しないリクエストを許可するかブロックするかを決定します。例えば、ウェブ 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 は、通常、リクエストを拒否し、コンテンツを提供しません。