Usar regras personalizadas de geomatch do WAF do Azure para aprimorar a segurança de rede

Os firewalls do aplicativo Web (WAFs) ajudam a proteger os aplicativos Web contra ataques prejudiciais. Eles podem filtrar, monitorar e interromper o tráfego da Web usando regras predefinidas e personalizadas. Você pode fazer sua própria regra que o WAF verifica para cada solicitação que ele obtém. As regras personalizadas têm prioridade maior do que as regras gerenciadas e são verificadas primeiro.

Um dos recursos mais poderosos do Firewall do Aplicativo Web do Azure são as regras personalizadas de geomatch. Essas regras permitem que você corresponda solicitações da Web à localização geográfica de onde elas vêm. Talvez você queira interromper solicitações de determinados locais conhecidos por atividades prejudiciais ou permitir solicitações de locais importantes para sua empresa. As regras personalizadas de geomatch também podem ajudá-lo a seguir as leis de privacidade e soberania de dados limitando o acesso aos seus aplicativos Web com base na localização das pessoas que as usam.

Use o parâmetro de prioridade com sabedoria ao usar regras personalizadas de geomatch para evitar conflitos ou processamentos desnecessários. O WAF do Azure avalia as regras na ordem determinada pelo parâmetro de prioridade, um valor numérico que varia de 1 a 100, com valores mais baixos indicando prioridade mais alta. A prioridade deve ser exclusiva em todas as regras personalizadas. Atribua prioridade mais alta a regras críticas ou específicas para a segurança do aplicativo Web e menor prioridade a regras menos essenciais ou gerais. Isso garante que o WAF aplique as ações mais apropriadas ao tráfego da Web. Por exemplo, o cenário em que você identifica um caminho de URI explícito é o mais específico e deve ter uma regra de prioridade mais alta do que outros tipos de padrões. Isso protege um caminho crítico no aplicativo com a prioridade mais alta, permitindo que o tráfego mais genérico seja avaliado em outras regras personalizadas ou conjuntos de regras gerenciados.

Para tornar o parágrafo mais fácil de entender para um público técnico usando a voz atual e ativa, você pode reescrevê-lo da seguinte maneira:

Sempre teste suas regras antes de aplicá-las à produção e monitore regularmente seu desempenho e impacto. Seguindo essas práticas recomendadas, você pode aprimorar a segurança do aplicativo Web usando o poder das regras personalizadas de geomatch.

Este artigo apresenta as regras personalizadas de geomatch do WAF do Azure e mostra como criá-las e gerenciá-las usando o portal do Azure, o Bicep e o Azure PowerShell.

Padrões de regra personalizada de geomatch

As regras personalizadas de geomatch permitem que você atenda a diversas metas de segurança, como bloquear solicitações de áreas de alto risco e permitir solicitações de locais confiáveis. Elas são particularmente eficazes na mitigação de ataques DDoS (negação de serviço distribuído), que buscam inundar seu aplicativo Web com uma infinidade de solicitações de várias fontes. Com regras personalizadas de geomatch, você pode identificar e bloquear rapidamente regiões que geram mais tráfego DDoS, ao mesmo tempo em que concede acesso a usuários legítimos. Neste artigo, você aprenderá sobre vários padrões de regra personalizada que podem ser empregados para otimizar o WAF do Azure usando regras personalizadas de geomatch.

Cenário 1: bloquear o tráfego de todos os países, exceto "X"

As regras personalizadas de geomatch são úteis quando você pretende bloquear o tráfego de todos os países, exceto um. Por exemplo, se seu aplicativo Web atende exclusivamente aos usuários nos Estados Unidos, você pode formular uma regra personalizada de geomatch que obstrui todas as solicitações que não se originam dos EUA. Essa estratégia minimiza efetivamente a superfície de ataque do aplicativo Web e impede o acesso não autorizado de outras regiões. Essa técnica específica emprega uma condição de negação para facilitar esse padrão de tráfego. Para criar uma regra personalizada de geomatch que obstrua o tráfego de todos os países, exceto os EUA, consulte os seguintes exemplos de portal, Bicep e PowerShell:

Exemplo do portal – Gateway de Aplicativo

Screenshot showing the Application Gateway WAF add custom rule screen.

Exemplo do portal – Front Door

Screenshot showing the Front Door WAF add custom rule screen.

Observação

Observe que no WAF do Azure Front Door, você usa SocketAddr como a variável de correspondência e não RemoteAddr. A variável RemoteAddr é o endereço IP do cliente original que geralmente é enviado por meio do cabeçalho da solicitação X-Forwarded-For. A variável SocketAddr é o endereço IP de origem que o WAF vê.

Exemplo de Bicep – Gateway de Aplicativo

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

Exemplo de 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'
        }

Exemplo do Azure PowerShell – Gateway de Aplicativo

$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

Exemplo do 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

Cenário 2: Bloquear o tráfego de todos os países, exceto "x" e "y" direcionados ao URI "foo" ou "bar"

