Grupos de Segurança de Rede do Azure ou NSGs do Azure permitem que você filtre o tráfego de rede tanto de entrada quanto de saída, de um ou mais recursos do Azure. Se você já precisou impedir o acesso a um recurso do Azure, é necessário entender como os NSGs funcionam.
Neste artigo, você aprenderá o propósito do NSG do Azure e como configurá-los usando a linguagem de script PowerShell.
Pré-requisitos
- Um recurso do Azure como alvo. Este tutorial usará uma assinatura paga conforme o uso e uma máquina virtual do Azure com o Windows Server 2019.
- PowerShell 7+. Versões anteriores do PowerShell podem funcionar, mas este tutorial está usando o PowerShell 7.0.1 para a configuração.
- O módulo Azure Az do PowerShell
Entendendo os NSGs do Azure
Pense em um NSG do Azure como um firewall. Um firewall consiste em regras que definem ações a serem tomadas no tráfego de entrada e saída, chamadas de conjuntos de regras. Firewalls geralmente vêm com conjuntos de regras padrão que são regras que ditam o que pode e o que não pode atravessar o firewall; os NSGs do Azure têm algo semelhante.
Diferentemente dos firewalls tradicionais, os NSGs do Azure também possuem um conceito na nuvem chamado etiquetas de serviço. As etiquetas de serviço são a forma como a Azure abstrai intervalos de endereços para facilitar sua gestão.
Vamos abordar brevemente cada um desses tópicos importantes.
Usando Etiquetas de Serviço para Simplificar a Configuração de Regras
Em serviços na nuvem, os endereços IP e intervalos podem mudar com frequência. Isso pode tornar a manutenção de conjuntos de regras de intervalo IP da Azure definidas manualmente difícil. Felizmente, a Azure define muitas etiquetas de serviço diferentes que sua regra NSG pode direcionar.
As etiquetas de serviço são um conceito que sempre usará a lista de endereços mais atualizada. Elas são uma maneira de atribuir espaços reservados a conjuntos de intervalos de endereços para facilitar a gestão.

Fique Atento aos Conjuntos de Regras Padrão
Ao criar e aplicar um NSG do Azure, você precisa primeiro conhecer as regras que esses NSGs automaticamente aplicam. Essas regras padrão são imutáveis e são criadas tanto para tráfego de entrada quanto de saída.
Cada regra em um conjunto de regras do NSG do Azure possui uma prioridade. A prioridade dita a ordem de operação ou quais regras substituem outras. Se, por exemplo, existir uma regra com prioridade 65000 que bloqueia todo o tráfego de entrada e você criar uma regra com prioridade 64999 que permite a porta 80, o NSG do Azure bloqueará todo o tráfego, exceto a porta 80.

