Web アプリケーション ファイアウォール要求サイズ制限と除外リストWeb application firewall request size limits and exclusion lists

Azure Application Gateway Web アプリケーション ファイアウォール (WAF) は、Web アプリケーションを保護します。The Azure Application Gateway web application firewall (WAF) provides protection for web applications. この記事では、WAF 要求サイズ制限と除外リストの構成について説明します。This article describes WAF request size limits and exclusion lists configuration.

WAF 要求サイズの制限WAF request size limits

要求サイズの制限

Web アプリケーション ファイアウォールでは、下限と上限の範囲内に収まる要求サイズ制限を構成することができます。Web Application Firewall allows you to configure request size limits within lower and upper bounds. 次の 2 つのサイズ制限の構成を使用できます。The following two size limits configurations are available:

  • 最大要求本文サイズ フィールドはキロバイトで指定されます。このフィールドでは、ファイルのアップロードを除く、全体的な要求サイズの制限が制御されます。The maximum request body size field is specified in kilobytes and controls overall request size limit excluding any file uploads. このフィールドには、1 KB (最小値) から 128 KB (最大値) までの値を指定することができます。This field can range from 1-KB minimum to 128-KB maximum value. 要求本文のサイズの既定値は 128 KB です。The default value for request body size is 128 KB.
  • ファイル アップロード制限フィールドは MB 単位で指定され、このフィールドでは、最大許容ファイル アップロード サイズが制御されます。The file upload limit field is specified in MB and it governs the maximum allowed file upload size. このフィールドの最小値は 1 MB で、Large SKU のインスタンスには最大 500 MB、Medium SKU には最大 100 MB を指定できます。This field can have a minimum value of 1 MB and a maximum of 500 MB for Large SKU instances while Medium SKU has a maximum of 100 MB. ファイル アップロード制限の既定値は 100 MB です。The default value for file upload limit is 100 MB.

WAF には、要求本文の検査を有効または無効にするための構成可能なノブも用意されています。WAF also offers a configurable knob to turn the request body inspection on or off. 既定では、要求本文の検査は有効になっています。By default, the request body inspection is enabled. 要求本文の検査を無効にした場合、HTTP メッセージ本文の内容は WAF によって評価されません。If the request body inspection is turned off, WAF doesn't evaluate the contents of HTTP message body. そのような場合、WAF ではヘッダー、cookie、および URI には WAF 規則が引き続き適用されます。In such cases, WAF continues to enforce WAF rules on headers, cookies, and URI. 要求本文の検査を無効にすると、最大要求本文サイズ フィールドは適用できなくなり、設定することもできません。If the request body inspection is turned off, then maximum request body size field isn't applicable and can't be set. 要求本文の検査をオフにすると、128 KB を超えるメッセージを WAF に送信できるようになりますが、メッセージ本文の脆弱性が検査されません。Turning off the request body inspection allows for messages larger than 128 KB to be sent to WAF, but the message body isn't inspected for vulnerabilities.

WAF 除外リストWAF exclusion lists

waf-exclusion.png

WAF の除外リストを使用すると、WAF の評価から特定の要求属性を省略できます。WAF exclusion lists allow you to omit certain request attributes from a WAF evaluation. 一般的な例として、認証フィールドまたはパスワード フィールドにおいて使用される、Active Directory で挿入されたトークンが挙げられます。A common example is Active Directory inserted tokens that are used for authentication or password fields. このような属性には、WAF ルールに基づいて誤検知をトリガーする可能性がある特殊文字が含まれる傾向があります。Such attributes are prone to contain special characters that may trigger a false positive from the WAF rules. WAF 除外リストに属性を追加すると、その属性は、どの構成済みのアクティブな WAF ルールによっても考慮されなくなります。Once an attribute is added to the WAF exclusion list, it isn't considered by any configured and active WAF rule. 除外リストはスコープ内でグローバルです。Exclusion lists are global in scope.

名前による除外リストには以下の属性を追加できます。The following attributes can be added to exclusion lists by name. 選択したフィールドの値は WAF ルールに対して評価されませんが、その名前は評価されます (下の例 1 では、[User-Agent] という見出しの値が WAF 評価から除外されています)。The values of the chosen field aren't evaluated against WAF rules, but their names still are (see Example 1 below, the value of the User-Agent header is excluded from WAF evaluation). 除外リストにより、フィールドの値の検査が取り除かれます。The exclusion lists remove inspection of the field's value.

  • 要求ヘッダーRequest Headers

  • 要求 CookieRequest Cookies

  • 要求の属性名 (引数) は、次のような除外要素として追加できます。Request attribute name (args) can be added as an exclusion element, such as:

    • フォーム フィールド名Form field name
    • XML エンティティXML entity
    • JSON エンティティJSON entity
    • URL クエリ文字列引数URL query string args

