Implantar e configurar o Firewall do Azure usando a CLI do Azure
O controle do acesso à saída de rede é uma parte importante de um plano geral de segurança de rede. Por exemplo, você talvez queira limitar o acesso a sites. Ou você talvez queira limitar os endereços IP e portas de saída que podem ser acessados.
Uma maneira de controlar o acesso à saída de rede em uma sub-rede do Azure é com o Firewall do Azure. Com o Firewall do Azure, você pode configurar:
- Regras de aplicativo que definem FQDNs (nomes de domínio totalmente qualificados) que podem ser acessados em uma sub-rede. O FQDN também pode incluir instâncias SQL.
- Regras de rede que definem endereço de origem, protocolo, porta de destino e endereço de destino.
O tráfego de rede está sujeito às regras de firewall configuradas quando o tráfego de rede para o firewall foi roteado como a sub-rede de gateway padrão.
Para este artigo, você criará uma VNet individual simplificada com três sub-redes para facilitar a implantação. Para implantações de produção, é recomendado um modelo de hub e spoke. O firewall está na própria VNet. Os servidores de carga de trabalho estão em VNets emparelhadas na mesma região que uma ou mais sub-redes.
- AzureFirewallSubnet: o firewall está nesta sub-rede.
- Workload-SN: o servidor de carga de trabalho está nessa sub-rede. O tráfego de rede dessa sub-rede passa pelo firewall.
- Jump-SN -o servidor “jump” está nessa sub-rede. O servidor jump tem um endereço IP público a que você pode se conectar usando a Área de Trabalho Remota. A partir daí, você pode se conectar (usando outra Área de Trabalho Remota) ao servidor de carga de trabalho.
Neste artigo, você aprenderá como:
- Configurar um ambiente de rede de teste
- Implantar um firewall
- Criar uma rota padrão
- Configure uma regra de aplicativo para permitir acesso a www.google.com
- Configurar uma regra de rede para permitir o acesso a servidores DNS externos
- Testar o firewall
Se preferir, é possível concluir este procedimento usando o portal do Azure ou o Azure PowerShell.
Caso você não tenha uma assinatura 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, confira Início Rápido para Bash no Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
- Este artigo requer a versão 2.55.0 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.
Configurar a rede
Primeiro, crie um grupo de recursos para conter os recursos necessários à implantação do 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 não tem sub-redes.
Observação
O tamanho da sub-rede AzureFirewallSubnet é /26. Para obter mais informações sobre o tamanho da sub-rede, confira 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 jump e carga de trabalho e coloque-as nas sub-redes apropriadas. Quando solicitado, digite uma senha da 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 específicos do servidor DNS e nenhum endereço IP público com o qual 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 da 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
Observação
O Azure fornece um IP de acesso de saída padrão para VMs que não receberam um endereço IP público ou que estão no pool de back-end de um balanceador de carga do Azure básico interno. O mecanismo de 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 é desabilitado 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 da Gateway da NAT do Azure é atribuído à sub-rede da VM.
As VMs criadas por conjuntos de dimensionamento de máquinas virtuais no modo de orquestração flexível não têm acesso de saída padrão.
Para mais informações sobre conexões de saída no Azure, confira Acesso de saída padrão no Azure e Usar SNAT (conversão de endereços de rede de origem) para conexões de saída.
Implantar o 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. Você o usará mais tarde quando criar a rota padrão.
Criar uma rota padrão
Criar uma tabela de rotas com a propagação de rota 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 aplicativo
Essa é a regra de aplicativo que permite o acesso de saída para 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 Firewall do Azure inclui uma coleção de regras internas para FQDNs de infraestrutura que têm permissão por padrão. Esses FQDNs são específicos da plataforma e não podem ser usados para outras finalidades. Para saber mais, veja FQDNs de infraestrutura.
Configurar uma regra de rede
Essa é a regra de rede que permite o acesso de saída para 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 o firewall
Agora teste o firewall para confirmar se ele funciona conforme o esperado.
Anote o endereço IP privado da máquina virtual Srv-Work:
az vm list-ip-addresses \ -g Test-FW-RG \ -n Srv-Work
Conecte uma área de trabalho remota à máquina virtual Srv-Jump e entre. De lá, abra conexão de área de trabalho remota para o endereço IP privado Srv-Work e entre.
Em SRV-Work, abra uma janela do PowerShell e execute os seguintes comandos:
nslookup www.google.com nslookup www.microsoft.com
Os dois comandos devem retornar respostas, mostrando que as consultas DNS estão passando pelo firewall.
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 solicitações
www.google.com
devem ter êxito e as solicitaçõeswww.microsoft.com
devem falhar. Isso demonstra que as regras de firewall estão funcionando conforme o esperado.
Agora que você verificou se as regras de firewall estão funcionando:
- É possível resolver nomes DNS usando o servidor DNS externo configurado.
- Você pode navegar para o FQDN permitido, mas não para os outros.
Limpar os recursos
É possível manter seus recursos de firewall para o próximo tutorial ou, se não forem mais necessários, exclua o grupo de recursos Test-FW-RG para excluir todos os recursos relacionados ao firewall:
az group delete \
-n Test-FW-RG