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를 선택합니다 .
Is not for Operation을 선택합니다 .
국가/지역에 대한 미국 선택합니다 .
작업 설정을 트래픽 거부로 둡니다.
추가를 선택하여 정책에 사용자 지정 규칙을 추가합니다.
저장을 선택하여 구성을 저장하고 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 변수를 사용하여 속도 제한 사용자 지정 규칙을 만듭니다. 그러면 규칙과 일치하는 모든 트래픽을 하나로 그룹화하고 계산하며 규칙(/login)과 일치하는 모든 트래픽에 작업을 적용합니다.
기존 Application Gateway WAF 정책을 엽니다.
사용자 지정 규칙을 선택합니다 .
사용자 지정 규칙 추가를 선택합니다 .
사용자 지정 규칙의 이름을 입력합니다.
규칙 유형에 대해 속도 제한을 선택합니다 .
규칙의 우선 순위를 입력합니다.
속도 제한 기간에 대해 1분을 선택합니다 .
속도 제한 임계값(요청)의 유형 100 입니다.
그룹 속도 제한 트래픽에 대해 없음을 선택합니다 .
조건에서 일치 유형에 대한 문자열을 선택합니다 .
변수 일치 섹션에서 일치 변수 에 대한 RequestUri를 선택합니다 .
Is not for Operation을 선택합니다 .
연산자에 대해 [포함]을 선택합니다 .
변환 선택 사항 선택
일치 값에 대한 로그인 페이지 경로를 입력합니다. 이 예제에서는 /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'
다음 단계
웹 애플리케이션 방화벽 규칙 사용자 지정