Implantar e configurar o Firewall do Azure usando a CLI do Azure

Controlar o acesso de rede de saída é uma parte importante de um plano de segurança de rede geral. Por exemplo, você pode querer limitar o acesso a sites. Ou, você pode querer limitar os endereços IP de saída e portas que podem ser acessadas.

Uma forma de controlar o acesso de rede de saída a partir de uma sub-rede do Azure é com a Azure Firewall. Com a Azure Firewall, pode configurar:

  • Regras da aplicação que definem nomes de domínio completamente qualificado (FQDNs) que podem ser acedidos a partir de uma sub-rede. O FQDN também pode incluir instâncias SQL.
  • Regras de rede que definem o endereço de origem, o protocolo, a porta de destino e o endereço de destino.

O tráfego de rede está sujeito às regras de firewall configuradas quando encaminha o tráfego de rede para a firewall como o gateway padrão de sub-rede.

Para este artigo, você cria uma única VNet simplificada com três sub-redes para facilitar a implantação. Para implantações de produção, recomenda-se um modelo de hub e spoke. O firewall está em sua própria rede virtual. Os servidores de carga de trabalho estão em redes virtuais emparelhadas na mesma região com uma ou mais sub-redes.

  • AzureFirewallSubnet - a firewall está nesta sub-rede.
  • Workload-SN - o servidor de carga de trabalho está nesta sub-rede. O tráfego de rede desta sub-rede passa pela firewall.
  • Jump-SN - o servidor “de ligação” está nesta sub-rede. O servidor de ligação tem um endereço IP público ao qual pode ligar com o Ambiente de Trabalho Remoto. A partir daí, pode ligar (com outro Ambiente de Trabalho Remoto) ao servidor de carga de trabalho.

Diagrama da infraestrutura de rede.

Neste artigo, vai aprender a:

  • Configurar um ambiente de rede de teste
  • Implementar uma firewall
  • Criar uma rota predefinida
  • Configurar uma regra de aplicativo para permitir o acesso a www.google.com
  • Configurar uma regra de rede para permitir o acesso aos servidores DNS externos
  • Testar a firewall

Se preferir, você pode concluir este procedimento usando o portal do Azure ou o Azure PowerShell.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

  • Este artigo requer a versão 2.55.0 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

Configurar a rede

Em primeiro lugar, crie um grupo de recursos para conter os recursos necessários para implementar a firewall. Em seguida, crie uma VNet, sub-redes e servidores de teste.

Criar um grupo de recursos

O grupo de recursos contém todos os recursos para a implantação.

az group create --name Test-FW-RG --location eastus

Criar uma VNet

Esta rede virtual tem três sub-redes.

Nota

O tamanho da sub-rede AzureFirewallSubnet é /26. Para obter mais informações sobre o tamanho da sub-rede, consulte Perguntas frequentes sobre o Firewall do Azure.

az network vnet create \
  --name Test-FW-VN \
  --resource-group Test-FW-RG \
  --location eastus \
  --address-prefix 10.0.0.0/16 \
  --subnet-name AzureFirewallSubnet \
  --subnet-prefix 10.0.1.0/26
az network vnet subnet create \
  --name Workload-SN \
  --resource-group Test-FW-RG \
  --vnet-name Test-FW-VN   \
  --address-prefix 10.0.2.0/24
az network vnet subnet create \
  --name Jump-SN \
  --resource-group Test-FW-RG \
  --vnet-name Test-FW-VN   \
  --address-prefix 10.0.3.0/24

Criar máquinas virtuais

Agora, crie as máquinas virtuais de ligação e de carga de trabalho, e coloque-as nas sub-redes adequadas. Quando solicitado, digite uma senha para a máquina virtual.

Crie a máquina virtual Srv-Jump.

az vm create \
    --resource-group Test-FW-RG \
    --name Srv-Jump \
    --location eastus \
    --image win2016datacenter \
    --vnet-name Test-FW-VN \
    --subnet Jump-SN \
    --admin-username azureadmin
az vm open-port --port 3389 --resource-group Test-FW-RG --name Srv-Jump

Crie uma NIC para Srv-Work com endereços IP de servidor DNS específicos e nenhum endereço IP público para testar.

az network nic create \
    -g Test-FW-RG \
    -n Srv-Work-NIC \
   --vnet-name Test-FW-VN \
   --subnet Workload-SN \
   --public-ip-address "" \
   --dns-servers 209.244.0.3 209.244.0.4

Agora crie a máquina virtual de carga de trabalho. Quando solicitado, digite uma senha para a máquina virtual.

az vm create \
    --resource-group Test-FW-RG \
    --name Srv-Work \
    --location eastus \
    --image win2016datacenter \
    --nics Srv-Work-NIC \
    --admin-username azureadmin

Nota

O Azure fornece um IP de acesso de saída padrão para VMs que não recebem um endereço IP público ou estão no pool de back-end de um balanceador de carga básico interno do Azure. O mecanismo IP de acesso de saída padrão fornece um endereço IP de saída que não é configurável.

