Application Gateway WAF v2 のレート制限のカスタム ルールを作成する
- [アーティクル]
-
-
レート制限を使用すると、アプリケーション宛ての異常に高いレベルのトラフィックを検出してブロックできます。 レート制限は、構成されたレート制限ルールに一致するすべてのトラフィックをカウントし、そのルールに一致するトラフィックに対し、構成されたしきい値を超える場合に構成済みアクションを実行することで機能します。 詳細については、レート制限の概要に関するページをご覧ください。
次の情報を使用して、Application Gateway WAFv2 のレート制限ルールを構成します。
シナリオ 1 - 構成されたしきい値を超えるトラフィックをクライアント IP ごとにレート制限するルールを作成し、すべてのトラフィックを照合します。
- 既存の Application Gateway WAF ポリシーを開きます。
-
[カスタム ルール] を選びます。
-
[カスタム ルールの追加] を選びます。
- カスタム ルールの名前を入力します。
-
[ルールの種類] に対して、[レート制限] を選びます。
- ルールの [優先度] を入力します。
-
[レート制限の期間] に対して [1 分] を選びます。
-
[レート制限のしきい値 (要求数)] に「200」と入力します。
-
[Group rate limit traffic by] (レート制限トラフィックのグループ化基準) に対して [クライアント アドレス] を選びます。
-
[条件] で、[照合の種類] に対して [IP アドレス] を選びます。
-
[演算] に対して [次を含まない] を選びます。
- 照合の条件について、[IP アドレスまたは範囲] に「255.255.255.255/32」と入力します。
- アクション設定は [Deny traffic] (トラフィックを拒否する) のままにします。
-
[追加] を選択して、カスタム ルールをポリシーに追加します。
-
[保存] を選択して構成を保存し、WAF ポリシーに対してこのカスタム ルールをアクティブにします。
$variable = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable -Operator IPMatch -MatchValue 255.255.255.255/32 -NegationCondition $True
$groupByVariable = New-AzApplicationGatewayFirewallCustomRuleGroupByVariable -VariableName ClientAddr
$groupByUserSession = New-AzApplicationGatewayFirewallCustomRuleGroupByUserSession -GroupByVariable $groupByVariable
$ratelimitrule = New-AzApplicationGatewayFirewallCustomRule -Name ClientIPRateLimitRule -Priority 90 -RateLimitDuration OneMin -RateLimitThreshold 100 -RuleType RateLimitRule -MatchCondition $condition -GroupByUserSession $groupByUserSession -Action Block -State Enabled
az network application-gateway waf-policy custom-rule create --policy-name ExamplePolicy --resource-group ExampleRG --action Block --name ClientIPRateLimitRule --priority 90 --rule-type RateLimitRule --rate-limit-threshold 100 --group-by-user-session '[{'"groupByVariables"':[{'"variableName"':'"ClientAddr"'}]}]'
az network application-gateway waf-policy custom-rule match-condition add --match-variables RemoteAddr --operator IPMatch --policy-name ExamplePolicy --name ClientIPRateLimitRule --resource-group ExampleRG --value 255.255.255.255/32 --negate true
シナリオ 2 - 米国から発信されるトラフィックを除くすべてのトラフィックに一致するレート制限のカスタム ルールを作成します。 トラフィックは、クライアント ソースの IP アドレスの位置情報に基づいてグループ化され、カウントされ、レート制限されます
- 既存の Application Gateway WAF ポリシーを開きます。
-
[カスタム ルール] を選びます。
-
[カスタム ルールの追加] を選びます。
- カスタム ルールの名前を入力します。
-
[ルールの種類] に対して、[レート制限] を選びます。
- ルールの [優先度] を入力します。
-
[レート制限の期間] に対して [1 分] を選びます。
-
[レート制限のしきい値 (要求数)] に「500」と入力します。
-
[Group rate limit traffic by] (レート制限トラフィックのグループ化基準) に対して [地理的な場所] を選びます。
-
[条件] で、[照合の種類] に対して [地理的な場所] を選びます。
- [一致変数] セクションで、[一致変数] に対して [RemoteAddr] を選びます。
-
[演算] に対して [次ではない] を選びます。
-
[国または地域] に対して [アメリカ合衆国] を選びます。
- アクション設定は [Deny traffic] (トラフィックを拒否する) のままにします。
-
[追加] を選択して、カスタム ルールをポリシーに追加します。
-
[保存] を選択して構成を保存し、WAF ポリシーに対してこのカスタム ルールをアクティブにします。
$variable = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable -Operator GeoMatch -MatchValue "US" -NegationCondition $True
$groupByVariable = New-AzApplicationGatewayFirewallCustomRuleGroupByVariable -VariableName GeoLocation
$groupByUserSession = New-AzApplicationGatewayFirewallCustomRuleGroupByUserSession -GroupByVariable $groupByVariable
$ratelimitrule = New-AzApplicationGatewayFirewallCustomRule -Name GeoRateLimitRule -Priority 95 -RateLimitDuration OneMin -RateLimitThreshold 500 -RuleType RateLimitRule -MatchCondition $condition -GroupByUserSession $groupByUserSession -Action Block -State Enabled
az network application-gateway waf-policy custom-rule create --policy-name ExamplePolicy --resource-group ExampleRG --action Block --name GeoRateLimitRule --priority 95 --rule-type RateLimitRule --rate-limit-threshold 500 --group-by-user-session '[{'"groupByVariables"':[{'"variableName"':'"GeoLocation"'}]}]'
az network application-gateway waf-policy custom-rule match-condition add --match-variables RemoteAddr --operator GeoMatch --policy-name ExamplePolicy --name GeoRateLimitRule --resource-group ExampleRG --value US --negate true
シナリオ 3 - ログイン ページのすべてのトラフィックに一致するレート制限のカスタム ルールを作成し、GroupBy None 変数を使用します。 これにより、ルールに一致するすべてのトラフィックがグループ化され、1 つとしてカウントされ、ルール (/login) に一致するすべてのトラフィックにアクションが適用されます。
- 既存の Application Gateway WAF ポリシーを開きます。
-
[カスタム ルール] を選びます。
-
[カスタム ルールの追加] を選びます。
- カスタム ルールの名前を入力します。
-
[ルールの種類] に対して、[レート制限] を選びます。
- ルールの [優先度] を入力します。
-
[レート制限の期間] に対して [1 分] を選びます。
-
[レート制限のしきい値 (要求数)] に「100」と入力します。
-
[Group rate limit traffic by] (レート制限トラフィックのグループ化基準) に対して [なし] を選びます。
-
[条件] で、[照合の種類] に対して [文字列] を選びます。
-
[一致変数] セクションで、[一致変数] に対して [RequestUri] を選びます。
-
[演算] に対して [次ではない] を選びます。
-
[演算子] に対して [次を含む] を選びます。
- 変換の選択はオプションです。
- 一致する値のログイン ページ パスを入力します。 この例では、/login を使用します。
- アクション設定は [Deny traffic] (トラフィックを拒否する) のままにします。
-
[追加] を選択して、カスタム ルールをポリシーに追加します
-
[保存] を選択して構成を保存し、WAF ポリシーに対してこのカスタム ルールをアクティブにします。
$variable = New-AzApplicationGatewayFirewallMatchVariable -VariableName RequestUri
$condition = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable -Operator Contains -MatchValue "/login" -NegationCondition $True
$groupByVariable = New-AzApplicationGatewayFirewallCustomRuleGroupByVariable -VariableName None
$groupByUserSession = New-AzApplicationGatewayFirewallCustomRuleGroupByUserSession -GroupByVariable $groupByVariable
$ratelimitrule = New-AzApplicationGatewayFirewallCustomRule -Name LoginRateLimitRule -Priority 99 -RateLimitDuration OneMin -RateLimitThreshold 100 -RuleType RateLimitRule -MatchCondition $condition -GroupByUserSession $groupByUserSession -Action Block -State Enabled
az network application-gateway waf-policy custom-rule create --policy-name ExamplePolicy --resource-group ExampleRG --action Block --name LoginRateLimitRule --priority 99 --rule-type RateLimitRule --rate-limit-threshold 100 --group-by-user-session '[{'"groupByVariables"':[{'"variableName"':'"None"'}]}]'
az network application-gateway waf-policy custom-rule match-condition add --match-variables RequestUri --operator Contains --policy-name ExamplePolicy --name LoginRateLimitRule --resource-group ExampleRG --value '/login'
次のステップ
Web アプリケーション ファイアウォール規則のカスタマイズ