Puntos clave
- Automatiza las auditorías de puertos con PowerShell: usa Get-NetTCPConnection, Get-NetUDPEndpoint y Invoke-Command para analizar los puertos abiertos en local o en remoto y exportar los registros a CSV.
- Centraliza los resultados mediante el Registro: guarda los datos de la auditoría y las marcas de tiempo en HKLM:SOFTWARE<CompanyName>PortAudit para una monitorización y unas alertas continuas.
- Refuerza la seguridad con GPO: usa las directivas de grupo para estandarizar las reglas de firewall e incluye análisis de UDP para una visibilidad completa de la red.
- Reduce riesgos y falsos positivos: ejecuta los scripts con permisos de administrador, filtra las direcciones de loopback y contrasta los resultados con las reglas del firewall.
Un puerto de red abierto a internet y sin supervisión es una vulnerabilidad esperando a ser explotada, y expone a los clientes remotos a un riesgo innecesario. Auditar con regularidad esta exposición de puertos es clave para aplicar las políticas de seguridad y garantizar que solo sean accesibles los servicios autorizados.
En esta guía aprenderás a usar PowerShell para automatizar estas auditorías a gran escala y obtener una visibilidad profunda sin herramientas costosas.
Detecta puertos de red abiertos de riesgo y protege tus endpoints remotos.
Más información sobre la monitorización de redes de NinjaOne.
📌Estrategias de despliegue recomendadas:
Haz clic para elegir un método | 💻 Ideal para usuarios individuales | 💻💻💻 Ideal para empresas |
| Método 1: PowerShell | ✓ | ✓ |
| Método 2: Registro | ✓ | ✓ |
| Método complementario, opción 1: mediante GPO | ✓ | |
| Método complementario, opción 2: mediante Get-NetUDPEndpoint | ✓ | ✓ |
Te recomendamos consultar ⚠️ Aspectos a tener en cuenta antes de continuar.
Método para comprobar los puertos de red abiertos con una auditoría en PowerShell
Auditar los puertos abiertos de forma periódica es una práctica fundamental para mantener una red segura. Te ayuda a identificar y cerrar posibles vulnerabilidades antes de que los atacantes puedan utilizarlas en tu contra.
📌 Caso de uso: realiza esta comprobación en unas cuantas situaciones clave: al configurar un ordenador nuevo para asegurarte de que es seguro, de forma periódica (por ejemplo, cada mes), después de instalar software nuevo y si sospechas que hay un problema de seguridad, para buscar señales de un intruso.
📌 Requisitos previos: para comprobar si hay puertos TCP y UDP abiertos en tu red necesitarás unas pocas cosas sencillas:
- Dispositivos Windows modernos (Windows 10/11 o Windows Server).
- Acceso de administrador en esas máquinas.
- PowerShell Remoting (WinRM) habilitado, o una herramienta RMM como NinjaOne, para ejecutar comandos.
Método 1: auditar los puertos de red abiertos con PowerShell
La forma más sencilla de comprobar qué puertos están abiertos en una máquina con Windows 11 es usar los comandos nativos de PowerShell, que ofrecen datos claros y accionables.
Procedimiento paso a paso:
- Abre PowerShell (Admin) o Windows Terminal (Admin).
- Ejecuta este comando para obtener todas las conexiones TCP en escucha y dar formato claro al resultado:
| Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess, @{Name=»ProcessName»; Expression={(Get-Process -Id $_.OwningProcess).Name}} |
Este comando filtra únicamente los puertos en estado Listen y muestra la dirección IP local, el número de puerto, el identificador de proceso (PID) y el nombre del ejecutable.
- Para obtener la misma información de los puertos UDP (que no requieren conexión), usa el cmdlet Get-NetUDPEndpoint:
| Get-NetUDPEndpoint | Select-Object LocalAddress, LocalPort, OwningProcess, @{Name=»ProcessName»; Expression={(Get-Process -Id $_.OwningProcess).Name}} |
- Para guardar los resultados de la auditoría y poder generar informes, exporta los datos a un archivo CSV. Este comando combina los resultados de TCP y UDP en un único registro:
$Output = @()$Output += Get-NetTCPConnection -State Listen | Select-Object @{Name="Protocol"; Expression={"TCP"}}, LocalAddress, LocalPort, OwningProcess, @{Name="ProcessName"; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}}$Output += Get-NetUDPEndpoint | Select-Object @{Name="Protocol"; Expression={"UDP"}}, LocalAddress, LocalPort, OwningProcess, @{Name="ProcessName"; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}}$Output | Export-Csv -Path "C:\Audit\LocalPortAudit.csv" -NoTypeInformation |
💡Nota: este comando genera un archivo llamado LocalPortAudit.csv en la carpeta C:\Audit. La consola no muestra ningún resultado, ya que todo se escribe directamente en el archivo CSV.
- Comprueba si un puerto de red está abierto en un cliente remoto usando PowerShell Remoting (WinRM).
Usa el cmdlet Invoke-Command para ejecutar la auditoría en uno o varios equipos remotos. En este ejemplo se comprueba un ordenador llamado CLIENT-PC-01.
| Invoke-Command -ComputerName CLIENT-PC-01 -ScriptBlock { Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess, @{Name=»ProcessName»; Expression={(Get-Process -Id $_.OwningProcess).Name}} } | Export-Csv "\\YourServer\AuditLogs\CLIENT-PC-01-Ports.csv" -NoTypeInformation |
Después de ejecutar este procedimiento tendrás un archivo de registro detallado (CSV) con todos los puertos TCP y UDP abiertos en la máquina objetivo, junto con la aplicación asociada y su identificador de proceso. Ese registro es tu lista maestra para el análisis.
💡Nota: sustituye CLIENT-PC-01 por el nombre real del ordenador que quieras auditar y ajusta la ruta de exportación (por ejemplo, \\YourServer\AuditLogs\...) a una carpeta que exista y sea accesible en tu entorno.
Método 2: usar el Registro para registrar y seguir el estado
Guardar los resultados de la auditoría en el Registro de Windows crea un histórico permanente y de fácil acceso para las herramientas de monitorización centralizada.
Este método consiste en escribir los hallazgos principales de tu auditoría con PowerShell, como la marca de tiempo y el número de puertos abiertos, en una ubicación específica del registro (HKLM). No configura funciones del sistema, sino que utiliza el registro como una base de datos sencilla para la información de estado.
Procedimiento paso a paso:
- Crea una clave de registro personalizada. Ejecuta los siguientes scripts de PowerShell en la máquina con Windows 11 objetivo. Realizará la auditoría y después guardará un resumen en el Registro.
Realiza la auditoría de puertos:
$OpenTCPPorts = Get-NetTCPConnection -State Listen | Where-Object { $_.LocalAddress -notin @('127.0.0.1', '::1') }$OpenUDPPorts = Get-NetUDPEndpoint | Where-Object { $_.LocalAddress -notin @('127.0.0.1', '::1') }$TotalOpenPorts = $OpenTCPPorts.Count + $OpenUDPPorts.Count |
- Crea una clave de registro para almacenar los resultados (el parámetro -Force crea las carpetas superiores que falten):
New-Item -Path "HKLM:\SOFTWARE\YourCompanyName\PortAudit" -Force
💡Nota: sustituye YourCompanyName por un nombre significativo para tu organización antes de ejecutar el comando.
- Almacena los datos:
Set-ItemProperty -Path "HKLM:\SOFTWARE\YourCompanyName\PortAudit" -Name "LastAuditTime" -Value (Get-Date -Format "yyyy-MM-dd HH:mm:ss")Set-ItemProperty -Path "HKLM:\SOFTWARE\YourCompanyName\PortAudit" -Name "OpenPortsCount" -Value $TotalOpenPorts |
- Valida los datos. Puedes verificar rápidamente que se han escrito correctamente desde el Símbolo del sistema:
reg query "HKLM\SOFTWARE\YourCompanyName\PortAudit"
- Integra el proceso con herramientas de monitorización como NinjaOne o con una tarea programada. Así podrás comprobar si un puerto de red está abierto leyendo el valor OpenPortsCount.
- Un valor superior a una referencia establecida podría generar automáticamente una alerta para que un técnico lo investigue.
Tras este procedimiento, tus clientes remotos tendrán una ubicación de registro estandarizada con los resultados de su última auditoría. Esto permite que tu sistema central de monitorización recopile esta información de estado de miles de máquinas al instante y de forma eficiente.
Métodos complementarios para estandarizar las políticas de puertos abiertos
Usa las directivas de grupo para controlar de forma proactiva qué puertos pueden estar abiertos y garantizar una seguridad homogénea en todos tus dispositivos con Windows 11.
📌 Caso de uso: despliega esta configuración cuando establezcas una nueva línea base de seguridad o para aplicar estándares de cumplimiento en toda tu red. Es una medida preventiva, no solo de detección.
📌 Requisitos previos: antes de continuar, asegúrate de contar con un dominio de Windows Active Directory, con Windows 10/11 Pro, Enterprise o Education en todos los clientes y con permisos para crear y gestionar directivas de grupo.
Opción 1: usar una GPO para reforzar y estandarizar las reglas de puertos abiertos
Usa las directivas de grupo para definir y aplicar de forma proactiva qué puertos pueden estar abiertos, y crea así una configuración coherente y segura en toda tu red.
📌 Caso de uso: este método envía de forma centralizada las reglas de firewall desde un controlador de dominio a todos los clientes con Windows 11, sobrescribiendo cualquier configuración local. Es eficaz porque aplica el principio del mínimo privilegio, de modo que solo los servicios aprobados puedan comunicarse.
Procedimiento paso a paso:
- Ve a la configuración del firewall en la GPO.
- En tu controlador de dominio, abre la Consola de administración de directivas de grupo (gpmc.msc).
- Crea una GPO nueva o edita una existente.
- Ve a Configuración del equipo > Directivas > Configuración de Windows > Configuración de seguridad > Firewall de Windows con seguridad avanzada > Reglas de entrada.
- Crea y configura las reglas.
- Haz clic con el botón derecho en el panel Reglas de entrada y selecciona Nueva regla….
- Usa el asistente para crear reglas que:
- Bloqueen el RDP entrante (puerto 3389) salvo que se cree una regla específica para permitirlo desde una VLAN de gestión segura o a través de una VPN.
- Denieguen el acceso a servicios de invitado y a protocolos antiguos e insuguros como SMBv1.
- Apliquen excepciones basadas en aplicaciones (por ejemplo, permitir %ProgramFiles%\YourApp\yourapp.exe) en lugar de abrir amplios rangos de puertos).
- Usen la opción «Permitir solo si es segura» cuando sea posible, para restringir las conexiones a programas firmados digitalmente.
Una vez vinculada esta GPO a tu unidad organizativa, todos los ordenadores afectados recibirán y aplicarán automáticamente estas reglas de firewall.
Esto bloqueará de inmediato los intentos de acceso no autorizado en los puertos especificados y reducirá considerablemente la superficie de ataque. Tu entorno tendrá entonces una configuración reforzada y uniforme, mucho más resistente al movimiento lateral y a la explotación.
Opción 2: uso opcional de Get-NetUDPEndpoint para cubrir los puertos UDP
Una auditoría de puertos completa debe incluir los endpoints UDP, ya que pueden suponer riesgos de seguridad que suelen pasarse por alto. Este método utiliza el cmdlet Get-NetUDPEndpoint, que consulta la pila de red de Windows para listar todos los procesos UDP en escucha activa.
📌 Caso de uso: incluye siempre una auditoría de UDP en tus comprobaciones periódicas de la línea base de seguridad y en cualquier auditoría de puertos exhaustiva, para tener una imagen completa de todos los servicios expuestos a la red en un dispositivo con Windows 11.
Procedimiento paso a paso:
- Audita los procesos UDP en escucha.
Abre una ventana de PowerShell con privilegios elevados y ejecuta el siguiente comando para ver todos los puertos UDP abiertos y los procesos que los utilizan:
| Get-NetUDPEndpoint | Select-Object LocalAddress, LocalPort, OwningProcess, @{Name=»ProcessName»; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}} |
- Combina los resultados de TCP y UDP en un único informe.
Para una auditoría exhaustiva, combina los resultados de tus análisis de TCP y UDP en un solo informe. El script siguiente se encarga de ello y guarda toda la información en un archivo CSV.
- Obtén todos los puertos TCP en escucha:
$tcp = Get-NetTCPConnection -State Listen | Where-Object { $_.LocalAddress -notin @('127.0.0.1', '::1') } | Select-Object @{Name="Protocol"; Expression={"TCP"}}, LocalAddress, LocalPort, OwningProcess, @{Name="ProcessName"; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}} |
- Obtén todos los endpoints UDP:
$udp = Get-NetUDPEndpoint | Where-Object { $_.LocalAddress -notin @('127.0.0.1', '::1') } | Select-Object @{Name="Protocol"; Expression={"UDP"}}, LocalAddress, LocalPort, OwningProcess, @{Name="ProcessName"; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}} |
- Combina los resultados y expórtalos a un archivo CSV:
$tcp + $udp | Export-Csv -Path "C:\Audit\Full_Port_Audit_Report.csv" -NoTypeInformation |
Después de ejecutar este procedimiento tendrás un único archivo de registro consolidado que detalla todos los puertos TCP y UDP abiertos en el sistema.
Esta visión global es esencial para reforzar la seguridad de forma eficaz: te permite identificar e investigar cualquier proceso UDP en escucha no autorizado con la misma eficiencia que uno TCP, de modo que tu auditoría de puertos abiertos sea realmente completa.
⚠️ Aspectos a tener en cuenta
Esta sección recoge los posibles problemas que debes valorar al seguir esta guía.
| Riesgos | Posibles consecuencias | Cómo revertirlo |
| 1. WinRM no habilitado o no accesible | No poder ejecutar comandos de PowerShell remoto detiene las auditorías automatizadas en toda la red. | Habilita PSRemoting mediante GPO o ejecuta Enable-PSRemoting -Force en el cliente objetivo. Asegúrate de que el firewall de Windows permita el puerto 5985 (HTTP) o 5986 (HTTPS). |
| 2. Ejecutar scripts sin privilegios elevados | Datos de auditoría incompletos; puede que no se capturen puertos críticos y que no se resuelvan algunos procesos, lo que genera una falsa sensación de seguridad. | Ejecuta siempre PowerShell como administrador. Para la ejecución remota, asegúrate de que tu contexto (por ejemplo, el agente del RMM) tenga privilegios de SYSTEM o de administrador. |
| 3. Reglas de firewall por GPO demasiado restrictivas | Fallo de las directivas de grupo al bloquear puertos esenciales (RPC, SMB); pérdida generalizada de conectividad de red y de acceso administrativo |
|
| 4. Errores de acceso denegado al Registro | No se pueden escribir los datos resumidos de la auditoría en HKLM:, lo que impide la monitorización y los informes centralizados | Asegúrate de que el script se ejecute en un contexto con privilegios suficientes (por ejemplo, la cuenta LocalSystem mediante una herramienta RMM). Valida manualmente los permisos de la clave de registro. |
| 5. Finalizar un proceso basándote solo en su puerto | Fallo de una aplicación o de un servicio crítico del sistema, con el consiguiente tiempo de inactividad y posible pérdida de datos | Reinicia el servicio detenido o reinicia la máquina. Investiga siempre el nombre y la finalidad del proceso antes de actuar. |
| 6. Ignorar los puertos UDP en la auditoría | Pasar por alto exposiciones de seguridad críticas, ya que el malware y los servicios no autorizados suelen usar UDP para comunicarse y exfiltrar datos | Vuelve a ejecutar la auditoría con el cmdlet Get-NetUDPEndpoint e inclúyelo en todas tus comprobaciones de línea base futuras. |
Claves para optimizar tu estrategia de auditoría de puertos
Una estrategia de auditoría de puertos eficaz requiere una planificación cuidadosa que va más allá de ejecutar los comandos.
Escalar las auditorías remotas
Para comprobar qué puertos están abiertos en toda tu red tienes que automatizar el proceso. Usa Invoke-Command de PowerShell para ejecutarlo en una lista de ordenadores, o aprovecha una herramienta RMM como NinjaOne para enviar el script de auditoría a todos los endpoints a la vez.
Así podrás reunir un informe centralizado de cientos de dispositivos en minutos, lo que hace viable auditar los puertos abiertos de forma periódica.
Reducir los falsos positivos
No todos los puertos abiertos son una vulnerabilidad. Las direcciones internas de loopback (127.0.0.1, ::1) indican servicios que se comunican con la máquina local y suelen ser seguras.
Fíltralas en tus scripts para centrar el informe en los puertos vinculados a las direcciones IP físicas de la máquina, que están expuestas a la red y suponen un problema de seguridad más relevante.
Tener en cuenta los desajustes del firewall
Un puerto abierto en un dispositivo no siempre significa que sea accesible desde internet. Un firewall de red situado por delante o el propio Firewall de Windows del dispositivo pueden estar bloqueando el acceso externo.
Tu auditoría te dice qué está en escucha; para saber qué está realmente expuesto tienes que cruzar esa información con las reglas del firewall. Verifica siempre los hallazgos críticos.
Establecer una periodicidad fija
Una auditoría aislada es solo una foto fija. Para mantener la seguridad en el tiempo, ejecuta estas auditorías con una periodicidad regular, por ejemplo cada mes o alineadas con tus ciclos mensuales de parches. Así detectarás rápidamente cualquier servicio nuevo no autorizado y podrás validar que los despliegues de software recientes no han introducido una exposición de red inesperada.
Identifica los puertos abiertos antes que los atacantes con la monitorización de redes automatizada de NinjaOne.
Cómo NinjaOne simplifica la auditoría de puertos
NinjaOne se integra directamente en tu flujo de trabajo de auditoría de puertos para automatizar y simplificar el proceso.
- Despliega scripts con facilidad: envía scripts de PowerShell personalizados para comprobar qué puertos están abiertos en todos los endpoints desde un panel centralizado.
- Centraliza los resultados: almacena automáticamente los hallazgos de la auditoría, como el número de puertos, en un registro unificado para revisarlos y generar informes con facilidad.
- Recibe alertas proactivas: activa notificaciones instantáneas si se detectan puertos no autorizados (por ejemplo, SMBv1 o Telnet) en cualquier dispositivo.
- Genera informes de cumplimiento: crea informes programados sobre el estado de los puertos abiertos para las revisiones con clientes y las auditorías de cumplimiento.
- Prioriza la corrección: etiqueta automáticamente los dispositivos con exposiciones de alto riesgo para que un técnico los atienda de inmediato.
Guía de inicio rápido
NinjaOne ofrece varias formas de auditar los puertos de red abiertos en clientes remotos:
1. Script integrado para monitorizar puertos
Existe un script integrado llamado «Search for Listening and Established Ports» que puede:
- Alertar sobre puertos concretos en escucha o establecidos
- Guardar opcionalmente los resultados en un campo personalizado
2. Capacidades de PowerShell
Puedes crear scripts de PowerShell personalizados para:
- Usar
netstatpara comprobar los puertos abiertos - Registrar los resultados en los registros de actividad o en campos personalizados
- Realizar auditorías de puertos de red en varios clientes remotos
3. Funciones de la solución de gestión de redes (NMS)
La solución de gestión de redes (NMS) de NinjaOne ofrece:
- Comprobaciones del estado de los puertos
- Monitorización de puertos concretos
- Posibilidad de crear condiciones de estado de puertos en las políticas
Protege tu red gestionando los puertos abiertos
Auditar con regularidad los puertos de red abiertos en los equipos de tus clientes es una defensa clave frente a accesos no autorizados y posibles brechas. Esta guía ofrece métodos prácticos para auditar y gestionar los puertos abiertos.
Al aplicar estos pasos, conviertes riesgos desconocidos en activos gestionados, refuerzas de forma notable tu postura de seguridad y garantizas el cumplimiento en todo tu entorno.
Temas relacionados
