Implantar e configurar o Firewall do Azure usando o Azure PowerShell

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.
  • 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, onde o firewall está em sua própria VNet. 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.
  • AzureBastionSubnet - a sub-rede usada para o Azure Bastion, que é usada para se conectar ao servidor de carga de trabalho.

Para obter mais informações sobre o Azure Bastion, consulte O que é o Azure Bastion?

Importante

O preço por hora começa a partir do momento em que o Bastion é implantado, independentemente do uso de dados de saída. Para obter mais informações, consulte Preços e SKUs. Se você estiver implantando o Bastion como parte de um tutorial ou teste, recomendamos excluir esse recurso depois de terminar de usá-lo.

Tutorial de 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.

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

Pré-requisitos

Este procedimento requer que você execute o PowerShell localmente. Você deve ter o módulo do Azure PowerShell instalado. Executar Get-Module -ListAvailable Az para localizar a versão. Se precisar de atualizar, veja Install Azure PowerShell module (Instalar o módulo do Azure PowerShell). Depois de verificar a versão do PowerShell, execute Connect-AzAccount para criar uma ligação ao Azure.

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.

New-AzResourceGroup -Name Test-FW-RG -Location "East US"

Criar uma rede virtual e um host do Azure Bastion

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.

$Bastionsub = New-AzVirtualNetworkSubnetConfig -Name AzureBastionSubnet -AddressPrefix 10.0.0.0/27
$FWsub = New-AzVirtualNetworkSubnetConfig -Name AzureFirewallSubnet -AddressPrefix 10.0.1.0/26
$Worksub = New-AzVirtualNetworkSubnetConfig -Name Workload-SN -AddressPrefix 10.0.2.0/24

Agora, crie a rede virtual:

$testVnet = New-AzVirtualNetwork -Name Test-FW-VN -ResourceGroupName Test-FW-RG `
-Location "East US" -AddressPrefix 10.0.0.0/16 -Subnet $Bastionsub, $FWsub, $Worksub

Criar endereço IP público para o host do Azure Bastion

$publicip = New-AzPublicIpAddress -ResourceGroupName Test-FW-RG -Location "East US" `
   -Name Bastion-pip -AllocationMethod static -Sku standard

Criar host do Azure Bastion

New-AzBastion -ResourceGroupName Test-FW-RG -Name Bastion-01 -PublicIpAddress $publicip -VirtualNetwork $testVnet

Criar uma máquina virtual

Agora crie a máquina virtual de carga de trabalho e coloque-a na sub-rede apropriada. Quando lhe for pedido, escreva um nome de utilizador e palavra-passe para a máquina virtual.

Crie uma máquina virtual de carga de trabalho. Quando lhe for pedido, escreva um nome de utilizador e palavra-passe para a máquina virtual.

#Create the NIC
$wsn = Get-AzVirtualNetworkSubnetConfig -Name  Workload-SN -VirtualNetwork $testvnet
$NIC01 = New-AzNetworkInterface -Name Srv-Work -ResourceGroupName Test-FW-RG -Location "East us" -Subnet $wsn

#Define the virtual machine
$SecurePassword = ConvertTo-SecureString "<choose a password>" -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ("<choose a user name>", $SecurePassword);
$VirtualMachine = New-AzVMConfig -VMName Srv-Work -VMSize "Standard_DS2"
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName Srv-Work -ProvisionVMAgent -EnableAutoUpdate -Credential $Credential
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC01.Id
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName 'MicrosoftWindowsServer' -Offer 'WindowsServer' -Skus '2019-Datacenter' -Version latest

#Create the virtual machine
New-AzVM -ResourceGroupName Test-FW-RG -Location "East US" -VM $VirtualMachine -Verbose

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.

# Get a Public IP for the firewall
$FWpip = New-AzPublicIpAddress -Name "fw-pip" -ResourceGroupName Test-FW-RG `
  -Location "East US" -AllocationMethod Static -Sku Standard
# Create the firewall
$Azfw = New-AzFirewall -Name Test-FW01 -ResourceGroupName Test-FW-RG -Location "East US" -VirtualNetwork $testVnet -PublicIpAddress $FWpip

#Save the firewall private IP address for future use

$AzfwPrivateIP = $Azfw.IpConfigurations.privateipaddress
$AzfwPrivateIP

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

Criar uma rota predefinida

Criar uma tabela, com a propagação de rota BGP desativada

$routeTableDG = New-AzRouteTable `
  -Name Firewall-rt-table `
  -ResourceGroupName Test-FW-RG `
  -location "East US" `
  -DisableBgpRoutePropagation

#Create a route
 Add-AzRouteConfig `
  -Name "DG-Route" `
  -RouteTable $routeTableDG `
  -AddressPrefix 0.0.0.0/0 `
  -NextHopType "VirtualAppliance" `
  -NextHopIpAddress $AzfwPrivateIP `
 | Set-AzRouteTable

#Associate the route table to the subnet

Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $testVnet `
  -Name Workload-SN `
  -AddressPrefix 10.0.2.0/24 `
  -RouteTable $routeTableDG | Set-AzVirtualNetwork

Configurar uma regra de aplicação

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

$AppRule1 = New-AzFirewallApplicationRule -Name Allow-Google -SourceAddress 10.0.2.0/24 `
  -Protocol http, https -TargetFqdn www.google.com

$AppRuleCollection = New-AzFirewallApplicationRuleCollection -Name App-Coll01 `
  -Priority 200 -ActionType Allow -Rule $AppRule1

$Azfw.ApplicationRuleCollections.Add($AppRuleCollection)

Set-AzFirewall -AzureFirewall $Azfw

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).

$NetRule1 = New-AzFirewallNetworkRule -Name "Allow-DNS" -Protocol UDP -SourceAddress 10.0.2.0/24 `
   -DestinationAddress 209.244.0.3,209.244.0.4 -DestinationPort 53

$NetRuleCollection = New-AzFirewallNetworkRuleCollection -Name RCNet01 -Priority 200 `
   -Rule $NetRule1 -ActionType "Allow"

$Azfw.NetworkRuleCollections.Add($NetRuleCollection)

Set-AzFirewall -AzureFirewall $Azfw

Alterar o endereço DNS primário e secundário para a interface de rede Srv-Work

Para fins de teste neste procedimento, configure os endereços DNS primário e secundário do servidor. Este não é um requisito geral do Firewall do Azure.

$NIC01.DnsSettings.DnsServers.Add("209.244.0.3")
$NIC01.DnsSettings.DnsServers.Add("209.244.0.4")
$NIC01 | Set-AzNetworkInterface

Testar a firewall

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

  1. Conecte-se à máquina virtual Srv-Work usando Bastion e entre.

    Conecte-se usando Bastion.

  2. 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.

  3. 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:

Remove-AzResourceGroup -Name Test-FW-RG

Próximos passos