Implantar e configurar a política de Firewall do Azure usando o Azure PowerShell
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 forma de controlar o acesso à saída de rede em uma sub-rede do Azure é com o Firewall do Azure e a política de firewall. 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.
- 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, em que o firewall é, por si só, a 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.
- AzureBastionSubnet – a sub-rede usada para Azure Bastion, que é usada para se conectar ao servidor de carga de trabalho.
Para obter mais informações sobre o Azure Bastion, confira O que é o Azure Bastion?
Importante
Os preços por hora começam a partir do momento em que o Bastion é implantado, independentemente do uso de dados de saída. Para saber mais, confira Preços e SKUs. Se estiver implantando o Bastion como parte de um tutorial ou teste, recomendamos que você exclua esse recurso após terminar de usá-lo.
Neste artigo, você aprenderá como:
- Configurar um ambiente de rede de teste
- Implantar um firewall
- Criar uma rota padrão
- Criar uma política de firewall
- Configurar 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, você poderá concluir este procedimento usando o portal do Azure.
Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Pré-requisitos
Este procedimento requer a execução do PowerShell localmente. Você deve ter os módulos do Azure PowerShell instalados. Execute Get-Module -ListAvailable Az
para encontrar a versão. Se você precisa atualizar, consulte Instalar o módulo do Azure PowerShell. Depois de verificar a versão do PowerShell, execute Connect-AzAccount
para criar uma conexão com o Azure.
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.
New-AzResourceGroup -Name Test-FW-RG -Location "East US"
Criar uma rede virtual e um host do Azure Bastion
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.
$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 o 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 um 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 da carga de trabalho e coloque-a na sub-rede apropriada. Quando solicitado, digite um nome de usuário e senha da máquina virtual.
Crie uma máquina virtual de carga de trabalho. Quando solicitado, digite um nome de usuário e senha da 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
Essa é a regra de aplicativo que permite o acesso de saída para 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 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 de política de firewall
Essa é a regra de rede que permite o acesso de saída para 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
Implantar o 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. Você o usará mais tarde quando criar a rota padrão.
Criar uma rota padrão
Criar uma tabela com a propagação de rota BGP desabilitada
$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
Altere os endereços DNS primário e secundário para o adaptador de rede Srv-Wprk
Para fins de teste neste procedimento, você vai configurar os endereços DNS primários e secundários do servidor. Isso 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 o firewall
Agora teste o firewall para confirmar se ele funciona conforme o esperado.
Conecte-se à máquina virtual Srv-Work usando o Bastion, 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 política 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
Você pode manter seus recursos de firewall para teste posterior ou, se eles não forem mais necessários, exclua o grupo de recursos Test-FW-RG para excluir todos os recursos relacionados ao firewall:
Remove-AzResourceGroup -Name Test-FW-RG