As regras padrão não podem ser alteradas, mas você pode substituí-las usando uma regra de prioridade mais alta, conforme mostrado acima. Cada uma dessas regras se aplica a todos os protocolos, como TCP, UDP e ICMP.
Certifique-se de que suas regras usem um número menor que
65500
para substituir as regras padrão!
Ao criar um NSG do Azure, você verá várias regras padrão:
Regras de entrada
AllowVNetInBound
– Essa regra de entrada contém todos os intervalos de endereços IP definidos para a rede virtual e todos os espaços de endereço conectados no local. Além disso, essa regra contém redes virtuais conectadas, redes virtuais conectadas a um gateway de rede virtual, endereço IP virtual do host e quaisquer prefixos de endereço usados em rotas definidas pelo usuário. Essa regra é definida com prioridade65000
.AllowAzureLoadBalancerInBound
– A marca de serviçoAzureLoadBalancer
se traduz para o endereço IP virtual do host,168.63.129.16
, onde a sonda de saúde do Azure se origina. O tráfego real não passa por aqui e, se você não usar o Balanceamento de Carga do Azure, essa regra pode ser substituída. O endereço IP virtual do host existe em todas as regiões especificamente para fornecer serviços essenciais de infraestrutura, como DHCP, DNS, IMDS e monitoramento de saúde. Essa regra é definida com prioridade65001
.DenyAllInbound
– Configurada como a última regra, usando a prioridade65500
, essa regra nega todo o tráfego de entrada não explicitamente permitido.
Regras de saída
AllowVNetOutBound
– Isso contém todas as faixas de endereços IP definidas para a rede virtual, todas as espaços de endereços conectados localmente, redes virtuais conectadas, redes virtuais conectadas a um gateway de rede virtual, endereço IP virtual do host e quaisquer prefixos de endereço usados em rotas definidas pelo usuário. Essa regra é configurada com uma prioridade de65000
.AllowInternetOutBound
– Espaço de endereço IP fora da rede virtual e alcançável pela internet pública. Inclui o intervalo de endereços do espaço de endereço IP público de propriedade do Azure. Essa regra é configurada com uma prioridade de65001
.DenyAllOutBound
– Assim como no conjunto de regras de entrada, essa regra é definida como a última regra, usando a prioridade65500
. Essa regra de saída negará todo o tráfego não explicitamente permitido.
Construindo NSGs do Azure com PowerShell
Chega de conversa, vamos colocar a mão na massa e começar a construir alguns NSGs do Azure com PowerShell! Supondo que você esteja no seu console do PowerShell e autenticado, continue lendo.
Relacionado: Connect-AzAccount: Sua Porta de Entrada para o Azure com PowerShell
Para criar um NSG do Azure com o PowerShell, você precisa de um comando; New-AzNetworkSecurityGroup
. Para criar um NSG com este comando, forneça o nome, o nome do grupo de recursos para criar o NSG e a localização.
O exemplo de código abaixo está utilizando o cmdlet New-AzNetworkSecurityGroup
para criar um NSG chamado NSG-MyVM
no grupo de recursos Articles, localizado no datacenter Azure eastus
.
Criando Regras do NSG do Azure com o PowerShell
Depois de ter o NSG, o conjunto padrão de regras provavelmente não é suficiente. Você precisará criar suas próprias regras.
Configurando uma Regra de Entrada para o Protocolo de Área de Trabalho Remota
A common administrative task is the need to create an inbound rule for the Remote Desktop Protocol (RDP). In the tutorial’s example, perhaps it’s going to be applied to a Windows Server Azure VM and you need to access the VM via RDP. In that case, you need to open up port 3389 inbound.
Adicionar uma nova regra de entrada a um NSG existente requer três etapas:
- Executar o comando
Get-AzNetworkSecurityGroup
para recuperar o NSG existente. - Executar o comando
Add-AzNetworkSecurityRuleConfig
para criar a regra. - Executar o comando
Set-AzNetworkSecurityGroup
para aplicar essa regra ao NSG.
O exemplo de código abaixo está utilizando o Get-AzNetworkSecurityGroup
para recuperar um NSG existente. Em seguida, uma regra é definida usando o Add-AzNetworkSecurityRuleConfig
, que é então aplicada ao NSG existente usando o cmdlet Set-AzNetworkSecurityGroup
.
O parâmetro de Prioridade determina quando a regra é avaliada, o valor de
200
está próximo ao topo, já que4096
é a regra de menor prioridade.
Negação do Tráfego Recomendado pela SANS para Saída
Frequentemente, o tráfego de saída não é bloqueado, pois pode ser desafiador conhecer todas as portas possíveis que uma aplicação pode precisar usar. Felizmente, você pode encontrar algumas recomendações especializadas de filtragem de saída do Instituto SANS, uma organização amplamente confiável em padrões de segurança da informação.
Para implementar as recomendações da SANS, podemos seguir os mesmos três passos fornecidos acima, mas desta vez criar uma regra com várias portas e com uma Direção
de Saída, em vez de Entrada.
- MS RPC – TCP e UDP porta 135
- NetBIOS/IP – TCP e UDP portas 137-139
- SMB/IP – TCP porta 445
- Protocolo de Transferência de Arquivos Triviais (TFTP) – UDP porta 69
- Syslog – UDP porta 514
- Protocolo Simples de Gerenciamento de Rede (SNMP) – UDP portas 161-162
O código abaixo recupera uma regra existente do NSG usando o cmdlet Get-AzNetworkSecurityGroup
. Uma regra de saída é definida usando o Add-AzNetworkSecurityRuleConfig
e aplicada via cmdlet Set-AzNetworkSecurityGroup
.
Claro, alguns dessas portas são valiosas e necessárias, dependendo dos serviços que você está fornecendo. Provavelmente, será necessário personalizar esta lista, dependendo do que sua aplicação requer, o que geralmente é fornecido pelo fornecedor ou usando uma ferramenta como o \texttt{netstat} para encontrar portas abertas, como netstat
.
Relacionado: Encontrando Portas com Netstat e PowerShell
Configurando um NSG do Azure para uma Sub-rede Específica
Talvez você tenha segmentado seu espaço de rede virtual através de sub-redes. Para obter mais granularidade, você pode aplicar NSGs a uma sub-rede específica, controlando assim o tráfego de forma mais detalhada dentro dessa sub-rede.
O trecho de código abaixo está encontrando um prefixo de endereço inteiro e aplicando um NSG a ele.
Em seguida, aprenda a usar interfaces de rede para segmentar ainda mais e limitar NSGs apenas ao que pode ser necessário, como uma interface de rede.
Aplicando um NSG do Azure a uma Interface de Rede
Similar ao funcionamento das sub-redes, você pode aplicar regras NSG diretamente a uma interface de rede. Esse nível de granularidade geralmente é desnecessário, mas quando você tem várias interfaces de rede por máquina virtual, pode fazer sentido aplicar conjuntos de regras diferentes aos NICs individuais conforme necessário.
Similar à definição de limitação de sub-rede, você pode aplicar regras a um NIC individual. Nesse caso, você está utilizando o cmdlet Get-AzNetworkInterface
para recuperar um NIC específico na VM fornecida. Isso terá o NSG previamente criado definido na propriedade NetworkSecurityGroup
.
E quanto ao diagnóstico e análise de tráfego por meio de um NSG? Continue lendo para aprender sobre os registros de fluxo do NSG e como você pode utilizá-los!
Depuração e solução de problemas com Registros de Fluxo NSG
Ao longo da criação e uso do NSG, você pode descobrir que precisa de mais depuração para solucionar uma regra quebrada ou analisar o tráfego. Os registros de fluxo são um recurso do Azure Network Watcher que registra informações sobre o tráfego IP que passa por um NSG.
Uma vez que o Azure Network Watcher captura o tráfego de rede, ele armazena esses dados em uma Conta de Armazenamento do Azure. Usando o PowerShell, você pode configurar os registros de fluxo NSG do Azure para analisar essa conta de armazenamento do Azure e depurar e solucionar problemas de forma mais eficaz.
Relacionado: Como Baixar e Instalar a Ferramenta AzCopy
Habilitar registros de fluxo NSG consiste em três etapas básicas no PowerShell:
- Registre o provedor
Microsoft.Insights
. - Crie um Operational Insights Workspace para armazenar os dados.
- Habilite o log de fluxo NSG com o comando
Set-AzNetworkWatcherConfigFlowLog
.
Para facilitar a configuração dos Azure NSG Flow Logs, o código PowerShell abaixo simplificará as etapas necessárias. Notavelmente, este código cria um Operational Insights Workspace e associa uma configuração de Flog Log à assinatura correta, workspace e NSG.
Os logs de fluxo contêm muitas propriedades diferentes, como é típico em logs de firewall. Isso inclui propriedades como IP de origem e destino, portas, protocolos e carimbos de hora. Os logs das versões 1 e 2 têm uma grande diferença, sendo que a versão 2 possui o conceito de estado de fluxo. Isso marca a continuação e a terminação de um fluxo junto com informações sobre a largura de banda do tráfego.
Próximos Passos
Os NSGs do Azure são ferramentas poderosas para limitar e auditar o tráfego para um recurso. Usados de forma eficaz, você pode garantir adequadamente seus recursos e infraestrutura. Com capacidades de auditoria por meio dos logs de fluxo NSG e a capacidade de limitar os NSGs a sub-redes ou adaptadores de rede, você tem a flexibilidade necessária para delimitar as regras conforme necessário e verificar se todo o tráfego está conforme o esperado.