Configurar uma regra de restrição de IP com um WAF para o Azure Front Door

Este artigo mostra como configurar regras de restrição de IP em um firewall do aplicativo Web (WAF) para o Azure Front Door usando o portal do Azure, a CLI do Azure, o Azure PowerShell ou um modelo do Azure Resource Manager.

Uma regra de controle de acesso baseada em endereço IP é uma regra do WAF personalizada que permite controlar o acesso aos aplicativos Web. A regra especifica uma lista de endereços IP ou intervalos de endereços IP no formato Roteamento entre Domínios sem Classificação (CIDR).

Há dois tipos de variáveis de correspondência em uma correspondência de endereço IP: RemoteAddr e SocketAddr. A variável RemoteAddr é 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ê. Quando o usuário está protegido por um proxy, o SocketAddr geralmente é o endereço do servidor proxy.

Por padrão, o aplicativo Web pode ser acessado pela Internet. Se você quiser limitar o acesso a clientes de uma lista de endereços IP ou de intervalos de endereços IP conhecidos, crie uma regra de correspondência de IP que contenha a lista de endereços IP como valores correspondentes e defina o operador como Not (negação é true) e a ação como Block. Depois que uma regra de restrição de IP é aplicada, as solicitações originadas de endereços fora dessa lista de permissão recebem uma resposta 403 Proibido.

Configurar uma política do WAF com o portal do Azure

Siga estas etapas para configurar uma política de WAF usando o portal do Azure.

Pré-requisitos

Crie um perfil do Azure Front Door seguindo as instruções descritas em Guia de início rápido: criar uma instância do Azure Front Door para um aplicativo Web global altamente disponível.

Criar uma política de WAF

  1. No portal do Azure, selecione Criar um recurso. Insira Firewall do aplicativo Web na caixa de pesquisa Serviços de pesquisa e marketplace e selecione Enter. Em seguida, selecione Firewall de Aplicativo Web (WAF).

  2. Selecione Criar.

  3. Na página Criar uma política do WAF, use os seguintes valores para completar a guia Básico.

    Configuração Valor
    Política para WAF global (Front Door).
    Camada do Front Door Selecione Premium ou Standard para corresponder à camada do Azure Front Door.
    Subscription Selecione sua assinatura.
    Resource group Selecione o grupo de recursos em que sua instância do Azure Front Door está localizada.
    Nome de política Insira um nome para sua política.
    Estado da política Selecionado.
    Modo de política Prevenção.
  4. Selecione Próximo: Regras gerenciadas.

  5. Selecione Próximo: configurações de política.

  6. Na guia Configurações de política, insira Você foi bloqueado! no Corpo da resposta de bloqueio para ver se a regra personalizada está em vigor.

  7. Selecione Próximo: Regras personalizadas.

  8. Selecione Adicionar regra personalizada.

  9. Na página Adicionar regra personalizada, use os seguintes valores de teste para criar uma regra personalizada.

    Configuração Valor
    Nome da regra personalizada FdWafCustRule
    Status habilitado
    Tipo de regra Corresponder a
    Prioridade 100
    Tipo de correspondência Endereço IP
    Variável de correspondência SocketAddr
    Operação Não contém
    Endereço IP ou intervalo de IP 10.10.10.0/24
    Então Negar tráfego

    Regra personalizada

    Selecione Adicionar.

  10. Selecione Próximo: Associação.

  11. Selecione Associar um perfil do Front Door.

  12. Em Perfil de front-end, selecione o seu perfil de front-end.

  13. Em Domínio, selecione o domínio.

  14. Selecione Adicionar.

  15. Selecione Examinar + criar.

  16. Após a aprovação da validação da política, selecione Criar.

Testar a política do WAF

  1. Depois que a implantação da política do WAF for concluída, navegue até o nome do host de front-end do Azure Front Door.

  2. Você verá a mensagem de bloqueio personalizada.

    Teste da regra do WAF

    Observação

    Um endereço IP privado foi usado intencionalmente na regra personalizada para garantir que a regra seja disparada. Em uma implantação real, crie regras de permissão e negação usando endereços IP para sua situação específica.

