Partilhar via


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.

Diagrama que mostra uma infraestrutura de rede de firewall.

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.

  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.

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

Próximos passos