Filtrar tráfego com um grupo de segurança de rede utilizando o PowerShell

É possível filtrar o tráfego para entrada e saída de uma sub-rede de rede virtual com um grupo de segurança de rede. Grupos de segurança de rede contêm regras de segurança que filtram o tráfego por endereço IP, porta e protocolo. As regras de segurança são aplicadas aos recursos implantados em uma sub-rede. Neste artigo, você aprenderá como:

  • Criar um grupo de segurança de rede e regras de segurança
  • Criar uma rede virtual e associar um grupo de segurança de rede a uma sub-rede
  • Implantar VMs (máquinas virtuais) em uma sub-rede
  • Testar filtros de tráfego

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Azure Cloud Shell

O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que pode ser usado por meio do navegador. É possível usar o bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. É possível usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada no seu ambiente local.

Para iniciar o Azure Cloud Shell:

Opção Exemplo/Link
Selecione Experimentar no canto superior direito de um bloco de código ou de comando. Selecionar Experimentar não copia automaticamente o código nem o comando para o Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador. Button to launch Azure Cloud Shell.
Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Para usar o Azure Cloud Shell:

  1. Inicie o Cloud Shell.

  2. Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou o comando.

  3. Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e no Linux, ou selecionando Cmd+Shift+V no macOS.

  4. Selecione Enter para executar o código ou o comando.

Se você optar por instalar e usar o PowerShell localmente, este artigo exigirá o módulo do Azure PowerShell versão 1.0.0 ou posterior. Execute Get-Module -ListAvailable Az para localizar a versão instalada. Se você precisa atualizar, consulte Instalar o módulo do Azure PowerShell. Se você estiver executando o PowerShell localmente, também precisará executar o Connect-AzAccount para criar uma conexão com o Azure.

Criar um grupo de segurança de rede

Um grupo de segurança de rede contém regras de segurança. As regras de segurança especificam uma origem e um destino. Origens e destinos podem ser grupos de segurança de aplicativos.

Criar grupos de segurança de aplicativos

Primeiro, crie um grupo de recursos para todos os recursos criados neste artigo com New-AzResourceGroup. O exemplo a seguir cria um grupo de recursos no local eastus:

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Crie um grupo de segurança de aplicativo com New-AzureRmApplicationSecurityGroup. Um grupo de segurança de aplicativos permite agrupar servidores com requisitos de filtragem de porta semelhantes. O exemplo a seguir cria dois grupos de segurança de aplicativos.

$webAsg = New-AzApplicationSecurityGroup `
  -ResourceGroupName myResourceGroup `
  -Name myAsgWebServers `
  -Location eastus

$mgmtAsg = New-AzApplicationSecurityGroup `
  -ResourceGroupName myResourceGroup `
  -Name myAsgMgmtServers `
  -Location eastus

Criar regras de segurança

Crie uma regra de segurança com New-AzNetworkSecurityRuleConfig. O exemplo a seguir cria uma regra que permite a entrada de tráfego da Internet para o grupo de segurança de aplicativo myWebServers pelas portas 80 e 443:

$webRule = New-AzNetworkSecurityRuleConfig `
  -Name "Allow-Web-All" `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 100 `
  -SourceAddressPrefix Internet `
  -SourcePortRange * `
  -DestinationApplicationSecurityGroupId $webAsg.id `
  -DestinationPortRange 80,443

The following example creates a rule that allows traffic inbound from the internet to the *myMgmtServers* application security group over port 3389:

$mgmtRule = New-AzNetworkSecurityRuleConfig `
  -Name "Allow-RDP-All" `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 110 `
  -SourceAddressPrefix Internet `
  -SourcePortRange * `
  -DestinationApplicationSecurityGroupId $mgmtAsg.id `
  -DestinationPortRange 3389

Neste artigo, o RDP (porta 3389) é exposto à Internet para a VM myAsgMgmtServers. Para ambientes de produção, em vez de expor a porta 3389 à Internet, é recomendável conectar os recursos do Azure que você quer gerenciar utilizando uma conexão de rede VPN ou privada.

Criar um grupo de segurança de rede