Configurar uma política do WAF com a CLI do Azure

Siga estas etapas para configurar uma política de WAF usando a CLI do Azure.

Pré-requisitos

Antes de começar a configurar uma política de restrição de IP, configure o ambiente da CLI e crie um perfil do Azure Front Door.

Configurar o ambiente da CLI do Azure

  1. Instale a CLI do Azure ou use o Azure Cloud Shell. O Azure Cloud Shell é um shell Bash gratuito que pode ser executado diretamente no portal do Azure. Ele tem a CLI do Azure instalada e configurada para usar com sua conta. Selecione o botão Experimentar nos comandos da CLI a seguir. Em seguida, entre na sua conta do Azure na sessão do Cloud Shell que é aberta. Depois que a sessão for iniciada, insira az extension add --name front-door para adicionar a extensão do Azure Front Door.
  2. Se você está usando a CLI localmente no Bash, entre no Azure com az login.

Criar um perfil do Azure Front Door

Crie um perfil do Azure Front Door seguindo as instruções descritas em Guia de início rápido: criar uma instância do Azure Front Door para um aplicativo Web global altamente disponível.

Criar uma política de WAF

Crie uma política do WAF usando o comando az network front-door waf-policy create. No exemplo a seguir, substitua o nome da política IPAllowPolicyExampleCLI por um nome de política exclusivo.

az network front-door waf-policy create \
  --resource-group <resource-group-name> \
  --subscription <subscription ID> \
  --name IPAllowPolicyExampleCLI

Adicionar uma regra de controle de acesso de IP personalizada

Use o comando az network front-door waf-policy custom-rule create para adicionar uma regra de controle de acesso de IP personalizada para a política do WAF que você criou.

Nos seguintes exemplos:

  • Substitua IPAllowPolicyExampleCLI pela sua política exclusiva já criada.
  • Substitua ip-address-range-1, ip-address-range-2 pelo seu intervalo.

Primeiro, crie uma regra de permissão de IP para a política criada na etapa anterior.

Observação

--defer é necessário porque uma regra precisa ter uma condição de correspondência para ser adicionada na próxima etapa.

az network front-door waf-policy rule create \
  --name IPAllowListRule \
  --priority 1 \
  --rule-type MatchRule \
  --action Block \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI --defer

Depois, adicione uma condição de correspondência à regra:

az network front-door waf-policy rule match-condition add \
--match-variable SocketAddr \
--operator IPMatch \
--values "ip-address-range-1" "ip-address-range-2" \
--negate true \
--name IPAllowListRule \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI

Localizar a ID de uma política do WAF

Localize a ID de uma política do WAF usando o comando az network front-door waf-policy show. Substitua IPAllowPolicyExampleCLI no exemplo a seguir pela sua política exclusiva já criada.

az network front-door  waf-policy show \
  --resource-group <resource-group-name> \
  --name IPAllowPolicyExampleCLI

Defina a ID WebApplicationFirewallPolicyLink do Azure Front Door como a ID da política usando o comando az network front-door update. Substitua IPAllowPolicyExampleCLI pela sua política exclusiva que você já criou.

az network front-door update \
  --set FrontendEndpoints[0].WebApplicationFirewallPolicyLink.id=/subscriptions/<subscription ID>/resourcegroups/resource-group-name/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/IPAllowPolicyExampleCLI \
  --name <frontdoor-name> \
  --resource-group <resource-group-name>

Neste exemplo, a política do WAF é aplicada a FrontendEndpoints[0] . Você pode vincular a política do WAF a qualquer um dos seus front-ends.

Observação

Você precisa definir a propriedade WebApplicationFirewallPolicyLink uma só vez para vincular uma política do WAF a um host de front-end do Azure Front Door. As próximas atualizações da política serão aplicadas automaticamente ao front-end.

Configurar uma política do WAF com o Azure PowerShell

Siga estas etapas para configurar uma política de WAF usando o Azure PowerShell.

Pré-requisitos

