文字列一致条件の使用 - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced

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

文字列一致条件の使用

注記

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

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

ウェブリクエストに表示される文字列に基づいてリクエストを許可またはブロックする場合は、文字列一致条件を作成します。文字列一致条件は、検索する文字列と、 AWS WAF Classic にその文字列を検査させたいウェブリクエストの一部(指定したヘッダーやクエリ文字列など)を識別します。後でウェブ ACL を作成するときに、文字列を含むリクエストを許可するかブロックするかを指定します。

文字列一致条件の作成

文字列一致条件を作成するときは、検索する文字列と、 AWS WAF Classic にその文字列を検査させたいウェブリクエストの部分 (URI やクエリ文字列など) を識別するフィルターを指定します。文字列一致条件には複数のフィルターを追加できます。文字列一致条件ごとに 1 つのフィルターを設定することもできます。各設定が AWS WAF Classic の動作にどのように影響するかを次に示します。

  • 文字列一致条件ごとに 1 つのフィルター — 個別の文字列一致条件をルールに追加し、そのルールをウェブ ACL に追加する場合、ウェブリクエストはすべての条件に一致する必要があります。 AWS WAF Classic では、条件に基づいてリクエストを許可または拒否します。

    例えば、2 つの条件を作成するとします。1 つの条件は、User-Agent ヘッダーに値 BadBot が含まれているウェブリクエストに一致します。もう 1 つの条件は、クエリ文字列に値 BadParameter が含まれているウェブリクエストに一致します。両方の条件を同じルールに追加し、そのルールをウェブ ACL に追加すると、 AWS WAF Classic は両方の値を含むリクエストのみを許可または拒否します。

  • 文字列一致条件ごとに複数のフィルター — 複数のフィルターを含む文字列一致条件をルールに追加し、そのルールをウェブ ACL に追加すると、ウェブリクエストは文字列一致条件のフィルターの 1 つに一致するだけで、 AWS WAF Classic では 1 つの条件に基づいてリクエストを許可または拒否できます。

    2 つの条件ではなく 1 つの条件を作成し、その 1 つの条件に前の例と同じ 2 つのフィルターが含まれているとします。 AWS WAF Classic では、BadBotUser-AgentBadParameterヘッダーまたはクエリ文字列のいずれかに含まれているリクエストを許可または拒否します

注記

文字列一致条件をルールに追加すると、条件の値と一致しないウェブリクエストを許可または拒否するように AWS WAF Classic を構成することもできます。

文字列一致条件を作成するには
  1. AWS Management Console にサインインし、https://console.aws.amazon.com/wafv2/ AWS WAF のコンソールを開きます。

    ナビゲーションペインに [ AWS WAF クラシックに切り替え] が表示されている場合は、それを選択します。

  2. ナビゲーションペインで、[String and regex matching] (文字列および正規表現の一致) を選択します。

  3. [Create condition] (条件を作成) を選択します。

  4. 適用するフィルター設定を指定します。詳細については、「文字列一致条件の作成時または編集時に指定する値」を参照してください。

  5. [Add filter] (フィルターを追加) を選択します。

  6. 別のフィルターを追加する場合は、ステップ 4〜5 を繰り返します。

  7. フィルターの追加が終了したら、[Create] (作成) を選択します。

文字列一致条件の作成時または編集時に指定する値

文字列一致条件を作成または更新するときに、次の値を指定します。

[Name] (名前)

文字列一致条件の名前を入力します。名前に使用できるのは英数字 (A~Z、a~z、0~9) または特殊文字 _-!"#`+*},./ です。一度作成した条件の名前は変更できません。

[Type] (タイプ)

[String match] (文字列の一致) を選択します。

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

各ウェブリクエストの中で、[Value to match] で指定した文字列が一致するかを AWS WAF Classic に検査させたい部分を選択します

[Header] (ヘッダー)

指定したリクエストヘッダー (User-AgentReferer など)。[Header] (ヘッダー) を選択した場合は、[Header] (ヘッダー) フィールドにヘッダー名を指定します。

[HTTP method] (HTTP メソッド)

リクエストがオリジンに実行を要求しているオペレーションのタイプを示す HTTP メソッド。CloudFront はDELETE、、、、、GETHEADOPTIONSPATCHPOSTPUTおよびの各メソッドをサポートします。

[Query string] (クエリ文字列)

URL 内で ? 文字の後に続く部分 (ある場合)。

[URI]

リクエストの URI パス。リソースを識別します (例: /images/daily-ad.jpg)。これには、URI のクエリ文字列またはフラグメントコンポーネントは含まれません。詳細については、「Uniform Resource Identifier (URI): 一般的な構文」を参照してください。

Transformation が指定されていない限り、URI は正規化されず、 AWS リクエストの一部としてクライアントから受け取った時点で検査されます。[Transformation] (変換) が指定されている場合、URI はその指定に従って形式が再設定されます。

[Body] (本文)

