Configurar uma regra de restrição de IP com um Firewall de Aplicativo Web para o Azure Front Door

Este artigo mostra como configurar regras de restrição de IP em um WAF (Firewall de Aplicativo Web) 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. Isso é feito especificando uma lista de endereços IP ou intervalos de endereços IP no formato CIDR (Roteamento entre Domínios sem Classificação). Há dois tipos de variáveis de correspondência de endereço IP, RemoteAddr e SocketAddr. RemoteAddr é o IP do cliente original que geralmente é enviado pelo cabeçalho da solicitação X-Forwarded-For. SocketAddr é o endereço IP de origem que o WAF reconhece. 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ê quer 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 operador como "Not" (negate é 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

Pré-requisitos

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.

Criar uma política de WAF

  1. No portal do Azure, selecione Criar um recurso, digite Firewall de Aplicativo Web na caixa de pesquisa Pesquisar serviços e o marketplace, pressione Enter e selecione WAF (Firewall de Aplicativo Web).

  2. Selecione Criar.

  3. Na página Criar uma política do WAF, use os seguintes valores para concluir 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 Front Door
    Subscription Selecionar sua assinatura
    Resource group Selecione o grupo de recursos em que Front Door está localizado.
    Nome de política Digite um nome para a política
    Estado da política selecionado
    Modo de política Prevenção
  4. Selecione Avançar: regras gerenciadas.

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

  6. Na guia Configurações de política, digite 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 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 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

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 que seguem e depois 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 um 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ê acabou de criar.

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 a 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

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 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 serã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

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