Crie um grupo de segurança de rede com New-AzNetworkSecurityGroup. O exemplo a seguir cria um grupo de segurança de rede nomeado myNsg:

$nsg = New-AzNetworkSecurityGroup `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -Name myNsg `
  -SecurityRules $webRule,$mgmtRule

Criar uma rede virtual

Crie uma rede virtual com New-AzVirtualNetwork. O exemplo a seguir cria uma virtual nomeada myVirtualNetwork:

$virtualNetwork = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork `
  -AddressPrefix 10.0.0.0/16

Crie uma configuração de sub-rede com New-AzVirtualNetworkSubnetConfig e grave a configuração de sub-rede na rede virtual com Set-AzVirtualNetwork. O exemplo a seguir adiciona uma sub-rede nomeada mySubnet à rede virtual e associa o grupo de segurança de rede myNsg a ela:

Add-AzVirtualNetworkSubnetConfig `
  -Name mySubnet `
  -VirtualNetwork $virtualNetwork `
  -AddressPrefix "10.0.2.0/24" `
  -NetworkSecurityGroup $nsg
$virtualNetwork | Set-AzVirtualNetwork

Criar máquinas virtuais

Antes de criar as VMs, recupere o objeto de rede virtual com a sub-rede com Get-AzVirtualNetwork:

$virtualNetwork = Get-AzVirtualNetwork `
 -Name myVirtualNetwork `
 -Resourcegroupname myResourceGroup

Crie um endereço IP público para cada VM com New-AzPublicIpAddress:

$publicIpWeb = New-AzPublicIpAddress `
  -AllocationMethod Dynamic `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -Name myVmWeb

$publicIpMgmt = New-AzPublicIpAddress `
  -AllocationMethod Dynamic `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -Name myVmMgmt

Crie dois adaptadores de rede com New-AzNetworkInterface e atribua um endereço IP público aos adaptadores de rede. O exemplo a seguir cria um adaptador de rede, associa o endereço IP público myVmWeb a ele e o transforma em um membro do grupo de segurança de aplicativo myAsgWebServers:

$webNic = New-AzNetworkInterface `
  -Location eastus `
  -Name myVmWeb `
  -ResourceGroupName myResourceGroup `
  -SubnetId $virtualNetwork.Subnets[0].Id `
  -ApplicationSecurityGroupId $webAsg.Id `
  -PublicIpAddressId $publicIpWeb.Id

O exemplo a seguir cria um adaptador de rede, associa o endereço IP público myVmMgmt a ele e o transforma em um membro do grupo de segurança de aplicativo myAsgMgmtServers:

$mgmtNic = New-AzNetworkInterface `
  -Location eastus `
  -Name myVmMgmt `
  -ResourceGroupName myResourceGroup `
  -SubnetId $virtualNetwork.Subnets[0].Id `
  -ApplicationSecurityGroupId $mgmtAsg.Id `
  -PublicIpAddressId $publicIpMgmt.Id

Crie duas VMs na rede virtual para poder validar a filtragem de tráfego em uma etapa posterior.

Crie uma configuração de VM com New-AzVMConfig e crie a VM com New-AzVM. O exemplo a seguir cria uma VM que servirá como um servidor Web. A opção -AsJob cria a VM em segundo plano, para que você possa prosseguir para a próxima etapa:

# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."

$webVmConfig = New-AzVMConfig `
  -VMName myVmWeb `
  -VMSize Standard_DS1_V2 | `
Set-AzVMOperatingSystem -Windows `
  -ComputerName myVmWeb `
  -Credential $cred | `
Set-AzVMSourceImage `
  -PublisherName MicrosoftWindowsServer `
  -Offer WindowsServer `
  -Skus 2016-Datacenter `
  -Version latest | `
Add-AzVMNetworkInterface `
  -Id $webNic.Id
New-AzVM `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -VM $webVmConfig `
  -AsJob

Crie uma VM para servir como um servidor de gerenciamento:

# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."

# Create the web server virtual machine configuration and virtual machine.
$mgmtVmConfig = New-AzVMConfig `
  -VMName myVmMgmt `
  -VMSize Standard_DS1_V2 | `
