Web アプリケーション ファイアウォールの除外リスト

Azure Application Gateway Web アプリケーション ファイアウォール (WAF) では、Web アプリケーションの保護が提供されます。 この記事では、WAF 除外リストの構成について説明します。 これらの設定は、Application Gateway に関連付けられている WAF ポリシーに配置されています。 WAF ポリシーの詳細については、Azure Application Gateway 上の Azure Web アプリケーション ファイアウォールに関する記事、および「Application Gateway 用の Web アプリケーション ファイアウォール ポリシーの作成」を参照してください。

アプリケーションで許可される要求が WAF によってブロックされる場合があります。 WAF の除外リストを使用すると、WAF の評価から特定の要求属性を省略できます。 要求の残りの部分は通常として評価されます。

たとえば、Active Directory によって認証に使用されるトークンが挿入されます。 要求ヘッダーで使用される場合、これらのトークンには、WAF ルールに基づいて擬陽性検出をトリガーすることがある特殊文字が含まれる可能性があります。 除外リストにヘッダーを追加することで、ヘッダーを無視するように WAF を構成できますが、WAF は引き続き要求の残りの部分を評価します。

除外は、特定の WAF ルールが評価される際に適用されるように、またはすべての WAF ルールの評価にグローバルに適用されるように構成することができます。 除外ルールは、Web アプリケーション全体に適用されます。

除外する要求属性を識別する

WAF の除外を構成する場合は、WAF 評価から除外する必要がある要求の属性を指定する必要があります。 WAF の除外は、次の要求属性に対して構成できます。

  • 要求ヘッダー
  • 要求 Cookie
  • 要求の属性名 (引数) は、次のような除外要素として追加できます。
    • フォーム フィールド名
    • JSON エンティティ
    • URL クエリ文字列引数

要求ヘッダー、本文、cookie、またはクエリ文字列属性については完全一致を指定できます。 また、部分一致を指定することも可能です。 除外を構成するには、次の演算子を使用します。

  • Equals: この演算子は完全一致の場合に使用されます。 たとえば、bearerToken という名前のヘッダーを選択した場合は、bearerToken として設定されるセレクターで equals 演算子を使用します。
  • Starts with:この演算子は指定したセレクター値で始まるすべてのフィールドと一致します。
  • Ends with: この演算子は指定したセレクター値で終わるすべての要求フィールドと一致します。
  • Contains:この演算子は指定したセレクター値を含むすべての要求フィールドと一致します。
  • Equals any:この演算子は、すべての要求フィールドと一致します。 * はセレクター値になります。

いずれの場合も、照合では大文字と小文字は区別されません。 正規表現をセレクターとして使用することはできません。

Note

詳細とトラブルシューティング ヘルプについては、「WAF トラブルシューティング」を参照してください。

キーと値による要求属性

除外を構成する場合は、キーまたは値を WAF 評価から除外するかどうかを決定する必要があります。

たとえば、要求に次のヘッダーが含まれているとします。

My-Header: 1=1

ヘッダーの値 (1=1) は、WAF による攻撃として検出される可能性があります。 ただし、これがシナリオの正当な値であることがわかっている場合は、ヘッダーの "値" に対して除外を構成できます。 これを行うには、RequestHeaderValues 要求属性を使用して、無視する値を含むヘッダー名 (My-Header) を選択します。

注意

キーと値による要求属性は、CRS 3.2 以降でのみ使用できます。

名前による要求属性は、値による要求属性と同じように機能し、CRS 3.1 以前のバージョンとの下位互換性のために装備されています。 名前による属性ではなく、値による要求属性を使用することをお勧めします。 たとえば、RequestHeaderNames ではなく RequestHeaderValues を使用します。

これに対し、WAF がヘッダーの名前 (My-Header) を攻撃として検出した場合は、RequestHeaderKeys 要求属性を使用してヘッダーの "キー" に対する除外を構成できます。 RequestHeaderKeys 属性は CRS 3.2 以降でのみ使用できます。

スコープの除外

