Implementar e configurar firewall Azure usando Azure PowerShell

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

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, cria-se um VNet único simplificado com três sub-redes para fácil implementação. Para implantações de produção, recomenda-se um modelo de hub e spoke, onde a firewall está no seu próprio VNet. Os servidores de carga de trabalho estão em VNets espreitados 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 utilizada para Azure Bastion, que é usada para ligar ao servidor de carga de trabalho. Para mais informações sobre Azure Bastion, veja o que é Azure Bastion?

Tutorial de infraestrutura de rede

Neste artigo, vai aprender a:

  • Configurar um ambiente de rede de teste
  • Implementar uma firewall
  • Criar uma rota predefinida
  • Configure uma regra de aplicação 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, pode concluir este procedimento utilizando o portal 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. Deve ter o módulo 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"

Crie uma rede virtual e anfitrião 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 a Azure Firewall FAQ.

$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 anfitrião do Azure Bastion

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

Criar anfitrião 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
$VirtualMachine = New-AzVMConfig -VMName Srv-Work -VMSize "Standard_DS2"
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName Srv-Work -ProvisionVMAgent -EnableAutoUpdate
$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 efémero para máquinas virtuais Azure que não são atribuídas a um endereço IP público, ou estão no pool de backend de um Balancer de Carga Básico Interno. O mecanismo IP efémero fornece um endereço IP de saída que não é configurável.

O IP efémero é desativado quando um endereço IP público é atribuído à máquina virtual ou a máquina virtual é colocada no pool de backend de um Balancer de Carga Padrão com ou sem regras de saída. Se um recurso de gateway DE REDE VIRTUAL Azure for atribuído à sub-rede da máquina virtual, o IP efémero é desativado.

Para obter mais informações sobre as ligações de saída em Azure, consulte utilizar a tradução de endereços de rede de origem (SNAT) para ligações de saída.

Implementar a firewall

Agora, insi(implantado a 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 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 da 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 da 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 efeitos de teste neste procedimento, configuure os endereços DNS primários e secundários do servidor. Isto não é um requisito geral da Azure Firewall.

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

Testar a firewall

Agora, teste a firewall para confirmar que funciona como esperado.

  1. Ligue-se à máquina virtual Srv-Work utilizando o Bastion e inscreva-se.

    Ligue-se usando Bastion.

  2. No Srv-Work, abra uma janela PowerShell e execute os seguintes comandos:

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

    Ambos os comandos devem responder, mostrando que as suas consultas de DNS estão a passar pela 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
    

    Os www.google.com pedidos devem ter sucesso, e os www.microsoft.com pedidos devem falhar. Isto demonstra que as suas regras de firewall estão a funcionar como esperado.

Então agora verificaste que as regras da firewall estão a funcionar:

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

Limpar os recursos

Pode manter os seus recursos de firewall para o próximo tutorial, ou se já não for necessário, eliminar o grupo de recursos Test-FW-RG para eliminar todos os recursos relacionados com firewall:

Remove-AzResourceGroup -Name Test-FW-RG

Passos seguintes