Set-AzVMOperatingSystem -Windows `
  -ComputerName myVmMgmt `
  -Credential $cred | `
Set-AzVMSourceImage `
  -PublisherName MicrosoftWindowsServer `
  -Offer WindowsServer `
  -Skus 2016-Datacenter `
  -Version latest | `
Add-AzVMNetworkInterface `
  -Id $mgmtNic.Id
New-AzVM `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -VM $mgmtVmConfig

A criação da máquina virtual demora alguns minutos. Não prossiga para a próxima etapa até que o Azure tenha concluído a criação da VM.

Testar filtros de tráfego

Use Get-AzPublicIpAddress para retornar o endereço IP público de uma VM. O exemplo a seguir retorna o endereço IP público da VM myVmMgmt:

Get-AzPublicIpAddress `
  -Name myVmMgmt `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

Use o comando a seguir para criar uma sessão de logon remota com a VM myVmMgmt do computador local. Substitua <publicIpAddress> pelo o endereço IP retornado do comando anterior.

mstsc /v:<publicIpAddress>

Abra o arquivo RDP baixado. Se solicitado, selecione Conectar.

Insira o nome de usuário e senha especificados ao criar a VM (talvez seja necessário selecionar Mais escolhas, em seguida, Usar uma conta diferente, para especificar as credenciais inseridas ao criar a VM) e selecione OK. Você pode receber um aviso do certificado durante o processo de logon. Selecione Sim para prosseguir com a conexão.

É uma conexão com êxito porque a porta 3389 tem permissão de entrada da Internet para o grupo de segurança de aplicativo myAsgMgmtServers ao qual o adaptador de rede conectado à VM myVmMgmt está.

Use o comando a seguir para criar uma conexão de área de trabalho remota para a VM myVmWeb, a partir da VM myVmMgmt com o seguinte comando, a partir do PowerShell:

mstsc /v:myvmWeb

É uma conexão com êxito porque uma regra de segurança padrão dentro de cada grupo de segurança de rede permite o tráfego em todas as portas entre todos os endereços IP em uma rede virtual. Não é possível criar uma conexão de área de trabalho remota para a VM myVmWeb da Internet porque a regra de segurança para myAsgWebServers não permite a entrada da porta 3389 da Internet.

Use o comando a seguir para instalar os Serviços de Informações da Internet da Microsoft na VM myVmWeb a partir do PowerShell:

Install-WindowsFeature -name Web-Server -IncludeManagementTools

Após a conclusão da instalação dos Serviços de Informações da Internet, desconecte-se da VM myVmWeb, que direciona para a conexão da área de trabalho remota da VM myVmMgmt. Para exibir a tela de boas-vindas dos Serviços de Informações da Internet, abra um navegador da Internet e navegue até http://myVmWeb.

Desconecte a VM myVmMgmt.

No seu computador, insira o comando a seguir do PowerShell para recuperar o endereço IP público do servidor myVmWeb:

Get-AzPublicIpAddress `
  -Name myVmWeb `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

Para confirmar se é possível acessar o servidor Web myVmWeb de fora do Azure, abra um navegador da Internet no seu computador e navegue até http://<public-ip-address-from-previous-step>. É uma conexão com êxito porque a porta 80 tem permissão de entrada da Internet para o grupo de segurança de aplicativo myAsgWebServers ao qual o adaptador de rede conectado à VM myVmWeb está.

Limpar os recursos

Quando não for mais necessário, você poderá usar Remove-AzResourceGroup para remover o grupo de recursos e todos os recursos que ele contém:

Remove-AzResourceGroup -Name myResourceGroup -Force

Próximas etapas

Neste artigo, você criou um grupo de segurança de rede e o associou a uma sub-rede de rede virtual. Para saber mais sobre grupos de segurança de rede, consulte Visão geral do grupo de segurança de rede e Gerenciar um grupo de segurança de rede.

O Azure roteia o tráfego entre sub-redes por padrão. Em vez disso, é possível escolher rotear o tráfego entre sub-redes por meio de uma VM, servindo como um firewall, por exemplo. Para saber mais, consulte Criar uma tabela de roteamentos.