Grupos de seguridad de red de Azure o NSG de Azure te permiten filtrar el tráfico de red tanto de entrada como de salida, desde uno o más recursos de Azure. Si alguna vez necesitas evitar el acceso a un recurso de Azure, debes entender cómo funcionan los NSG.
En este artículo, aprenderás el propósito de los NSG de Azure y cómo configurarlos con el lenguaje de secuencias de comandos PowerShell.
Requisitos previos
- Un recurso de Azure como objetivo. Este tutorial utilizará una suscripción de pago por uso y una máquina virtual de Azure con Windows Server 2019.
- PowerShell 7+. Versiones anteriores de PowerShell pueden funcionar, pero este tutorial utiliza PowerShell 7.0.1 para la configuración.
- El módulo Azure Az de PowerShell
Comprensión de los NSG de Azure
Piensa en un NSG de Azure como un firewall. Un firewall consta de reglas que definen acciones a tomar en el tráfico de entrada y salida, llamadas conjuntos de reglas. Los firewalls suelen venir con conjuntos de reglas predeterminados que son reglas que dictan qué puede y qué no puede atravesar el firewall; los NSG de Azure tienen algo similar.
A diferencia de los firewalls tradicionales, las NSG de Azure también tienen un concepto en la nube llamado etiquetas de servicio. Las etiquetas de servicio son la forma en que Azure abstrae los rangos de direcciones para facilitar su gestión.
Veamos brevemente cada uno de estos temas importantes.
Uso de Etiquetas de Servicio para Simplificar la Configuración de Reglas
En los servicios en la nube, las direcciones IP y los rangos pueden cambiar con frecuencia. Esto puede dificultar el mantenimiento de conjuntos de reglas de rangos IP de Azure definidos manualmente. Afortunadamente, Azure define muchas etiquetas de servicio diferentes a las que puede apuntar la regla de su NSG.
Las etiquetas de servicio son un concepto que siempre utilizará la lista de direcciones más actualizada. Son una forma de asignar marcadores de posición a conjuntos de rangos de direcciones para facilitar la gestión.

Tenga en cuenta los conjuntos de reglas predeterminados
Cuando crea y aplica una NSG de Azure, primero debe conocer las reglas que esas NSG automáticamente aplican. Estas reglas predeterminadas son inmutables y se crean tanto para el tráfico entrante como saliente.
Cada regla en un conjunto de reglas de NSG de Azure tiene una prioridad. La prioridad dicta el orden de operación o qué reglas tienen prioridad sobre otras. Por ejemplo, si existe una regla con una prioridad de 65000 que bloquea todo el tráfico entrante y crea una regla con una prioridad de 64999 que permite el puerto 80, la NSG de Azure bloqueará todo el tráfico excepto el puerto 80.

