Tutorial: como filtrar o tráfego de rede com um grupo de segurança de rede
Artigo
É possível usar um grupo de segurança de rede para filtrar o tráfego de rede de entrada e saída dos recursos do Azure em uma rede virtual do Azure.
Grupos de segurança de rede contêm regras de segurança que filtram o tráfego por endereço IP, porta e protocolo. Quando um grupo de segurança de rede é associado a uma sub-rede, as regras de segurança são aplicadas aos recursos implantados nessa sub-rede.
Neste tutorial, você aprenderá como:
Criar um grupo de segurança de rede e regras de segurança
Criar grupos de segurança de aplicativos
Criar uma rede virtual e associar um grupo de segurança de rede a uma sub-rede
Implantar máquinas virtuais e associar as respectivas interfaces de rede com os grupos de segurança de aplicativos
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.
Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador.
Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure.
Para usar o Azure Cloud Shell:
Inicie o Cloud Shell.
Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou o comando.
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.
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.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
Este artigo exige a versão 2.0.28 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.
O procedimento a seguir cria uma rede virtual com uma sub-rede de recursos.
No portal do Azure, pesquise e selecione Redes virtuais.
Na página Redes virtuais, selecione + Criar.
Na guia Informações Básicas em Criar rede virtual, insira ou selecione as informações a seguir:
Configuração
Valor
Detalhes do projeto
Subscription
Selecione sua assinatura.
Resource group
Selecione Criar novo. Insira test-rg no Nome. Selecione OK.
Detalhes da instância
Nome
Insira vnet-1.
Região
Selecione Leste dos EUA 2.
Selecione Avançar para prosseguir para a guia Segurança.
Selecione Avançar para prosseguir para a guia Endereços de IP.
Na caixa de espaço de endereço em Sub-redes, selecione a sub-rede padrão.
No painel Editar sub-rede, insira ou selecione as seguintes informações:
Configuração
Valor
Detalhes da sub-rede
Modelo de sub-rede
Mantenha o padrão como Padrão.
Nome
Insira sub-rede-1.
Endereço inicial
Deixe o padrão de 10.0.0.0.
Tamanho da sub-rede
Deixe o padrão /24(256 endereços).
Selecione Salvar.
Escolha Revisar + criar na parte inferior da tela. Depois da aprovação na validação, selecione Criar.
Primeiro, crie um grupo de recursos para todos os recursos criados neste artigo com New-AzResourceGroup. O seguinte exemplo cria um grupo de recursos na localização westus2:
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 chamada subnet-1 à rede virtual e associa o grupo de segurança de rede nsg-1 a ela:
Primeiro, crie um grupo de recursos para todos os recursos criados neste artigo com az group create. O seguinte exemplo cria um grupo de recursos na localização westus2:
az group create \
--name test-rg \
--location westus2
Crie a rede virtual com az network vnet create. O exemplo a seguir cria um virtual chamado vnet-1:
Crie uma rede virtual com uma sub-rede com az network vnet subnet create. O exemplo a seguir adiciona uma sub-rede chamada subnet-1 à rede virtual e associa o grupo de segurança de rede nsg-1 a ela:
Na caixa de pesquisa na parte superior do portal, digite Grupo de segurança de aplicativo. Selecione Grupos de segurança do aplicativo nos resultados da pesquisa.
Selecione + Criar.
Na guia Básico em Criar um grupo de segurança de aplicativos, insira ou selecione estas informações:
Configuração
Valor
Detalhes do projeto
Subscription
Selecione sua assinatura.
Resource group
Selecione test-rg.
Detalhes da instância
Nome
Insira asg-web.
Região
Selecione Leste dos EUA 2.
Selecione Examinar + criar.
Selecione + Criar.
Repita as etapas anteriores especificando os valores a seguir:
Configuração
Valor
Detalhes do projeto
Subscription
Selecione sua assinatura.
Resource group
Selecione test-rg.
Detalhes da instância
Nome
Insira asg-mgmt.
Região
Selecione Leste dos EUA 2.
Selecione Examinar + criar.
Selecione Criar.
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.
Crie um grupo de segurança de rede com az network nsg create. 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.
Na caixa de pesquisa na parte superior do portal, digite Grupo de segurança de rede. Selecione Grupos de segurança de rede nos resultados da pesquisa.
Observação
Nos resultados da pesquisa para Grupos de segurança de rede, você poderá ver os Grupos de segurança de rede (clássico). Selecione Grupos de segurança de rede.
Selecione + Criar.
Na guia Básico em Criar grupo de segurança de rede, insira ou selecione estas informações:
Configuração
Valor
Detalhes do projeto
Subscription
Selecione sua assinatura.
Resource group
Selecione test-rg.
Detalhes da instância
Nome
Insira nsg-1.
Location
Selecione Leste dos EUA 2.
Selecione Examinar + criar.
Selecione Criar.
Crie um grupo de segurança de rede com New-AzNetworkSecurityGroup. O exemplo a seguir cria um grupo de segurança de rede chamado nsg-1:
Na caixa de pesquisa na parte superior do portal, digite Grupo de segurança de rede. Selecione Grupos de segurança de rede nos resultados da pesquisa.
Selecione nsg-1.
Selecione Sub-redes na seção Configurações da nsg-1.
Na página Sub-redes, selecione +Associar:
Em Associar sub-rede, selecione vnet-1 (test-rg) para Rede virtual.
Selecione sub-rede-1 para Sub-rede e, em seguida, selecione OK.
Use Get-AzVirtualNetwork para recuperar o objeto de rede virtual e, em seguida, use Set-AzVirtualNetworkSubnetConfig para associar o grupo de segurança de rede à sub-rede. O exemplo a seguir recupera o objeto de rede virtual e atualiza a configuração de sub-rede para associar o grupo de segurança de rede:
# Retrieve the virtual network
$vnet = Get-AzVirtualNetwork -Name "vnet-1" -ResourceGroupName "test-rg"
# Update the subnet configuration to associate the network security group
$subnetConfigParams = @{
VirtualNetwork = $vnet
Name = "subnet-1"
AddressPrefix = $vnet.Subnets[0].AddressPrefix
NetworkSecurityGroup = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
# Update the virtual network with the new subnet configuration
$vnet | Set-AzVirtualNetwork
Use az network vnet subnet update para associar o grupo de segurança de rede à sub-rede. O exemplo a seguir associa o grupo de segurança de rede nsg-1 à sub-rede subnet-1:
Selecione Regras de segurança de entrada na seção Configurações do nsg-1.
Na página Regras de segurança de entrada, selecione + Adicionar.
Crie uma regra de segurança que permita o acesso das portas 80 e 443 ao grupo de segurança de aplicativos asg-web. Na página Adicionar regra de segurança de entrada, insira ou selecione as informações a seguir:
Configuração
Valor
Fonte
Mantenha o padrão de Any.
Intervalos de portas de origem
Mantenha o padrão de (*).
Destino
Selecione Grupo de segurança do aplicativo.
Grupo de segurança do aplicativo de destino
Selecione asg-web.
Serviço
Mantenha o padrão de Custom.
Intervalos de portas de destino
Insira 80,443.
Protocolo
selecione TCP.
Ação
Mantenha o padrão de Allow.
Prioridade
Mantenha o padrão de 100.
Nome
Insira allow-web-all.
Selecione Adicionar.
Conclua as etapas anteriores com as informações a seguir:
Configuração
Valor
Fonte
Mantenha o padrão de Any.
Intervalos de portas de origem
Mantenha o padrão de (*).
Destino
Selecione Grupo de segurança do aplicativo.
Grupo de segurança do aplicativo de destino
Selecione asg-mgmt.
Serviço
Selecione RDP.
Ação
Mantenha o padrão de Allow.
Prioridade
Mantenha o padrão de 110.
Nome
Insira allow-rdp-all.
Selecione Adicionar.
Cuidado
Neste artigo, o RDP (porta 3389) é exposto à Internet para a VM atribuída ao grupo de segurança de aplicativos asg-mgmt.
Para ambientes de produção, em vez de expor a porta 3389 à Internet, é recomendável conectar-se aos recursos do Azure que você quer gerenciar usando uma VPN, conexão de rede privada ou Azure Bastion.
Crie uma regra de segurança com New-AzNetworkSecurityRuleConfig. O exemplo a seguir cria uma regra que permite o tráfego de entrada da Internet para o grupo de segurança de aplicativos asg-web nas portas 80 e 443:
Use Get-AzNetworkSecurityGroup para recuperar o grupo de segurança de rede existente e, em seguida, adicione as novas regras com o operador +=. Por fim, atualize o grupo de segurança de rede com Set-AzNetworkSecurityGroup:
# Retrieve the existing network security group
$nsg = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
# Add the new rules to the security group
$nsg.SecurityRules += $webRule
$nsg.SecurityRules += $mgmtRule
# Update the network security group with the new rules
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
Cuidado
Neste artigo, o RDP (porta 3389) é exposto à Internet para a VM atribuída ao grupo de segurança de aplicativos asg-mgmt.
Para ambientes de produção, em vez de expor a porta 3389 à Internet, é recomendável conectar-se aos recursos do Azure que você quer gerenciar usando uma VPN, conexão de rede privada ou Azure Bastion.
Crie uma regra de segurança com az network nsg rule create. O exemplo a seguir cria uma regra que permite o tráfego de entrada da Internet para o grupo de segurança de aplicativos asg-web nas portas 80 e 443:
Neste artigo, o SSH (porta 22) é exposto à Internet para a VM atribuída ao grupo de segurança do aplicativo asg-mgmt.
Para ambientes de produção, em vez de expor a porta 22 à Internet, é recomendável conectar-se aos recursos do Azure que você quer gerenciar usando uma VPN, uma conexão de rede privada ou o Azure Bastion.
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 e associa a ele o endereço IP público public-ip-vm-web.
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 funciona como um servidor Web. A opção -AsJob cria a VM em segundo plano, para que você possa prosseguir para a próxima etapa:
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.
Crie duas VMs na rede virtual para poder validar a filtragem de tráfego em uma etapa posterior.
Crie uma VM com az vm create. O exemplo a seguir cria uma VM que funciona como um servidor Web. A opção --nsg "" é especificada para impedir que o Azure crie um grupo de segurança de rede padrão para a interface de rede que ele cria quando cria a VM. O comando solicita que você crie uma senha para a VM. As chaves SSH não são usadas neste exemplo para facilitar as etapas posteriores deste artigo. Em um ambiente de produção, use chaves SSH para segurança.
Crie uma VM com az vm create. O exemplo a seguir cria uma VM que serve como um servidor de gerenciamento.
O exemplo a seguir cria uma VM e adiciona uma conta de usuário. O parâmetro --generate-ssh-keys faz com que a CLI procure uma chave ssh disponível em ~/.ssh. Se for encontrada, essa chave será usada. Caso contrário, uma será gerada e armazenada em ~/.ssh. Por fim, implantamos a imagem Ubuntu 22.04 mais recente.
Quando você criou as VMs, o Azure criou a interface de rede para cada VM e anexou à VM.
Adicione a interface de rede de cada VM para um dos grupos de segurança de aplicativos criados anteriormente:
Na caixa de pesquisa na parte superior do portal insira Máquina virtual. Selecione Máquinas virtuais nos resultados da pesquisa e, em seguida, selecione vm-web.
Selecione Grupos de segurança de aplicativos na seção Rede da vm-web.
Selecione Adicionar grupos de segurança de aplicativos e, na guia Adicionar grupos de segurança do aplicativo, selecione asg-web. Por fim, selecione Adicionar.
Repita as etapas anteriores para vm-mgmt, selecionando asg-mgmt na guia Adicionar grupos de segurança de aplicativos.
Use Get-AzNetworkInterface para recuperar o adaptador de rede da máquina virtual e, em seguida, use Get-AzApplicationSecurityGroup para recuperar o grupo de segurança do aplicativo. Por fim, use Set-AzNetworkInterface para associar o grupo de segurança de aplicativos ao adaptador de rede. O exemplo a seguir associa o grupo de segurança de aplicativos asg-web ao adaptador de rede vm-web-nic:
Use az network nic update para associar ao adaptador de rede ao grupo de segurança do aplicativo. O exemplo a seguir associa o grupo de segurança de aplicativos asg-web ao adaptador de rede vm-web-nic:
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-web --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-web \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-web
Repita o comando para associar o grupo de segurança do aplicativo asg-mgmt ao adaptador de rede vm-mgmt-nic.
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-mgmt --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-mgmt \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-mgmt
Na caixa de pesquisa na parte superior do portal insira Máquina virtual. Selecione Máquinas virtuais nos resultados da pesquisa.
Selecione vm-mgmt.
Na página Visão geral, selecione o botão Conectar e, em seguida, RDP nativo.
Selecione Baixar Arquivo RDP.
Abra o arquivo RDP baixado e selecione Conectar. Insira o nome de usuário e a senha que você especificou ao criar a VM.
Selecione OK.
Você pode receber um aviso de certificado durante o processo de conexão. Caso receba o aviso, clique em Sim ou Continuar para prosseguir com a conexão.
A conexão foi bem-sucedida, pois o tráfego de entrada da Internet para o grupo de segurança de aplicativos asg-mgmt é permitido pela porta 3389.
O adaptador de rede do vm-mgmt está associado ao grupo de segurança de aplicativos asg-mgmt e permite a conexão.
Abra uma sessão do PowerShell em vm-mgmt. Conecte-se à vm-web usando o seguinte:
mstsc /v:vm-web
A conexão RDP de vm-mgmt com a vm-web foi realizada com sucesso porque as máquinas virtuais na mesma rede podem se comunicar entre si por qualquer porta por padrão.
Não é possível criar uma conexão RDP com a máquina virtual vm-web a partir da Internet. A regra de segurança para asg-web impede conexões com a porta 3389 de entrada da Internet. O tráfego de entrada por meio da Internet é negado a todos os recursos por padrão.
Para instalar o IIS da Microsoft na máquina virtual vm-web, insira o seguinte comando em uma sessão do PowerShell na máquina virtual vm-web:
Após a conclusão da instalação do IIS, desconecte-se da máquina virtual vm-web, o que direcionará você para a conexão de área de trabalho remota da máquina virtual vm-mgmt.
Desconecte-se da VM vm-mgmt.
Pesquise vm-web na caixa de pesquisa do portal.
Na página Visão Geral da vm-web, anote o endereço IP público de sua VM. O endereço mostrado no exemplo a seguir é 203.0.113.103. Seu endereço é diferente:
Para confirmar se é possível acessar o servidor Web vm-web pela Internet, abra um navegador da Internet no seu computador e navegue até http://<public-ip-address-from-previous-step>.
Você vê a página padrão do IIS, pois o tráfego de entrada da Internet para o grupo de segurança de aplicativos asg-web é permitido pela porta 80.
O adaptador de rede anexado à vm-web está associado ao grupo de segurança do aplicativo asg-web e permite a conexão.
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 vm-mgmt:
Use o seguinte comando para criar uma sessão de área de trabalho remota com a VM vm-mgmt em seu computador local.
mstsc /v:$publicIP
Insira o nome de usuário e a senha especificados ao criar a VM (talvez seja necessário selecionar Mais opções e, em seguida, Usar uma conta diferente para especificar as credenciais inseridas ao criar a VM) e, em seguida, selecione OK. Você pode receber um aviso de certificado durante o processo de entrada. Selecione Sim para prosseguir com a conexão.
A conexão foi bem-sucedida. A porta 3389 tem permissão de entrada a partir da Internet para o grupo de segurança do aplicativo asg-mgmt. O adaptador de rede anexado à VM vm-mgmt está nesse grupo.
Use o seguinte comando para criar uma conexão de área de trabalho remota com a VM vm-web, a partir da VM vm-mgmt, com o seguinte comando do PowerShell:
mstsc /v:vm-web
É 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 com a VM vm-web a partir da Internet porque a regra de segurança do asg-web não permite a entrada da porta 3389 a partir da Internet.
Use o seguinte comando para instalar o IIS da Microsoft na VM vm-web a partir do PowerShell:
Após a conclusão da instalação do IIS, desconecte-se da VM vm-web, o que direcionará você para a conexão de área de trabalho remota da VM vm-mgmt. Para exibir a tela de boas-vindas dos Serviços de Informações da Internet, abra um navegador da Internet e navegue até http://vm-web.
Desconecte-se da VM vm-mgmt.
Em seu computador, insira o seguinte comando do PowerShell para recuperar o endereço IP público do servidor vm-web:
Para confirmar se é possível acessar o servidor Web vm-web de fora do Azure, abra um navegador da Internet no seu computador e navegue até http://<public-ip-address-from-previous-step>. A conexão foi bem-sucedida. A porta 80 tem permissão de entrada a partir da Internet para o grupo de segurança de aplicativos asg-web. O adaptador de rede anexado à VM vm-web está nesse grupo.
Usando um cliente SSH de sua escolha, conecte-se às máquinas virtuais criadas anteriormente. Por exemplo, o seguinte comando pode ser usado a partir de uma interface de linha de comando, como o Subsistema do Windows para Linux, para criar uma sessão SSH com a VM vm-mgmt. Você pode entrar nas máquinas virtuais usando suas credenciais do Microsoft Entra ID ou usar a chave SSH usada para criar as VMs. No exemplo a seguir, usamos a chave SSH para entrar na VM de gerenciamento e, em seguida, conectar na VM Web a partir da VM de gerenciamento usando uma senha.
A conexão foi bem-sucedida porque o adaptador de rede anexado à VM vm-mgmt está no grupo de segurança do aplicativo asg-mgmt, que permite a entrada da porta 22 da Internet.
Use o seguinte comando para se conectar via SSH à VM vm-web a partir da VM vm-mgmt:
ssh -o StrictHostKeyChecking=no azureuser@vm-web
É 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. Você não pode fazer SSH na VM vm-web a partir da Internet porque a regra de segurança do asg-web não permite a entrada da porta 22 a partir da Internet.
Use os seguintes comandos para instalar o servidor Web nginx na VM vm-web:
A VM vm-web tem permissão para tráfego de saída para a Internet para recuperar o nginx porque uma regra de segurança padrão permite todo o tráfego de saída para a Internet. Saia da sessão SSH do vm-web, o que deixará você no prompt username@vm-mgmt:~$ da VM vm-mgmt. Para recuperar a tela de boas-vindas do nginx na VM vm-web insira o seguinte comando:
curl vm-web
Saia da VM vm-mgmt. Para confirmar que você pode acessar o servidor Web vm-web de fora do Azure, insira curl <publicIpAddress> do seu próprio computador. A conexão foi bem-sucedida porque o grupo de segurança do aplicativo asg-web, no qual se encontra o adaptador de rede conectado à VM vm-web, permite a entrada da porta 80 da Internet.
O Azure roteia o tráfego entre sub-redes por padrão. Em vez disso, é possível optar por rotear o tráfego entre sub-redes por meio de uma VM, servindo como um firewall, por exemplo.
Para saber mais sobre como criar uma tabela de rotas, avance para o próximo tutorial.