O IP de acesso de saída padrão é desativado quando um dos seguintes eventos acontece:

  • Um endereço IP público é atribuído à VM.
  • A VM é colocada no pool de back-end de um balanceador de carga padrão, com ou sem regras de saída.
  • Um recurso do Gateway NAT do Azure é atribuído à sub-rede da VM.

As VMs que você cria usando conjuntos de dimensionamento de máquina virtual no modo de orquestração flexível não têm acesso de saída padrão.

Para obter mais informações sobre conexões de saída no Azure, consulte Acesso de saída padrão no Azure e Usar SNAT (Conversão de Endereço de Rede de Origem) para conexões de saída.

Implementar a firewall

Agora implante o firewall na rede virtual.

az network firewall create \
    --name Test-FW01 \
    --resource-group Test-FW-RG \
    --location eastus
az network public-ip create \
    --name fw-pip \
    --resource-group Test-FW-RG \
    --location eastus \
    --allocation-method static \
    --sku standard
az network firewall ip-config create \
    --firewall-name Test-FW01 \
    --name FW-config \
    --public-ip-address fw-pip \
    --resource-group Test-FW-RG \
    --vnet-name Test-FW-VN
az network firewall update \
    --name Test-FW01 \
    --resource-group Test-FW-RG 
az network public-ip show \
    --name fw-pip \
    --resource-group Test-FW-RG
fwprivaddr="$(az network firewall ip-config list -g Test-FW-RG -f Test-FW01 --query "[?name=='FW-config'].privateIpAddress" --output tsv)"

Anote o endereço IP privado. Vai utilizá-lo mais tarde quando criar a rota predefinida.

Criar uma rota predefinida

Criar uma tabela de rotas, com a propagação de rotas BGP desabilitada

az network route-table create \
    --name Firewall-rt-table \
    --resource-group Test-FW-RG \
    --location eastus \
    --disable-bgp-route-propagation true

Crie a rota.

az network route-table route create \
  --resource-group Test-FW-RG \
  --name DG-Route \
  --route-table-name Firewall-rt-table \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address $fwprivaddr

Associar a tabela de rotas à sub-rede

az network vnet subnet update \
    -n Workload-SN \
    -g Test-FW-RG \
    --vnet-name Test-FW-VN \
    --address-prefixes 10.0.2.0/24 \
    --route-table Firewall-rt-table

Configurar uma regra de aplicação

A regra de aplicação permite o acesso de saída a www.google.com.

az network firewall application-rule create \
   --collection-name App-Coll01 \
   --firewall-name Test-FW01 \
   --name Allow-Google \
   --protocols Http=80 Https=443 \
   --resource-group Test-FW-RG \
   --target-fqdns www.google.com \
   --source-addresses 10.0.2.0/24 \
   --priority 200 \
   --action Allow

O Azure Firewall inclui uma coleção de regras incorporadas para os FQDNs de infraestrutura que são permitidos por predefinição. Estes FQDNs são específicos da plataforma e não podem ser utilizados para outros fins. Para obter mais informações, veja FQDNs de Infraestrutura.

Configurar uma regra de rede

A regra de rede permite o acesso de saída a dois endereços IP na porta 53 (DNS).

az network firewall network-rule create \
   --collection-name Net-Coll01 \
   --destination-addresses 209.244.0.3 209.244.0.4 \
   --destination-ports 53 \
   --firewall-name Test-FW01 \
   --name Allow-DNS \
   --protocols UDP \
   --resource-group Test-FW-RG \
   --priority 200 \
   --source-addresses 10.0.2.0/24 \
   --action Allow

Testar a firewall

Agora, teste o firewall para confirmar se ele funciona conforme o esperado.

  1. Observe o endereço IP privado para a máquina virtual Srv-Work :

    az vm list-ip-addresses \
    -g Test-FW-RG \
    -n Srv-Work
    
  2. Conecte uma área de trabalho remota à máquina virtual Srv-Jump e entre. A partir daí, abra uma conexão de área de trabalho remota para o endereço IP privado Srv-Work e faça login.

  3. No SRV-Work, abra uma janela do PowerShell e execute os seguintes comandos:

    nslookup www.google.com
    nslookup www.microsoft.com
    

    Ambos os comandos devem retornar respostas, mostrando que suas consultas DNS estão passando pelo firewall.

  4. Execute os seguintes comandos:

    Invoke-WebRequest -Uri https://www.google.com
    Invoke-WebRequest -Uri https://www.google.com
    
    Invoke-WebRequest -Uri https://www.microsoft.com
    Invoke-WebRequest -Uri https://www.microsoft.com
    

    As www.google.com solicitações devem ser bem-sucedidas e as www.microsoft.com solicitações devem falhar. Isso demonstra que suas regras de firewall estão funcionando conforme o esperado.

Então, agora você verificou que as regras de firewall estão funcionando:

  • Pode resolver nomes DNS com o servidor DNS externo configurado.
  • Pode navegar para o único FQDN permitido, mas não para quaisquer outros.

Clean up resources (Limpar recursos)

Você pode manter seus recursos de firewall para o próximo tutorial ou, se não for mais necessário, excluir o grupo de recursos Test-FW-RG para excluir todos os recursos relacionados ao firewall:

az group delete \
  -n Test-FW-RG

Próximos passos