リクエスト内で、HTTP リクエストの本文としてウェブサーバーに送信する追加データ (フォームのデータなど) を含む部分。

注記

[Part of the request to filter on] (フィルタリングするリクエストの一部) の値として [Body] (本文) を選択した場合、 AWS WAF Classic によって最初の 8,192 バイト (8 KB) のみが検査されます。本文が 8,192 バイトより長いリクエストを許可またはブロックするには、サイズ制約条件を作成します。(AWS WAF Classic はリクエストヘッダーから本文の長さを取得します)。詳細については、「サイズ制約条件の使用」を参照してください。

[Single query parameter (value only)] (単一クエリパラメータ (値のみ))

クエリ文字列の一部として定義されているすべてのパラメータです。たとえば、URL が「www.xyz.com? UserName =abc& SalesRegion =seattle」の場合、またはパラメータにフィルタを追加できます。UserNameSalesRegion

重複したパラメータがクエリ文字列に記述される場合、値は「OR」として評価されます。つまり、いずれかの値によって一致がトリガーされます。たとえば、URL「www.xyz.com? SalesRegion =boston& SalesRegion =シアトル」では、「一致する値」が「ボストン」または「シアトル」のどちらかによって一致がトリガーされます。

[Single query parameter (value only)] (単一クエリパラメータ (値のみ)) を選択する場合は、[Query parameter name] (クエリパラメータ名) も指定します。これは、やなど、調べるクエリ文字列内のパラメータです。UserNameSalesRegion[Query parameter name] (クエリパラメータ名) の最大長は 30 文字です。[Query parameter name] (クエリパラメータ名) では、大文字と小文字は区別されません。たとえば、Query UserNameパラメータ名として指定するとusername や UserName などのすべてのバリエーションにマッチします。UserName

[All query parameters (values only)] (すべてのクエリパラメータ (値のみ))

Single クエリパラメーター (値のみ) と似ていますが、 AWS WAF Classic は 1 つのパラメーターの値を調べるのではなく、クエリ文字列内のすべてのパラメーターの値を検査して、一致する Value がないかを調べます。たとえば、URL が「www.xyz.com? UserName =abc& SalesRegion =theatle」で、「すべてのクエリパラメーター (値のみ)」を選択した場合、 AWS WAF Classic は、「一致する値」UserNameとしてまたはのいずれかの値が指定されていれば、一致をトリガーします。SalesRegion

[Header] (ヘッダー) ([Part of the request to filter on] (フィルタリングするリクエストの一部) が [Header] (ヘッダー) の場合のみ)

リクエストの [部分] から [ヘッダー] を選択して一覧で絞り込んだ場合は、一般的なヘッダーのリストからヘッダーを選択するか、Classic に検査させたいヘッダーの名前を入力します。 AWS WAF

[Match type] (一致タイプ)

AWS WAF Classic に検査させたいリクエストの部分で、「Value to match」の文字列がこのフィルターと一致するように表示する必要がある場所を選択します。

[Contains] (次を含む)

文字列は、指定したリクエスト部分内の任意の場所に表示されます。

[Contains word] (単語を含む)

指定したウェブリクエスト部分には [Value to match] (一致する値) が含まれていること、[Value to match] (一致する値) には英数字または下線 (A〜Z、a〜z、0〜9、_) のみが含まれていることが必要です。さらに、[Value to match] (一致する値) は単語であること、つまり、次のいずれかであることが必要です。

  • [Value to match] (一致する値) は、指定したウェブリクエスト部分 (ヘッダーの値など) の値と正確に一致する。

  • [Value to match] (一致する値) は、指定したウェブリクエスト部分の先頭にあり、英数字または下線 (_) 以外の文字が続く (例: BadBot;)。

  • [Value to match] (一致する値) は、指定したウェブリクエスト部分の末尾にあり、英数字または下線 (_) 以外の文字が続く (例: ;BadBot)。

  • [Value to match] (一致する値) は、指定したウェブリクエスト部分の中央にあり、英数字または下線 (_) 以外の文字が前後にある (例: -BadBot;)。

[Exactly matches] (完全に一致)

文字列と指定したリクエスト部分の値が正確に一致します。

[Starts with] (次で開始)

文字列は指定したリクエスト部分の先頭にあります。

[Ends with] (次で終了)

文字列は指定したリクエスト部分の末尾にあります。

[Transformation] (変換)

AWS WAF Classic がリクエストを検査する前に、変換によってウェブリクエストが再フォーマットされます。これにより、攻撃者が Classic をバイパスしようとしてウェブリクエストで使用する、通常とは異なるフォーマットの一部が排除されます。 AWS WAF

1 種類のテキスト変換しか指定できません。

変換では次の操作を実行できます。

なし

AWS WAF Classic は、Value の文字列が一致するかどうかを調べるまで、ウェブリクエストのテキスト変換を一切行いません。

[Convert to lowercase] (小文字に変換)

AWS WAF Classic は大文字 (A ~ Z) を小文字 (a ~ z) に変換します。