除外は、特定の WAF ルールのセット、ルールセット、またはすべてのルール全体でグローバルに適用するように構成できます。

ヒント

攻撃者がシステムを悪用する余地を誤って残さないように、除外を可能な限り絞り込んで特定することをお勧めします。 除外ルールを追加する必要がある場合は、可能な限りルールごとの除外を使用します。

ルールごとの除外

特定のルール、ルールのグループ、またはルール セットの除外を構成できます。 除外対象のルールを指定する必要があります。 WAF 評価から除外する必要がある要求属性も指定する必要があります。 ルールの完全なグループを除外するには、ruleGroupName パラメーターのみを指定します。rules パラメーターは、除外をグループの特定のルールに制限する場合にのみ役立ちます。

ルールごとの除外は、OWASP (CRS) ルールセットのバージョン 3.2 以降を使用する場合に利用可能です。

WAF で要求ヘッダー User-Agent の値を無視するとします。 ヘッダー User-Agent には、ネットワーク プロトコル ピアが、要求側のソフトウェア ユーザー エージェントのアプリケーションの種類、オペレーティング システム、ソフトウェア ベンダー、またはソフトウェア バージョンを識別するための文字列が含まれます。 詳細については、「User-Agent」をご覧ください。

このヘッダーの評価を無効にする理由はいくつもあります。 WAF によって検出され、悪意があると仮定されている文字列がある可能性があります。 たとえば、ヘッダー User-Agent には、文字列にクラシック SQL インジェクション攻撃 x=x が含まれる場合があります。 場合によっては、これは正当なトラフィックに指定できます。 したがって、このヘッダーを WAF 評価から除外する必要が生じることがあります。

次の方法を使用して、すべての SQL インジェクション ルールによってヘッダー User-Agent を評価から除外できます。

Azure portal を使用してルールごとの除外を構成するには、次の手順に従います。

  1. WAF ポリシーに移動し、[マネージド ルール] を選択します。

  2. [除外の追加] を選択します。

    Screenshot of the Azure portal that shows how to add a new per-rule exclusion for the W A F policy.

  3. [適用対象] で、除外を適用する CRS ルール セット (OWASP_3.2 など) を選択します。

    Screenshot of the Azure portal that shows the per-rule exclusion configuration for the W A F policy.

  4. [ルールの追加] を選択し、除外を適用するルールを選択します。

  5. 一致変数、演算子、セレクターを構成します。 次に、 [保存] を選択します。

複数の除外を構成できます。

ルール 942270 だけで、評価から User-Agent ヘッダーを除外することもできます。

前の例で説明されている手順に従い、手順 4 でルール 942270 を選択します。

グローバル除外

すべての WAF ルールに適用するように除外を構成できます。

この例では、URL を介して要求に渡される "user" パラメーターの値を除外します。 たとえばお使いの環境で、WAF が悪意のあるコンテンツと見なし、ブロックしている文字列が user クエリ文字列引数に含まれていることがよくあるとします。 WAF がフィールドの値を評価しないように、名前が user から始まるすべてのクエリ文字列引数を除外できます。

次の例は、クエリ文字列引数 user を評価から除外する方法を示しています。

Azure portal を使用してグローバルの除外を構成するには、次の手順に従います。

  1. WAF ポリシーに移動し、[マネージド ルール] を選択します。

  2. [除外の追加] を選択します。

    Screenshot of the Azure portal that shows how to add a new global exclusion for the W A F policy.

  3. [適用対象] で、[グローバル] を選択します。

    Screenshot of the Azure portal that shows the global exclusion configuration for the W A F policy.

  4. 一致変数、演算子、セレクターを構成します。 次に、 [保存] を選択します。

複数の除外を構成できます。

したがって、URL http://www.contoso.com/?user%3c%3e=joe が WAF によってスキャンされた場合、文字列 joe は評価されませんが、パラメーター名 user%3c%3e は引き続き評価されます。

次のステップ

ご自分の WAF 設定を構成したら、その WAF ログを表示する方法を学習できます。 詳細については、Application Gateway の診断に関するトピックを参照してください。