要求ヘッダー、本文、cookie、またはクエリ文字列属性については完全一致を指定できます。You can specify an exact request header, body, cookie, or query string attribute match. また、必要に応じて、部分一致を指定できます。Or, you can optionally specify partial matches. 除外ルールは、スコープ内でグローバルであり、すべてのページとすべてのルールに適用されます。Exclusion rules are global in scope, and apply to all pages and all rules.

次に、サポートされている一致条件演算子を示します。The following are the supported match criteria operators:

  • Equals:この演算子は完全一致の場合に使用されます。Equals: This operator is used for an exact match. たとえば、bearerToken という名前のヘッダーを選択した場合は、bearerToken として設定されるセレクターで equals 演算子を使用します。As an example, for selecting a header named bearerToken, use the equals operator with the selector set as bearerToken.
  • Starts with:この演算子は指定したセレクター値で始まるすべてのフィールドと一致します。Starts with: This operator matches all fields that start with the specified selector value.
  • Ends with:この演算子は指定したセレクター値で終わるすべての要求フィールドと一致します。Ends with: This operator matches all request fields that end with the specified selector value.
  • Contains:この演算子は指定したセレクター値を含むすべての要求フィールドと一致します。Contains: This operator matches all request fields that contain the specified selector value.
  • Equals any:この演算子は、すべての要求フィールドと一致します。Equals any: This operator matches all request fields. * はセレクター値になります。* will be the selector value.

すべての場合に、照合で大文字と小文字は区別されず、正規表現はセレクターとして使用できません。In all cases matching is case insensitive and regular expression aren't allowed as selectors.

注意

詳細とトラブルシューティング ヘルプについては、「WAF トラブルシューティング」を参照してください。For more information and troubleshooting help, see WAF troubleshooting.

Examples

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

次の例は、除外リストの使い方を示します。The following examples demonstrate the use of exclusions.

例 1Example 1

この例では、ユーザー エージェント ヘッダーを除外します。In this example, you want to exclude the user-agent header. ユーザー エージェントの要求ヘッダーには、ネットワーク プロトコル ピアが、要求側のソフトウェア ユーザー エージェントのアプリケーションの種類、オペレーティング システム、ソフトウェア ベンダー、またはソフトウェア バージョンを識別するための文字列が含まれます。The user-agent request header contains a characteristic string that allows the network protocol peers to identify the application type, operating system, software vendor, or software version of the requesting software user agent. 詳細については、「User-Agent」をご覧ください。For more information, see User-Agent.

このヘッダーの評価を無効にする理由はいくつもあります。There can be any number of reasons to disable evaluating this header. WAF で確認され、悪意があると想定される文字列が存在する可能性があります。There could be a string that the WAF sees and assume it’s malicious. たとえば、文字列での古典的な SQL 攻撃 "x=x" です。For example, the classic SQL attack “x=x” in a string. 場合によっては、これは正当なトラフィックに指定できます。In some cases, this can be legitimate traffic. したがって、このヘッダーを WAF 評価から除外する必要が生じることがあります。So you might need to exclude this header from WAF evaluation.

次の Azure PowerShell コマンドレットは、ユーザー エージェント ヘッダーを評価から除外します。The following Azure PowerShell cmdlet excludes the user-agent header from evaluation:

$exclusion1 = New-AzApplicationGatewayFirewallExclusionConfig `
   -MatchVariable "RequestHeaderNames" `
   -SelectorMatchOperator "Equals" `
   -Selector "User-Agent"

例 2Example 2

この例では、URL を介して要求に渡される user パラメーターの値を除外します。This example excludes the value in the user parameter that is passed in the request via the URL. たとえばお使いの環境で、WAF が悪意のあるコンテンツと見なし、ブロックしている文字列がユーザー フィールドに含まれていることがよくあるとします。For example, say it’s common in your environment for the user field to contain a string that the WAF views as malicious content, so it blocks it. この場合、WAF がフィールド内の何も評価しないように、ユーザー パラメーターを除外できます。You can exclude the user parameter in this case so that the WAF doesn't evaluate anything in the field.

次の Azure PowerShell コマンドレットは、ユーザー パラメーターを評価から除外します。The following Azure PowerShell cmdlet excludes the user parameter from evaluation:

$exclusion2 = New-AzApplicationGatewayFirewallExclusionConfig `
   -MatchVariable "RequestArgNames" `
   -SelectorMatchOperator "StartsWith" `
   -Selector "user"

したがって、URL http://www.contoso.com/?user%281%29=fdafdasfda が WAF に渡された場合、文字列 fdafdasfda を評価しませんが、パラメーター名 user%281%29 は引き続き評価します。So if the URL http://www.contoso.com/?user%281%29=fdafdasfda is passed to the WAF, it won't evaluate the string fdafdasfda, but it will still evaluate the parameter name user%281%29.

次の手順Next steps

ご自分の WAF 設定を構成したら、その WAF ログを表示する方法を学習できます。After you configure your WAF settings, you can learn how to view your WAF logs. 詳細については、Application Gateway の診断に関するトピックを参照してください。For more information, see Application Gateway diagnostics.