Antes de começar a configurar uma política de restrição de IP, configure o ambiente do PowerShell e crie um perfil do Azure Front Door.

Configurar o ambiente do PowerShell

O Azure PowerShell fornece um conjunto de cmdlets que usam o modelo do Azure Resource Manager para gerenciar os recursos do Azure.

Você pode instalar o Azure PowerShell no computador local e usá-lo em qualquer sessão do PowerShell. Siga as instruções na página para entrar no PowerShell usando suas credenciais do Azure e, em seguida, instale o módulo Az.

  1. Conecte-se com o Azure usando o comando a seguir e depois use uma caixa de diálogo interativa para entrar.

    Connect-AzAccount
    
  2. Antes de instalar um módulo do Azure Front Door, verifique se a versão atual do módulo PowerShellGet está instalada. Execute o comando a seguir e reabra o PowerShell.

    Install-Module PowerShellGet -Force -AllowClobber
    
  3. Instale o módulo Az.FrontDoor usando o comando a seguir:

    Install-Module -Name Az.FrontDoor
    

Criar um perfil do Azure Front Door

Crie um perfil do Azure Front Door seguindo as instruções descritas em Guia de início rápido: Criar um Front Door para um aplicativo Web global altamente disponível.

Definir uma condição de correspondência de IP

Use o comando New-AzFrontDoorWafMatchConditionObject para definir uma condição de correspondência de IP. No exemplo a seguir, substitua ip-address-range-1, ip-address-range-2 pelo seu intervalo.

$IPMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable  SocketAddr `
-OperatorProperty IPMatch `
-MatchValue "ip-address-range-1", "ip-address-range-2"
-NegateCondition 1

Criar uma regra de permissão de IP personalizada

Use o comando New-AzFrontDoorWafCustomRuleObject para definir uma ação e uma prioridade. No exemplo a seguir, as solicitações que não sejam dos IPs de clientes que correspondem à lista são bloqueadas.

$IPAllowRule = New-AzFrontDoorWafCustomRuleObject `
-Name "IPAllowRule" `
-RuleType MatchRule `
-MatchCondition $IPMatchCondition `
-Action Block -Priority 1

Configurar uma política do WAF

Encontre o nome do grupo de recursos que contém o perfil do Azure Front Door usando Get-AzResourceGroup. Depois, configure uma política do WAF com a regra de IP usando New-AzFrontDoorWafPolicy.

  $IPAllowPolicyExamplePS = New-AzFrontDoorWafPolicy `
    -Name "IPRestrictionExamplePS" `
    -resourceGroupName <resource-group-name> `
    -Customrule $IPAllowRule`
    -Mode Prevention `
    -EnabledState Enabled

Dica

Para uma política de WAF existente, você pode usar Update-AzFrontDoorWafPolicy para atualizar a política.

Vincule um objeto de política do WAF a um host de front-end existente e atualize as propriedades do Azure Front Door. Primeiro, recupere o objeto Azure Front Door usando Get-AzFrontDoor. Depois, defina a propriedade WebApplicationFirewallPolicyLink como a ID do recurso $IPAllowPolicyExamplePS, criada na etapa anterior, usando o comando Set-AzFrontDoor.

  $FrontDoorObjectExample = Get-AzFrontDoor `
    -ResourceGroupName <resource-group-name> `
    -Name $frontDoorName
  $FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $IPBlockPolicy.Id
  Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]

Observação

Neste exemplo, a política do WAF é aplicada a FrontendEndpoints[0] . Você pode vincular uma política do WAF a qualquer um dos seus front-ends. Você precisa definir a propriedade WebApplicationFirewallPolicyLink uma só vez para vincular uma política do WAF a um host de front-end do Azure Front Door. As próximas atualizações da política serão aplicadas automaticamente ao front-end.

Configurar uma política do WAF com um modelo do Resource Manager

Para ver o modelo que cria uma política do Azure Front Door e uma política do WAF com regras de restrição de IP personalizadas, acesse GitHub.

Próximas etapas

Saiba como Criar um perfil do Azure Front Door.