Implantar e configurar a política do 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 maneira de controlar o acesso à rede de saída de uma sub-rede do Azure é com o Firewall do Azure e a Política de 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.
Neste artigo, vai aprender a:
- Configurar um ambiente de rede de teste
- Implementar uma firewall
- Criar uma rota predefinida
- Criar uma política de firewall
- 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
$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
Criar uma política de firewall
$fwpol = New-AzFirewallPolicy -Name fw-pol -ResourceGroupName Test-FW-RG -Location eastus
Configurar uma regra de aplicativo de política de firewall
A regra de aplicativo permite o acesso de saída ao www.google.com
.
$RCGroup = New-AzFirewallPolicyRuleCollectionGroup -Name AppRCGroup -Priority 100 -FirewallPolicyObject $fwpol
$apprule1 = New-AzFirewallPolicyApplicationRule -Name Allow-google -SourceAddress "10.0.2.0/24" -Protocol "http:80","https:443" -TargetFqdn www.google.com
$appcoll1 = New-AzFirewallPolicyFilterRuleCollection -Name App-coll01 -Priority 100 -Rule $appRule1 -ActionType "Allow"
Set-AzFirewallPolicyRuleCollectionGroup -Name $RCGroup.Name -Priority 100 -RuleCollection $appcoll1 -FirewallPolicyObject $fwPol
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 de política de firewall
A regra de rede permite o acesso de saída a dois endereços IP na porta 53 (DNS).
$RCGroup = New-AzFirewallPolicyRuleCollectionGroup -Name NetRCGroup -Priority 200 -FirewallPolicyObject $fwpol
$netrule1 = New-AzFirewallPolicyNetworkRule -name Allow-DNS -protocol UDP -sourceaddress 10.0.2.0/24 -destinationaddress 209.244.0.3,209.244.0.4 -destinationport 53
$netcoll1 = New-AzFirewallPolicyFilterRuleCollection -Name Net-coll01 -Priority 200 -Rule $netrule1 -ActionType "Allow"
Set-AzFirewallPolicyRuleCollectionGroup -Name $RCGroup.Name -Priority 200 -RuleCollection $netcoll1 -FirewallPolicyObject $fwPol
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 -FirewallPolicyId $fwpol.Id
#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
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.
Conecte-se à máquina virtual Srv-Work usando Bastion e entre.
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.
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 aswww.microsoft.com
solicitações devem falhar. Isso demonstra que suas regras de firewall estão funcionando conforme o esperado.
Portanto, agora você verificou se as regras da política 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 testes adicionais 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