Azure Application Gateway の Web アプリケーション ファイアウォール v2 カスタム規則

適用対象: ✔️ Application Gateway V2

Azure Application Gateway Web Application Firewall (WAF) v2 には、さまざまな種類の攻撃から保護する、構成済みのプラットフォームで管理されたルールセットが含まれています。 これらの攻撃には、クロスサイト スクリプティング、SQL インジェクションなどが含まれます。 WAF 管理者は、コア ルール セット (CRS) のルールを補強するために独自のルールを記述することが必要な場合があります。 カスタム ルールでは、一致する条件に基づいて、要求されたトラフィックをブロック、許可、またはログに記録できます。 WAF ポリシーを検出モードに設定し、カスタム ブロック ルールがトリガーされた場合、要求はログに記録され、ブロックアクションは実行されません。

カスタム ルールを使用して、WAF が要求ごとに評価する独自のルールを作成します。 これらのルールは、マネージド ルール セット内の他のルールよりも優先度が高くなります。 カスタム規則には、規則名、規則の優先度、一致条件の配列が含まれます。 これらの条件が満たされた場合、WAF は許可、ブロック、またはログに対するアクションを実行します。 カスタムルールがトリガーされ、WAF が許可またはブロックアクションを実行した場合、WAF はカスタムルールまたはマネージドルールからそれ以上のアクションを実行しません。 カスタム ルールが許可またはブロック アクションをトリガーした場合でも、構成済みのルール セット (コア ルール セット/既定のルール セット) からのルールの一致に関するいくつかのログ イベントが表示される場合がありますが、これらのルールは適用されません。 ログ イベントは、並列ルール処理のために WAF エンジンによって適用される最適化のためだけであり、無視しても問題ありません。 カスタム ルールはオンデマンドで有効または無効にすることができます。

たとえば、範囲 192.168.5.0/24 内の IP アドレスからのすべての要求をブロックできます。 この規則では、演算子は IPMatch、matchValues は IP アドレス範囲 (192.168.5.0/24)、アクションはトラフィックのブロックです。 また、ルールの名前、優先度、および有効または無効の状態も設定します。

カスタム規則は、セキュリティ ニーズに対応する、より高度な規則を作成するための複合ロジックの使用をサポートします。 たとえば、2 つのカスタム規則を使用して、次のロジック ((rule1:条件 1 かつ rule1:条件 2) または rule2:条件 3) を作成できます。 このロジックは、条件 1 かつ条件 2 が満たされている場合、または条件 3 が満たされている場合、WAF はカスタム規則で指定されたアクションを実行することを意味します。

同じ規則内の異なる一致条件は常に "かつ" を使用して結合されます。 たとえば、特定の IP アドレスからのトラフィックを、特定のブラウザーが使用している場合にのみブロックします。

2 つの異なる条件間で or を使用する場合は、2 つの条件が異なるルールに含まれている必要があります。 たとえば、特定の IP アドレスからのトラフィックをブロックするか、または特定のブラウザーが使用されている場合にブロックします。

カスタム ルールでは、CRS ルールセットと同様に正規表現もサポートされます。 たとえば、カスタム Web アプリケーション ファイアウォール規則の作成と使用に関するページの例 3 と 5 を参照してください。

最大 100 個の WAF カスタム規則を作成できます。 Application Gateway の制限の詳細については、「Azure サブスクリプションとサービスの制限、クォータ、制約」を参照してください。

注意

アプリケーション ゲートウェイ レベルで適用するすべてのリダイレクト規則は、WAF カスタム規則をバイパスします。 詳細については、「Application Gateway のリダイレクトの概要」を参照してください。

許可とブロック

カスタム ルールを使用すると、トラフィックを簡単に許可またはブロックできます。 たとえば、IP アドレスの範囲からのすべてのトラフィックをブロックできます。 要求が特定のブラウザーから送信された場合にトラフィックを許可する別のルールを作成できます。

何かを許可するには、 -Action パラメーターを Allow に設定します。 何かをブロックするには、 -Action パラメーターを Block に設定します。

$AllowRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example1 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Allow `
   -State Enabled

$BlockRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example2 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Block `
   -State Enabled

前の $BlockRule は、Azure Resource Manager で次のカスタム規則に対応します。

"customRules": [
      {
        "name": "blockEvilBot",
        "priority": 2,
        "ruleType": "MatchRule",
        "action": "Block",
        "state": "Enabled",
        "matchConditions": [
          {
            "matchVariables": [
              {
                "variableName": "RequestHeaders",
                "selector": "User-Agent"
              }
            ],
            "operator": "Contains",
            "negationCondition": false,
            "matchValues": [
              "evilbot"
            ],
            "transforms": [
              "Lowercase"
            ]
          }
        ]
      }
    ], 

このカスタム規則には、名前、優先度、アクションに加えて、アクションが発生するために満たされる必要がある一致条件の配列が含まれます。 これらのフィールドの詳細については、以下のフィールドの説明を参照してください。 カスタム規則の例については、カスタム Web アプリケーション ファイアウォール規則の作成と使用に関するページを参照してください。

WAF カスタム規則では、ファイル名またはファイルの種類に基づく要求の許可またはブロックはサポートされていません。

カスタム規則のフィールド

Name (名前) [省略可能]

ルールの名前です。 これはログに記録されます。

ルールを有効にする [省略可能]

このルールのオンとオフを切り替えます。 カスタム ルールは、既定で有効になっています。