Considere um cenário em que você precisa usar regras personalizadas de geomatch para bloquear o tráfego de todos os países, exceto para dois ou mais países específicos, visando um URI específico. Suponha que seu aplicativo Web tenha caminhos de URI específicos destinados somente para usuários nos EUA e Canadá. Nesse caso, você cria uma regra personalizada de geomatch que bloqueia todas as solicitações que não se originam desses países.

Esse padrão processa os conteúdos de solicitação dos EUA e do Canadá por meio dos conjuntos de regras gerenciados, capturando quaisquer ataques mal-intencionados, ao mesmo tempo em que bloqueia solicitações de todos os outros países. Essa abordagem garante que somente o público-alvo possa acessar seu aplicativo Web, evitando o tráfego indesejado de outras regiões.

Para minimizar possíveis falsos positivos, inclua o código do país ZZ na lista para capturar endereços IP ainda não mapeados para um país no conjunto de dados do Azure. Essa técnica usa uma condição de negação para o tipo Geolocalização e uma condição não negada para a correspondência de URI.

Para criar uma regra personalizada de geomatch que bloqueia o tráfego de todos os países, exceto EUA e Canadá, para um URI especificado, consulte os exemplos de portal, Bicep e Azure PowerShell fornecidos.

Exemplo do portal – Gateway de Aplicativo

Screenshot showing add custom rule for Application Gateway.

Exemplo do portal – Front Door

Screenshot showing add custom rule for Front Door.

Exemplo de Bicep – Gateway de Aplicativo

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'
      }

Exemplo de 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'
        }

Exemplo do Azure PowerShell – Gateway de Aplicativo

$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

Exemplo do 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

Cenário 3: Bloquear o tráfego especificamente do país "x"

Você pode usar regras personalizadas de geomatch para bloquear o tráfego de países específicos. Por exemplo, se seu aplicativo Web receber muitas solicitações mal-intencionadas do país "x", crie uma regra personalizada de geomatch para bloquear todas as solicitações desse país. Isso protege seu aplicativo Web contra possíveis ataques e reduz a carga de recursos. Aplique esse padrão para bloquear vários países mal-intencionados ou hostis. Essa técnica requer uma condição de correspondência para o padrão de tráfego. Para bloquear o tráfego do país "x", consulte os seguintes exemplos de portal, Bicep e Azure PowerShell.

Exemplo do portal – Gateway de Aplicativo

Screenshot showing the application gateway add custom rule screen.

Exemplo do portal – Front Door

Screenshot showing the front door add custom rule screen.

Exemplo de Bicep – Gateway de Aplicativo

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

Exemplo de 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'
        }

Exemplo do Azure PowerShell – Gateway de Aplicativo

$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

Exemplo do 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

Antipadrões de regra personalizada de geomatch

Evite antipadrões ao usar regras personalizadas de geomatch, como definir a ação allow de regra personalizada em vez de block. Isso pode ter consequências não intencionais, como permitir que o tráfego ignore o WAF e potencialmente expor seu aplicativo Web a outras ameaças.

Em vez de usar uma ação allow, use uma ação block com uma condição de negação, conforme mostrado em padrões anteriores. Isso garante que somente o tráfego de países desejados seja permitido e o WAF bloqueie todo o tráfego.

Cenário 4: Permitir o tráfego do país "x"

Evite definir a regra personalizada de geomatch para permitir o tráfego de um país específico. Por exemplo, se você quiser permitir o tráfego dos Estados Unidos devido a uma grande base de clientes, criar uma regra personalizada com a ação allow e o valor United States pode ser a solução. No entanto, essa regra permite todo o tráfego dos Estados Unidos, independentemente de ter um conteúdo mal-intencionado ou não, pois a ação allow ignora o processamento de regras adicionais de conjuntos de regras gerenciados. Além disso, o WAF ainda processa o tráfego de todos os outros países, consumindo recursos. Isso expõe seu aplicativo Web a solicitações mal-intencionadas dos Estados Unidos que o WAF bloquearia de outra forma.

Cenário 5: Permitir o tráfego de todos os condados, exceto "x"

Evite definir a ação de regra allow e especificar uma lista de países a serem excluídos ao usar regras personalizadas de geomatch. Por exemplo, se você quiser permitir o tráfego de todos os países, exceto os Estados Unidos, onde você suspeita de atividades mal-intencionadas, essa abordagem pode ter consequências não intencionais. Ela pode permitir o tráfego de países não verificados ou não seguros com padrões de segurança baixos ou sem padrões de segurança, expondo seu aplicativo Web a possíveis vulnerabilidades ou ataques. Usar a ação allow para todos os países, exceto os EUA, indica ao WAF para interromper o processamento de cargas de solicitação em conjuntos de regras gerenciados. Toda a avaliação de regra é interrompida quando a regra personalizada com allow é processada, expondo o aplicativo a ataques mal-intencionados indesejados.

Em vez disso, use uma ação de regra mais restritiva e específica, como bloquear, e especifique uma lista de países para permitir com uma condição de negação. Isso garante que somente o tráfego de fontes confiáveis e verificadas possa acessar seu aplicativo Web, bloqueando qualquer tráfego suspeito ou indesejado.

Próximas etapas