建立應用程式閘道 WAF v2 的速率限制自訂規則
速率限制可讓您偵測和封鎖流向您應用程式的異常頻繁流量。 速率限制的運作方式是計算符合所設定速率限制規則的所有流量,以及針對超過所設定閾值流量比對的流量執行設定動作。 如需詳細資訊,請參閱速率限制概觀。
使用下列資訊來設定應用程式閘道 WAFv2 的速率限制規則。
案例一 - 依超過設定閾值的用戶端 IP 建立速率限制流量的規則,以符合所有流量。
- 開啟現有的應用程式閘道 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
案例二 - 建立速率限制自訂規則,以符合源自美國流量以外的所有流量。 流量會根據用戶端來源 IP 位址的地理位置進行分組、計算和速率限制
- 開啟現有的應用程式閘道 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
案例三 - 建立速率限制自訂規則,以符合登入頁面的所有流量,並使用 GroupBy None 變數。 這會將符合規則的所有流量分組並計為一個流量,並將動作套用至符合規則 (/login) 的所有流量。
- 開啟現有的應用程式閘道 WAF 原則
- 選取自訂規則
- 新增自訂規則
- 新增自訂規則的名稱
- 選取 [速率限制規則類型] 選項按鈕
- 輸入規則的優先順序
- 針對 [速率限制持續時間] 選擇 1 分鐘
- 針對 [速率限制閾值 (要求)] 輸入 100
- 針對 [群組速率限制流量依據] 選取 [無]
- 在 [條件] 下,針對 [比對類型] 選擇 [字串]
- 在 [比對變數] 區段中,針對 [比對變數] 選取 [RequestUri]
- 針對 [作業] 選取 [不是選項按鈕]
- 針對 [運算子] 選取 [包含]
- 針對 [比對值] 輸入 [登入] 頁面路徑。 在此範例中,我們使用 /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 應用程式防火牆規則