Priority (優先度) [必須]

  • 規則の評価順序を決定します。 値を小さくするほど、規則が早く評価されます。 許容範囲は 1 ~ 100 です。
  • すべてのカスタム規則間で一意である必要があります。 優先度が 40 の規則は、優先度が 80 の規則よりも先に評価されます。

Rule type (規則の種類) [必須]

現在、MatchRule である必要があります。

Match variable (一致する変数) [必須]

次の変数のいずれかである必要があります。

  • RemoteAddr – リモート コンピューター接続の IPv4 アドレスまたは範囲
  • RequestMethod – HTTP 要求メソッド
  • QueryString – URI 内の変数
  • PostArgs – POST 本文で送信される引数。 この一致変数を使用するカスタムルールは、'Content-Type' ヘッダーが 'application/x-www-form-urlencoded' または 'multipart/form-data' に設定されている場合にのみ適用されます。 CRS バージョン 3.2 以降では、ボット保護規則セットと geo 一致カスタム ルールと共に、追加のコンテンツ タイプの application/jsonがサポートされています。
  • RequestUri – 要求の URI
  • RequestHeaders – 要求のヘッダー
  • RequestBody - この変数には、要求本文全体が含まれます。 この一致変数を使用するカスタム ルールは、"Content-Type" ヘッダーがメディアの種類 application/x-www-form-urlencoded 設定されている場合にのみ適用されます。 CRS バージョン 3.2 以降では、追加のコンテンツ タイプの application/soap+xml, application/xml, text/xmlと、ボット保護ルールセットとジオマッチカスタムルールがサポートされています。
  • RequestCookies – 要求の Cookie

Selector (セレクター) [省略可能]

matchVariable コレクションのフィールドを記述します。 たとえば、matchVariable が RequestHeaders の場合、セレクターは User-Agent ヘッダー上にある可能性があります。

Operator (演算子) [必須]

次のいずれかの演算子を使用します。

  • IPMatch - 一致変数が RemoteAddr で、IPv4 のみがサポートされている場合にのみ使用します。
  • Equal - 入力が MatchValue と同じ場合に使用します。
  • Any - MatchValue がない場合に使用します。 有効なセレクターを持つ一致変数にお勧めします。
  • Contains - MatchValue が明示的な値である場合にのみ使用します。 ワイルドカードと正規表現はサポートされていません。
  • LessThan
  • GreaterThan
  • LessThanOrEqual
  • より大きいまたは等しい
  • ビギンズウィズ
  • EndsWith
  • Regex
  • Geomatch

Negate condition (否定条件) [省略可能]

現在の条件を否定します。

Transform (変換) [省略可能]

一致を試みる前に適用する変換を指定する文字列値の一覧。 使用可能な変換には、次のものがあります。

  • 小文字
  • 大文字
  • Trim
  • URLデコード
  • URLエンコード
  • RemoveNulls (英語)
  • HtmlEntityDecode

Match values (一致する値) [必須]

照合する値の一覧。 OR と見なすことができます。 たとえば、リストには IP アドレスやその他の文字列が含まれている場合があります。 値の形式は前の演算子に依存します。

WAF でコア ルール セット (CRS) 3.1 またはその他の以前の CRS バージョンが実行されている場合、一致値は文字、数字、句読点のみを受け入れます。 引用符 "'、スペースはサポートされていません。

次の HTTP 要求メソッドの値がサポートされています。

  • GET
  • HEAD
  • POST
  • オプション
  • PUT
  • DELETE
  • PATCH

Action (アクション) [必須]

WAF ポリシー検出モードでは、カスタム ルールがトリガーされると、カスタム ルールで設定されたアクション値に関係なく、アクションは常にログに記録されます。

  • Allow - トランザクションを認可し、他のすべての規則をスキップします。 指定した要求が許可リストに追加され、いったん一致すればその要求は以降の評価を停止し、バックエンド プールに送られます。 許可リストに載っている規則は、それ以降のカスタム規則またはマネージド規則に対して評価されません。
  • ブロック - SecDefaultAction (検出または防止モード) に基づいてトランザクションをブロックまたはログに記録します。 - 防止モード - SecDefaultAction に基づいてトランザクションをブロックします。 Allowアクションと同様に、要求が評価されてブロックリストに追加されると、評価が停止し、要求がブロックされます。 同じ条件を満たすそれ以降のいかなる要求も評価されず、ブロックされます。
    • 検出モード - SecDefaultAction に基づいてトランザクションをログに記録し、評価が停止します。 その後、同じ条件を満たす要求は評価されず、ログに記録されます。
  • Log – 規則はログに書き込まれますが、残りの規則の評価も実行されます。 他のカスタム規則が優先度の順に評価された後、マネージド規則が評価されます。

カスタム規則のコピーと複製

特定のポリシー内でカスタム 規則を複製できます。 ルールを複製する場合は、ルールの一意の名前と一意の優先順位の値を指定する必要があります。 さらに、ポリシーが両方とも同じサブスクリプション内にある限り、1 つの Application Gateway WAF ポリシーから別の Application Gateway WAF ポリシーにカスタム 規則をコピーできます。 あるポリシーから別のポリシーにルールをコピーする場合は、ルールをコピーする Application Gateway WAF ポリシーを選択する必要があります。 WAF ポリシーを選択したら、ルールに一意の名前を付け、優先度ランクを割り当てる必要があります。

Geomatch カスタム ルール

カスタム規則では、実際のアプリケーションのニーズとセキュリティ ポリシーに沿ったカスタマイズされた規則を作成できます。 国または地域によって Web アプリケーションへのアクセスを制限できます。 詳細については、Geomatch カスタム ルールに関するページをご覧ください。

次のステップ