Compartilhar via


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.

Diagrama mostrando uma infraestrutura de rede de firewall.

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.

  1. Conecte-se à máquina virtual Srv-Work usando o Bastion, e entre.

    Conecte-se usando o Bastion.

  2. 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.

  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 solicitações www.google.com devem ter êxito e as solicitações www.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

Próximas etapas