Las reglas predefinidas no pueden cambiarse, pero se pueden anular utilizando una regla de mayor prioridad, como se muestra arriba. Cada una de estas reglas se aplica a todos los protocolos, como TCP, UDP e ICMP.
Asegúrate de que tus reglas utilicen un número inferior a
65500
para anular las reglas predefinidas por defecto.
Cuando creas un NSG de Azure, verás varias reglas predefinidas:
Reglas de entrada
AllowVNetInBound
– Esta regla de entrada contiene todos los rangos de direcciones IP definidos para la red virtual y todos los espacios de direcciones locales conectados. Además, esta regla contiene redes virtuales conectadas mediante emparejamiento, redes virtuales conectadas a una puerta de enlace de red virtual, dirección IP virtual del host y cualquier prefijo de dirección utilizado en rutas definidas por el usuario. Esta regla se establece con una prioridad de65000
.AllowAzureLoadBalancerInBound
– La etiqueta de servicioAzureLoadBalancer
se traduce a la dirección IP virtual del host,168.63.129.16
, donde se origina la sonda de salud de Azure. El tráfico real no pasa por aquí y si no utilizas Azure Load Balancing, esta regla se puede anular. La dirección IP virtual del host existe en todas las regiones específicamente para proporcionar servicios de infraestructura esenciales como DHCP, DNS, IMDS y monitoreo de salud. Esta regla se establece con una prioridad de65001
.DenyAllInbound
– Establecida como la última regla, utilizando la prioridad65500
, esta regla deniega todo el tráfico de entrada no permitido explícitamente.
Reglas de salida
AllowVNetOutBound
– Esto contiene todos los rangos de direcciones IP definidos para la red virtual, todos los espacios de direcciones conectados localmente, redes virtuales emparejadas, redes virtuales conectadas a una puerta de enlace de red virtual, la dirección IP virtual del host y cualquier prefijo de dirección utilizado en rutas definidas por el usuario. Esta regla se establece con una prioridad de65000
.AllowInternetOutBound
– Espacio de direcciones IP que está fuera de la red virtual y alcanzable a través de Internet público. Incluye el rango de direcciones IP públicas propiedad de Azure. Esta regla se establece con una prioridad de65001
.DenyAllOutBound
– Al igual que en el conjunto de reglas de entrada, esta regla se establece como la última regla, utilizando la prioridad65500
. Esta regla de salida denegará todo el tráfico no permitido explícitamente.
Creación de NSGs de Azure con PowerShell
Basta de charla, ¡pongamos manos a la obra y comencemos a crear algunas NSGs de Azure con PowerShell! Suponiendo que estás en tu consola de PowerShell y autenticado, continúa leyendo.
Relacionado: Connect-AzAccount: Tu Puerta de Acceso a Azure con PowerShell
Para crear una NSG de Azure con PowerShell, necesitas un comando; New-AzNetworkSecurityGroup
. Para crear una NSG con este comando, proporciónale el nombre, el nombre del grupo de recursos donde crear la NSG y la ubicación.
El siguiente ejemplo de código está utilizando el cmdlet New-AzNetworkSecurityGroup
para crear un NSG llamado NSG-MyVM
en el grupo de recursos Articles que está ubicado en el centro de datos eastus
de Azure.
Creación de Reglas de NSG de Azure con PowerShell
Una vez que tenga el NSG, probablemente el conjunto de reglas predeterminadas no sea suficiente. Necesitará crear sus propias reglas.
Configuración de una Regla de Entrada para el Protocolo de Escritorio Remoto
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.
Para agregar una nueva regla de entrada a un NSG existente se requieren tres pasos:
- Ejecute el comando
Get-AzNetworkSecurityGroup
para recuperar el NSG existente. - Ejecute el
Add-AzNetworkSecurityRuleConfig
para crear la regla. - Ejecute el comando
Set-AzNetworkSecurityGroup
para aplicar esa regla al NSG.
El siguiente ejemplo de código está utilizando el Get-AzNetworkSecurityGroup
para recuperar un NSG existente. Luego, se define una regla utilizando Add-AzNetworkSecurityRuleConfig
la cual luego se aplica al NSG existente utilizando el cmdlet Set-AzNetworkSecurityGroup
.
El parámetro Prioridad determina cuándo se evalúa la regla, el valor de
200
está cerca de la parte superior ya que4096
es la regla de prioridad más baja.
Negación del Tráfico Recomendado por SANS hacia el Exterior
A menudo, el tráfico saliente no se bloquea ya que puede ser desafiante conocer todos los puertos posibles que una aplicación puede necesitar usar. Afortunadamente, puedes encontrar algunas recomendaciones expertas de filtrado de salida del Instituto SANS, una organización ampliamente confiable en cuanto a estándares de seguridad de la información.
Para implementar las recomendaciones de SANS, podemos seguir los mismos tres pasos proporcionados anteriormente pero esta vez crear una regla con múltiples puertos y con una Dirección
de Salida en lugar de Entrada.
- MS RPC – Puertos TCP y UDP 135
- NetBIOS/IP – Puertos TCP y UDP 137-139
- SMB/IP – Puerto TCP 445
- Protocolo de Transferencia de Archivos Trivial (TFTP) – Puerto UDP 69
- Syslog – Puerto UDP 514
- Protocolo Simple de Administración de Redes (SNMP) – Puertos UDP 161-162
El siguiente código recupera una regla NSG existente usando el cmdlet Get-AzNetworkSecurityGroup
. Una regla de salida se define utilizando Add-AzNetworkSecurityRuleConfig
y se aplica mediante el cmdlet Set-AzNetworkSecurityGroup
.
Por supuesto, algunos de estos puertos son valiosos y necesarios, dependiendo de los servicios que estás proporcionando. Lo más probable es que necesites personalizar esta lista según lo que requiera tu aplicación, que generalmente se proporcionan por el proveedor o utilizando una herramienta para encontrar puertos abiertos, como netstat
.
Relacionado: Encontrar Puertos con Netstat y PowerShell
Configurando un NSG de Azure para una Subred Específica
Quizás hayas segmentado tu espacio de red virtual a través de subredes. Para ser más detallado, puedes aplicar NSGs solo a una subred específica, controlando de manera más detallada el tráfico en esa subred.
El fragmento de código a continuación está buscando un prefijo de dirección completo y aplicando un NSG a él.
A continuación, aprende cómo utilizar interfaces de red para segmentar aún más y limitar los NSG solo a lo que pueda ser necesario, como una interfaz de red.
Aplicando un NSG de Azure a una Interfaz de Red
Similar a cómo funcionan las subredes, puede aplicar reglas de NSG directamente a una interfaz de red. Este nivel de granularidad generalmente no es necesario, pero cuando tiene múltiples interfaces de red por máquina virtual, puede tener sentido aplicar conjuntos de reglas diferentes a las NIC individuales según sea necesario.
Similar a cómo se define la limitación de subred, puede aplicar reglas a una NIC individual. En este caso, está utilizando el cmdlet Get-AzNetworkInterface
para recuperar una NIC específica en la VM dada. Esto tendrá el NSG previamente creado configurado en la propiedad NetworkSecurityGroup
.
¿Qué pasa con el diagnóstico y análisis del tráfico a través de un NSG? ¡Sigue leyendo para aprender sobre los registros de flujo de NSG y cómo puedes utilizarlos!
Depuración y solución de problemas con registros de flujo de NSG
A lo largo de la creación y uso de NSG, es posible que descubra que necesita una depuración adicional para solucionar un problema de regla incorrecta o analizar el tráfico. Los registros de flujo son una característica de Azure Network Watcher que registra información sobre el tráfico IP que pasa a través de un NSG.
Una vez que Azure Network Watcher captura el tráfico de red, almacena esos datos en una cuenta de almacenamiento de Azure. Usando PowerShell, puede configurar los registros de flujo de NSG de Azure para analizar esa cuenta de almacenamiento de Azure y depurar y solucionar problemas de manera más efectiva.
Relacionado: Cómo descargar e instalar la herramienta AzCopy
Habilitar los registros de flujo de NSG consta de tres pasos generales en PowerShell:
- Registre el proveedor
Microsoft.Insights
. - Cree un Espacio de trabajo de Insights operativos para almacenar los datos.
- Habilita el registro de flujo NSG con el comando
Set-AzNetworkWatcherConfigFlowLog
.
Para facilitar la configuración de los registros de flujo NSG de Azure, el siguiente código de PowerShell simplificará los diferentes pasos requeridos. Especialmente, este código crea un Espacio de trabajo de Insights operativos y asocia una configuración de registro de flujo con la suscripción correcta, el espacio de trabajo y el NSG.
Los registros de flujo contienen muchas propiedades diferentes, como es típico en los registros de firewall. Esto incluye propiedades como la IP de origen y destino, los puertos, los protocolos y las marcas de tiempo. Los registros de las versiones 1 y 2 tienen una gran diferencia en que la versión 2 tiene el concepto de estado de flujo. Esto marca la continuación y terminación de un flujo junto con información de ancho de banda del tráfico.
Próximos Pasos
Los NSG de Azure son herramientas poderosas para limitar y auditar el tráfico a un recurso. Utilizados de manera efectiva, puede asegurar sus recursos e infraestructura correctamente. Con capacidades de auditoría a través de los registros de flujo NSG y la capacidad de limitar los NSG a subredes o adaptadores de red, tiene la flexibilidad necesaria para delimitar reglas según sea necesario y verificar que todo el tráfico sea el esperado.