Application Gateway WAF v2 のレート制限のカスタム ルールを作成する
- [アーティクル]
-
-
レート制限を使用すると、アプリケーション宛ての異常に高いレベルのトラフィックを検出してブロックできます。 レート制限は、構成されたレート制限ルールに一致するすべてのトラフィックをカウントし、そのルールに一致するトラフィックに対し、構成されたしきい値を超える場合に構成済みアクションを実行することで機能します。 詳細については、レート制限の概要に関するページをご覧ください。
次の情報を使用して、Application Gateway WAFv2 のレート制限ルールを構成します。
シナリオ 1 - 構成されたしきい値を超えるトラフィックをクライアント IP ごとにレート制限するルールを作成し、すべてのトラフィックに一致させます。
- 既存の Application Gateway WAF ポリシーを開きます
- [カスタム ルール] を選択します
- カスタム ルールを追加します
- カスタム ルールの名前を追加します
- [レート制限ルールの種類] ラジオ ボタンを選択します
- ルールの優先度を入力します
- [レート制限の期間] に [1 分] を選択します
- [レート制限のしきい値 (要求数)] に 「200」を入力します
- [レート制限トラフィックのグループ化] で [クライアント アドレス] を選択します
- [条件] で、[一致の種類] に [IP アドレス] を選択します
- [操作] で、[次の値を含まない] ラジオ ボタンを選択します
- 一致条件には、[IP アドレスまたは範囲] に「255.255.255.255/32」と入力します
- アクション設定は [トラフィックを拒否する] のままにします
- [追加] を選択して、カスタム ルールをポリシーに追加します
- [保存] を選択して構成を保存し、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 アドレスの GeoLocation に基づいてグループ化、カウント、レート制限されます
- 既存の Application Gateway WAF ポリシーを開きます
- [カスタム ルール] を選択します
- カスタム ルールを追加します
- カスタム ルールの名前を追加します
- [レート制限ルールの種類] ラジオ ボタンを選択します
- ルールの優先度を入力します
- [レート制限の期間] に [1 分] を選択します
- [レート制限のしきい値 (要求数)] に 「500」を入力します
- [レート制限トラフィックのグループ化] で [地理的な場所] を選択します
- [条件] で、[一致の種類] に [地理的な場所] を選択します
- [一致変数] セクションで、[一致変数] に [RemoteAddr] を選択します
- 操作の [しない] ラジオ ボタンを選択します
- [国/地域] に [米国] を選択します
- アクション設定は [トラフィックを拒否する] のままにします
- [追加] を選択して、カスタム ルールをポリシーに追加します
- [保存] を選択して構成を保存し、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」を入力します
- [レート制限トラフィックのグループ化] で [なし] を選択します
- [条件] で、[一致の種類] に [文字列] を選択します
- [一致変数] セクションで、[一致変数] に [RequestUri] を選択します
- 操作の [しない] ラジオ ボタンを選択します
- [演算子] に [contains] を選択します
- 一致する値のログイン ページ パスを入力します。 この例では、/login を使用します
- アクション設定は [トラフィックを拒否する] のままにします
- [追加] を選択して、カスタム ルールをポリシーに追加します
- [保存] を選択して構成を保存し、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 アプリケーション ファイアウォール規則のカスタマイズ