Share via


Azure WAF 지오매치 사용자 지정 규칙을 사용하여 네트워크 보안 강화

WAF(웹 애플리케이션 방화벽)는 유해한 공격으로부터 웹 애플리케이션을 보호하는 데 도움이 되는 중요한 도구입니다. 미리 설정된 규칙과 사용자 지정 규칙을 모두 사용하여 웹 트래픽을 필터링, 모니터링 및 중지할 수 있습니다. WAF가 가져오는 모든 요청에 대해 검사 고유한 규칙을 만들 수 있습니다. 사용자 지정 규칙은 관리되는 규칙보다 우선 순위가 높으며 먼저 검사.

Azure Web Application Firewall의 가장 강력한 기능 중 하나는 지오매치 사용자 지정 규칙입니다. 이러한 규칙을 사용하면 웹 요청을 원본 위치의 지리적 위치와 일치시킬 수 있습니다. 유해한 활동으로 알려진 특정 장소의 요청을 중지하거나 비즈니스에 중요한 장소의 요청을 허용할 수 있습니다. 지오매치 사용자 지정 규칙은 사용하는 사용자의 위치에 따라 웹 애플리케이션에 대한 액세스를 제한하여 데이터 주권 및 개인 정보 보호법을 따르는 데 도움이 될 수도 있습니다.

불필요한 처리 또는 충돌을 방지하기 위해 지오매치 사용자 지정 규칙을 사용할 때 우선 순위 매개 변수를 현명하게 사용합니다. Azure WAF는 우선 순위 매개 변수(1에서 100 사이의 숫자 값)에 의해 결정되는 순서대로 규칙을 평가하며, 낮은 값은 더 높은 우선 순위를 나타냅니다. 우선 순위는 모든 사용자 지정 규칙에서 고유해야 합니다. 웹 애플리케이션 보안에 대한 중요 또는 특정 규칙에 더 높은 우선 순위를 할당하고 덜 필수 또는 일반 규칙에 우선 순위를 낮춥다. 이렇게 하면 WAF가 웹 트래픽에 가장 적절한 작업을 적용할 수 있습니다. 예를 들어 명시적 URI 경로를 식별하는 시나리오는 가장 구체적이며 다른 유형의 패턴보다 우선 순위가 높은 규칙이 있어야 합니다. 이렇게 하면 다른 사용자 지정 규칙 또는 관리되는 규칙 집합에서 더 많은 일반 트래픽을 평가할 수 있도록 하면서 우선 순위가 가장 높은 애플리케이션의 중요한 경로를 보호합니다.

현재 시제 및 활성 음성을 사용하여 기술 대상 그룹에 대해 단락을 더 쉽게 이해할 수 있도록 다음과 같이 다시 작성할 수 있습니다.

항상 규칙을 프로덕션에 적용하기 전에 테스트하고 성능 및 영향을 정기적으로 모니터링합니다. 이러한 모범 사례를 따르면 지오매치 사용자 지정 규칙의 기능을 사용하여 웹 애플리케이션 보안을 강화할 수 있습니다.

이 문서에서는 Azure WAF 지오매치 사용자 지정 규칙을 소개하고 Azure Portal, Bicep 및 Azure PowerShell을 사용하여 만들고 관리하는 방법을 보여 줍니다.

지오매치 사용자 지정 규칙 패턴

지오매치 사용자 지정 규칙을 사용하면 위험 수준이 높은 영역의 요청을 차단하고 신뢰할 수 있는 위치의 요청을 허용하는 등 다양한 보안 목표를 달성할 수 있습니다. 분산 서비스 거부(DDoS) 공격을 완화하는 데 특히 효과적입니다. 이 공격은 다양한 원본의 다양한 요청으로 웹 애플리케이션을 범람시키려 합니다. 지오매치 사용자 지정 규칙을 사용하면 가장 많은 DDoS 트래픽을 생성하는 지역을 즉시 파악하고 차단하면서 합법적인 사용자에게 액세스 권한을 부여할 수 있습니다. 이 문서에서는 지오매치 사용자 지정 규칙을 사용하여 Azure WAF를 최적화하기 위해 사용할 수 있는 다양한 사용자 지정 규칙 패턴에 대해 알아봅니다.

