Implementar e configurar Azure Firewall utilizando 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?
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 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 a 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 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 de acesso de saída predefinido para VMs que não são atribuídos um endereço IP público ou estão no pool back-end de um equilibrador de carga básico interno. 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 por defeito é desativado quando um endereço IP público é atribuído ao VM, o VM é colocado no pool back-end de um equilibrador de carga padrão, com ou sem regras de saída, ou se um recurso de gateway Azure Rede Virtual NAT for atribuído à sub-rede do VM.
Os VMs que são criados por conjuntos de escala de máquina virtual em modo de orquestração flexível não têm acesso de saída padrão.
Para obter mais informações sobre as ligações de saída em Azure, consulte o acesso de saída padrão em Azure e Use a tradução de endereços de rede de origem (SNAT) para ligações de saída.
Implementar a firewall
Agora, insi(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 no porto 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 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.
Ligue-se à máquina virtual Srv-Work utilizando o Bastion e faça o seu s signatário.
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.
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 oswww.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