[HTML decode] (HTML デコード)

AWS WAF Classic は HTML でエンコードされた文字をエンコードされていない文字に置き換えます。

  • "& に置き換えます。

  •   を改行なしスペースに置き換えます。

  • &lt;< に置き換えます。

  • &gt;> に置き換えます。

  • 16 進数形式の文字 (&#xhhhh;) を対応する文字に置き換えます。

  • 10 進数形式の文字 (&#nnnn;) を対応する文字に置き換えます。

[Normalize white space] (空白の正規化)

AWS WAF Classic では、次の文字がスペース文字 (10 進数 32) に置き換えられます。

  • \f、フォームフィード、10 進数 12

  • \t、タブ、10 進数 9

  • \n、改行、10 進数 10

  • \r、キャリッジリターン、10 進数 13

  • \v、垂直タブ、10 進数 11

  • 改行なしスペース、10 進数 160

さらに、このオプションでは複数のスペースを 1 つのスペースに置き換えます。

[Simplify command line] (コマンドラインを簡素化)

攻撃者がオペレーティングシステムのコマンドラインのコマンドを挿入し、通常と異なるフォーマットを使用してコマンドの一部または全部を偽装するおそれがある場合は、このオプションを使用して次の変換を行います。

  • 次の文字を削除します: \ " ' ^

  • 次の文字の前にあるスペースを削除します: / (

  • 次の文字をスペースに置き換えます: , ;

  • 複数のスペースを 1 つのスペースに置き換えます。

  • 大文字 (A〜Z) を小文字 (a〜z) に変換します。

[URL decode] (URL デコード)

URL エンコードされたリクエストをデコードします。

[Value is base64 encoded] (値が base64 エンコードされている)

[Value to match] (一致する値) の値が base64 でエンコードされている場合は、このチェックボックスをオンにします。Base64 エンコーディングを使用して、攻撃者がリクエストに含める表示不可能な文字 (タブや改行など) を指定します。

[Value to match] (照合する値)

AWS WAF Classic にウェブリクエストで検索させたい値を指定します。最大長は 50 バイトです 値を Base 64 でエンコードする場合は、エンコードする前の値に 50 バイトの最大長が適用されます。

文字列一致条件のフィルターの追加と削除

文字列一致条件のフィルターを追加または削除できます。フィルターを変更するには、新しいフィルターを追加して古いフィルターを削除します。

文字列一致条件のフィルターを追加または削除するには
  1. AWS Management Console にサインインし、https://console.aws.amazon.com/wafv2/ AWS WAF のコンソールを開きます。

    ナビゲーションペインに [ AWS WAF クラシックに切り替え] が表示されている場合は、それを選択します。

  2. ナビゲーションペインで、[String and regex matching] (文字列および正規表現の一致) を選択します。

  3. フィルターを追加または削除する対象の条件を選択します。

  4. フィルターを追加するには、次のステップを実行します。

    1. [Add filter] (フィルターを追加) を選択します。

    2. 適用するフィルター設定を指定します。詳細については、「文字列一致条件の作成時または編集時に指定する値」を参照してください。

    3. [Add] (追加) を選択します。

  5. フィルターを削除するには、次のステップを実行します。

    1. 削除するフィルターを選択します。

    2. [Delete filter] (フィルターを削除) を選択します。

文字列一致条件の削除

文字列一致条件を削除するには、最初にその条件からすべてのフィルターを削除し、その条件を使用しているすべてのルールから条件自体を削除します。次に手順を示します。

文字列一致条件を削除するには
  1. AWS Management Console にサインインし、https://console.aws.amazon.com/wafv2/ AWS WAF にあるコンソールを開きます。

    ナビゲーションペインに [ AWS WAF クラシックに切り替え] が表示されている場合は、それを選択します。

  2. 文字列一致条件を使用しているルールからその条件を削除します。

    1. ナビゲーションペインで [Rules] (ルール) を選択します。

    2. 削除する文字列一致条件を使用しているルールの名前を選択します。

    3. 右側のペインで、[Edit rule] (ルールを編集) を選択します。

    4. 削除する条件の横にある [X] を選択します。

    5. [Update] (更新) を選択します。

    6. 削除する文字列一致条件を使用している残りのすべてのルールに対してこの同じ手順を繰り返します。

  3. 削除する条件からフィルターを削除します。

    1. ナビゲーションペインで、[String and regex matching] (文字列および正規表現の一致) を選択します。

    2. 削除する文字列一致条件の名前を選択します。

    3. 右側のペインで、[Filter] (フィルター) の横にあるチェックボックスをオンにして、すべてのフィルターを選択します。

    4. [Delete filter] (フィルターを削除) を選択します。

  4. ナビゲーションペインで、[String and regex matching] (文字列および正規表現の一致) を選択します。

  5. [String and regex match conditions] (文字列および正規表現の一致条件) ペインで、削除する文字列一致条件を選択します。

  6. [Delete] (削除) を選択して、選択した条件を削除します。