시나리오 1 - "x"를 제외한 모든 국가의 트래픽 차단

지오매치 사용자 지정 규칙은 모든 국가의 트래픽을 차단하는 것을 목표로 할 때 유용하며 이를 금지합니다. 예를 들어 웹 애플리케이션이 미국 사용자에게만 적용되는 경우 미국에서 시작되지 않는 모든 요청을 방해하는 지오매치 사용자 지정 규칙을 작성할 수 있습니다. 이 전략은 웹 애플리케이션의 공격 노출 영역을 효과적으로 최소화하고 다른 지역의 무단 액세스를 억제합니다. 이 특정 기술은 이 트래픽 패턴을 용이하게 하기 위해 부정 조건을 사용합니다. 미국을 제외한 모든 국가의 트래픽을 방해하는 지오매치 사용자 지정 규칙을 만들려면 다음 포털, Bicep 및 PowerShell 예제를 참조하세요.

포털 예제 - Application Gateway

Screenshot showing the Application Gateway WAF add custom rule screen.

포털 예제 - Front Door

Screenshot showing the Front Door WAF add custom rule screen.

참고 항목

Azure Front Door WAF에서는 일치 변수로 사용하고 SocketAddr , 그렇지 않습니다 RemoteAddr. 변수는 RemoteAddr 일반적으로 요청 헤더를 통해 X-Forwarded-For 전송되는 원래 클라이언트 IP 주소입니다. 변수는 SocketAddr WAF에서 보는 원본 IP 주소입니다.

Bicep 예제 - Application Gateway

