Azure Application Gateway の Web アプリケーション ファイアウォール v2 カスタム規則
Azure Application Gateway の Web アプリケーション ファイアウォール (WAF) v2 には、さまざまな種類の攻撃からの保護を提供する、事前構成済みで、プラットフォームにより管理される規則セットが付属しています。 これらの攻撃には、クロス サイトスクリプティング、SQL インジェクションなどが含まれます。 WAF 管理者は、コア ルール セット (CRS) のルールを補強するために独自のルールを記述することが必要な場合があります。 カスタム ルールでは、一致基準に基づいて、要求されたトラフィックをブロック、許可、またはログ記録できます。 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 つの異なる条件の間で "または" を使用する場合、2 つの条件が異なる規則に含まれている必要があります。 たとえば、特定の IP アドレスからのトラフィックをブロックするか、または特定のブラウザーが使用されている場合にブロックします。
CRS 規則セットと同様に、カスタム規則でも正規表現がサポートされています。 たとえば、カスタム Web アプリケーション ファイアウォール規則の作成と使用に関するページの例 3 と 5 を参照してください。
Note
WAF のカスタム規則数の上限は 100 です。 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 アプリケーション ファイアウォール規則の作成と使用に関するページを参照してください。
カスタム規則のフィールド
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" に設定されている場合にのみ適用されます。 追加のコンテンツ タイプ
application/json
は、CRS バージョン 3.2 以降、ボット保護規則セット、および geo の一致カスタム ルールでサポートされます。 - RequestUri – 要求の URI
- RequestHeaders – 要求のヘッダー
- RequestBody - この変数には、要求本文全体が含まれます。 この一致変数を使用するカスタム ルールは、"Content-Type" ヘッダーが
application/x-www-form-urlencoded
のメディアの種類に設定されている場合にのみ適用されます。 追加のコンテンツ タイプapplication/soap+xml, application/xml, text/xml
は、CRS バージョン 3.2 以降、ボット保護規則セット、および geo の一致カスタム ルールでサポートされます。 - RequestCookies – 要求の Cookie
Selector (セレクター) [省略可能]
matchVariable コレクションのフィールドを記述します。 たとえば、matchVariable が RequestHeaders の場合、セレクターは User-Agent ヘッダー上にある可能性があります。
Operator (演算子) [必須]
次の演算子のいずれかである必要があります。
- IPMatch - 一致する変数が "RemoteAddr" のときにのみ使用され、IPv4 のみをサポート
- Equal – 入力は MatchValue と同じ
- Any – MatchValue を持つべきではありません。 有効なセレクターを持つ一致変数にお勧めします。
- Contains
- LessThan
- GreaterThan
- LessThanOrEqual
- GreaterThanOrEqual
- BeginsWith
- EndsWith
- Regex
- Geomatch
Negate condition (否定条件) [省略可能]
現在の条件を否定します。
Transform (変換) [省略可能]
一致が試行される前に実行する変換の名前の文字列の一覧。 次の変換を指定できます。
- 小文字
- 大文字
- Trim
- UrlDecode
- UrlEncode
- RemoveNulls
- HtmlEntityDecode
Match values (一致する値) [必須]
一致を検証する値のリスト。これらは OR で結合されていると考えることができます。 たとえば、IP アドレスやその他の文字列です。 値の形式は前の演算子に依存します。
次の HTTP 要求メソッドの値がサポートされています。
- GET
- HEAD
- POST
- OPTIONS
- PUT
- Del
- PATCH
Action (アクション) [必須]
WAF ポリシー検出モードでは、カスタム ルールがトリガーされると、カスタム ルールで設定されたアクション値に関係なく、アクションは常にログに記録されます。
- Allow - トランザクションを認可し、他のすべての規則をスキップします。 指定した要求が許可リストに追加され、いったん一致すればその要求は以降の評価を停止し、バックエンド プールに送られます。 許可リストに載っている規則は、それ以降のカスタム規則またはマネージド規則に対して評価されません。
- Block – SecDefaultAction (検出/防止モード) に基づいてトランザクションをブロックまたはログ記録します。
- 防止モード - SecDefaultAction に基づいてトランザクションをブロックします。
Allow
アクションと同様に、要求がいったん評価されてブロックリストに追加されると、評価が停止され、要求がブロックされます。 同じ条件を満たすそれ以降のいかなる要求も評価されず、ブロックされます。 - 検出モード - 評価が停止した後の SecDefaultAction に基づいてトランザクションをログに記録します。 同じ条件を満たすそれ以降のいかなる要求も評価されず、単にログに記録されます。
- 防止モード - SecDefaultAction に基づいてトランザクションをブロックします。
- Log – 規則はログに書き込まれますが、残りの規則の評価も実行されます。 他のカスタム規則が優先度の順に評価された後、マネージド規則が評価されます。
カスタム規則のコピーと複製
カスタム規則は、特定のポリシー内で複製できます。 規則を複製する場合は、規則の一意の名前と一意の優先度の値を指定する必要があります。 さらに、ポリシーが両方とも同じサブスクリプション内にあれば、カスタム規則を Application Gateway WAF ポリシー間でコピーできます。 ポリシー間でルールをコピーする場合は、ルールをコピーする先の Application Gateway WAF ポリシーを選ぶ必要があります。 WAF ポリシーを選んだら、規則に一意の名前を付け、優先順位を割り当てる必要があります。
Geomatch カスタム ルール
カスタム規則では、実際のアプリケーションのニーズとセキュリティ ポリシーに沿ったカスタマイズされた規則を作成できます。 国やリージョンごとに Web アプリケーションへのアクセスを制限できます。 詳細については、Geomatch カスタム ルールに関するページをご覧ください。