properties: {
    customRules: [
      {
        name: 'GeoRule1'
        priority: 10
        ruleType: 'MatchRule'
        action: 'Block'
        matchConditions: [
          {
            matchVariables: [
              {
                variableName: 'RemoteAddr'
              }
            ]
            operator: 'GeoMatch'
            negationConditon: true
            matchValues: [
              'US'
            ]
            transforms: []
          }
        ]
        state: 'Enabled'
      }

Bicep 예제 - Front Door

properties: {
    customRules: {
      rules: [
        {
          name: 'GeoRule1'
          enabledState: 'Enabled'
          priority: 10
          ruleType: 'MatchRule'
          matchConditions: [
            {
              matchVariable: 'SocketAddr'
              operator: 'GeoMatch'
              negateCondition: true
              matchValue: [
                'US'
              ]
              transforms: []
            }
          ]
          action: 'Block'
        }

Azure PowerShell 예제 - Application Gateway

$RGname = "rg-waf "
$policyName = "waf-pol"
$variable = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable -Operator GeoMatch -MatchValue "US" -NegationCondition $true
$rule = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule1 -Priority 10 -RuleType MatchRule -MatchCondition $condition -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy

Azure PowerShell 예제 - Front Door

$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue "US" -NegateCondition $true
$customRuleObject = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule1" -RuleType MatchRule -MatchCondition $matchCondition -Action Block -Priority 10
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject

시나리오 2 - URI "foo" 또는 "bar"를 대상으로 하는 "x" 및 "y"를 제외한 모든 국가의 트래픽 차단

지오매치 사용자 지정 규칙을 사용하여 특정 URI를 대상으로 하는 두 개 이상의 특정 규칙을 제외한 모든 국가의 트래픽을 차단해야 하는 시나리오를 고려합니다. 웹 애플리케이션에 미국과 캐나다의 사용자만을 위한 특정 URI 경로가 있다고 가정합니다. 이 경우 이러한 국가에서 시작되지 않은 모든 요청을 차단하는 지오매치 사용자 지정 규칙을 만듭니다.

이 패턴은 관리되는 규칙 집합을 통해 미국과 캐나다의 요청 페이로드를 처리하고 악의적인 공격을 catch하는 동시에 다른 모든 국가의 요청을 차단합니다. 이 방법을 사용하면 대상 사용자만 웹 애플리케이션에 액세스할 수 있으므로 다른 지역에서 원치 않는 트래픽을 방지할 수 있습니다.

잠재적인 가양성 최소화를 위해 목록에 국가 코드 ZZ 를 포함하여 Azure 데이터 세트의 국가에 아직 매핑되지 않은 IP 주소를 캡처합니다. 이 기술은 지리적 위치 유형에 대한 부정 조건과 URI 일치에 대한 부정이 아닌 조건을 사용합니다.

미국과 캐나다를 제외한 모든 국가에서 지정된 URI로의 트래픽을 차단하는 지오매치 사용자 지정 규칙을 만들려면 제공된 포털, Bicep 및 Azure PowerShell 예제를 참조하세요.

포털 예제 - Application Gateway

Screenshot showing add custom rule for Application Gateway.

포털 예제 - Front Door

Screenshot showing add custom rule for Front Door.

Bicep 예제 - Application Gateway

properties: {
    customRules: [
      {
        name: 'GeoRule2'
        priority: 11
        ruleType: 'MatchRule'
        action: 'Block'
        matchConditions: [
          {
            matchVariables: [
              {
                variableName: 'RemoteAddr'
              }
            ]
            operator: 'GeoMatch'
            negationConditon: true
            matchValues: [
              'US'
              'CA'
            ]
            transforms: []
          }
          {
            matchVariables: [
              {
                variableName: 'RequestUri'
              }
            ]
            operator: 'Contains'
            negationConditon: false
            matchValues: [
              '/foo'
              '/bar'
            ]
            transforms: []
          }
        ]
        state: 'Enabled'
      }

Bicep 예제 - Front Door

properties: {
    customRules: {
      rules: [
        {
          name: 'GeoRule2'
          enabledState: 'Enabled'
          priority: 11
          ruleType: 'MatchRule'
          matchConditions: [
            {
              matchVariable: 'SocketAddr'
              operator: 'GeoMatch'
              negateCondition: true
              matchValue: [
                'US'
                'CA'
              ]
              transforms: []
            }
            {
              matchVariable: 'RequestUri'
              operator: 'Contains'
              negateCondition: false
              matchValue: [
                '/foo'
                '/bar'
              ]
              transforms: []
            }
          ]
          action: 'Block'
        }

Azure PowerShell 예제 - Application Gateway

$RGname = "rg-waf "
$policyName = "waf-pol"
$variable1a = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition1a = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable1a -Operator GeoMatch -MatchValue @(“US”, “CA”) -NegationCondition $true
$variable1b = New-AzApplicationGatewayFirewallMatchVariable -VariableName RequestUri
$condition1b = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable1b -Operator Contains -MatchValue @(“/foo”, “/bar”) -NegationCondition $false
$rule1 = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule2 -Priority 11 -RuleType MatchRule -MatchCondition $condition1a, $condition1b -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule1)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy

Azure PowerShell 예제 - Front Door

$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition1a = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue @(“US”, "CA") -NegateCondition $true
$matchCondition1b = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestUri -OperatorProperty Contains -MatchValue @(“/foo”, “/bar”) -NegateCondition $false
$customRuleObject1 = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule2" -RuleType MatchRule -MatchCondition $matchCondition1a, $matchCondition1b -Action Block -Priority 11
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject1

시나리오 3 - 특히 국가 "x"에서 트래픽 차단

지오매치 사용자 지정 규칙을 사용하여 특정 국가의 트래픽을 차단할 수 있습니다. 예를 들어 웹 애플리케이션이 국가 "x"에서 많은 악의적인 요청을 수신하는 경우 해당 국가의 모든 요청을 차단하는 지오매치 사용자 지정 규칙을 만듭니다. 이렇게 하면 잠재적인 공격으로부터 웹 애플리케이션을 보호하고 리소스 부하를 줄입니다. 여러 악의적이거나 적대적인 국가를 차단하려면 이 패턴을 적용합니다. 이 기술을 사용하려면 트래픽 패턴에 대한 일치 조건이 필요합니다. 국가 "x"에서 트래픽을 차단하려면 다음 포털, Bicep 및 Azure PowerShell 예제를 참조하세요.

포털 예제 - Application Gateway

Screenshot showing the application gateway add custom rule screen.

포털 예제 - Front Door

Screenshot showing the front door add custom rule screen.

Bicep 예제 - Application Gateway

properties: {
    customRules: [
      {
        name: 'GeoRule3'
        priority: 12
        ruleType: 'MatchRule'
        action: 'Block'
        matchConditions: [
          {
            matchVariables: [
              {
                variableName: 'RemoteAddr'
              }
            ]
            operator: 'GeoMatch'
            negationConditon: false
            matchValues: [
              'US'
            ]
            transforms: []
          }
        ]
        state: 'Enabled'
      }

Bicep 예제 - Front Door

properties: {
    customRules: {
      rules: [
        {
          name: 'GeoRule3'
          enabledState: 'Enabled'
          priority: 12
          ruleType: 'MatchRule'
          matchConditions: [
            {
              matchVariable: 'SocketAddr'
              operator: 'GeoMatch'
              negateCondition: false
              matchValue: [
                'US'
              ]
              transforms: []
            }
          ]
          action: 'Block'
        }

Azure PowerShell 예제 - Application Gateway

$RGname = "rg-waf "
$policyName = "waf-pol"
$variable2 = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition2 = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable2 -Operator GeoMatch -MatchValue "US" -NegationCondition $false
$rule2 = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule3 -Priority 12 -RuleType MatchRule -MatchCondition $condition2 -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule2)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy

Azure PowerShell 예제 - Front Door

$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition2 = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue "US" -NegateCondition $false
$customRuleObject2 = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule3" -RuleType MatchRule -MatchCondition $matchCondition2 -Action Block -Priority 12
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject2

지오매치 사용자 지정 규칙 안티패턴

사용자 지정 규칙 동작을 대신 block설정하는 것과 같이 지오매치 사용자 지정 규칙을 사용하는 경우 안티패턴을 방지합니다allow. 이는 트래픽이 WAF를 우회하도록 허용하고 잠재적으로 웹 애플리케이션을 다른 위협에 노출시키는 것과 같은 의도하지 않은 결과를 초래할 수 있습니다.

이전 패턴에 allow 표시된 것처럼 작업을 사용하는 대신 부정 조건이 있는 작업을 사용합니다 block . 이렇게 하면 원하는 국가의 트래픽만 허용되고 WAF는 다른 모든 트래픽을 차단합니다.

시나리오 4 - 국가 "x"의 트래픽 허용

특정 국가의 트래픽을 허용하도록 지오매치 사용자 지정 규칙을 설정하지 않습니다. 예를 들어 대규모 고객 기반으로 인해 미국 트래픽을 허용하려는 경우 작업 allow 및 값 United States 으로 사용자 지정 규칙을 만들면 솔루션처럼 보일 수 있습니다. 그러나 이 규칙은 악의적인 페이로드 allow 가 있는지 여부에 관계없이 미국 모든 트래픽을 허용합니다. 이 작업은 관리되는 규칙 집합의 추가 규칙 처리를 무시하기 때문에 허용합니다. 또한 WAF는 여전히 다른 모든 국가의 트래픽을 처리하여 리소스를 소비합니다. 이렇게 하면 WAF가 차단할 미국 악의적인 요청에 웹 애플리케이션이 노출됩니다.

시나리오 5 - "x"를 제외한 모든 카운티의 트래픽 허용

지오매치 사용자 지정 규칙을 사용할 때 규칙 동작 allow 을 설정하고 제외할 국가 목록을 지정하지 않습니다. 예를 들어 악의적인 활동이 의심되는 미국 제외한 모든 국가의 트래픽을 허용하려는 경우 이 방법은 의도하지 않은 결과를 초래할 수 있습니다. 확인되지 않거나 안전하지 않은 국가 또는 보안 표준이 낮거나 없는 국가의 트래픽을 허용하여 웹 애플리케이션이 잠재적인 취약성 또는 공격에 노출될 수 있습니다. allow 미국을 제외한 모든 국가에 대한 작업을 사용하면 관리되는 규칙 집합에 대한 요청 페이로드 처리를 중지하도록 WAF에 나타냅니다. 사용자 지정 규칙이 allow 처리되면 모든 규칙 평가가 중단되어 애플리케이션이 원치 않는 악의적인 공격에 노출됩니다.

대신 블록과 같은 보다 제한적이고 구체적인 규칙 작업을 사용하고 부정 조건으로 허용할 국가 목록을 지정합니다. 이렇게 하면 신뢰할 수 있고 확인된 원본의 트래픽만 의심스럽거나 원치 않는 트래픽을 차단하면서 웹 애플리케이션에 액세스할 수 있습니다.

다음 단계