/
/

Cómo auditar puertos de red abiertos en clientes remotos con PowerShell y registrar los resultados

por Team Ninja
How to Audit Open Network Ports Across Remote Clients Using PowerShell and Log Results blog banner image

Resumen instantáneo

Este post ofrece una lista completa de comandos CMD básicos y una inmersión profunda en los comandos de Windows, con más de 70 comandos cmd esenciales tanto para principiantes como para usuarios avanzados. Explica comandos prácticos del símbolo del sistema para la gestión de archivos, la navegación por directorios, la solución de problemas de red, las operaciones de disco y la automatización con ejemplos reales para mejorar la productividad. Tanto si estás aprendiendo los comandos básicos de cmd como si ya dominas las herramientas avanzadas de la CLI de Windows, esta guía te ayudará a utilizar el Símbolo del sistema de forma más eficaz.

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:

  1. Abre PowerShell (Admin) o Windows Terminal (Admin).
  2. 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.

  1. 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}}
  1. 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.

  1. 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:

  1. 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
  1. Valida los datos. Puedes verificar rápidamente que se han escrito correctamente desde el Símbolo del sistema:

reg query "HKLM\SOFTWARE\YourCompanyName\PortAudit"

  1. 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:

  1. 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.
  2. 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:

  1. 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}}
  1. 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.

RiesgosPosibles consecuenciasCómo revertirlo
1. WinRM no habilitado o no accesibleNo 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 elevadosDatos 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 restrictivasFallo de las directivas de grupo al bloquear puertos esenciales (RPC, SMB); pérdida generalizada de conectividad de red y de acceso administrativo
  • Solución local: inicia sesión localmente y ejecuta gpupdate /force o netsh advfirewall reset.
  • Solución en el DC: deshabilita la GPO problemática desde el controlador de dominio.
4. Errores de acceso denegado al RegistroNo se pueden escribir los datos resumidos de la auditoría en HKLM:, lo que impide la monitorización y los informes centralizadosAsegú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 puertoFallo de una aplicación o de un servicio crítico del sistema, con el consiguiente tiempo de inactividad y posible pérdida de datosReinicia 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íaPasar por alto exposiciones de seguridad críticas, ya que el malware y los servicios no autorizados suelen usar UDP para comunicarse y exfiltrar datosVuelve 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.

➤ Regístrate en la prueba gratuita de 14 días.

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 netstat para 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

FAQs

Puedes usar los cmdlets Get-NetTCPConnection y Get-NetUDPEndpoint en PowerShell para listar todos los puertos TCP y UDP activos, junto con los procesos asociados.

Ejecuta comandos de PowerShell de forma remota con Invoke-Command y PowerShell Remoting (WinRM), o automatiza el proceso a gran escala con una plataforma RMM como NinjaOne.

Exporta los resultados a un archivo CSV o guarda los datos clave, como el número de puertos abiertos y las marcas de tiempo, en el Registro de Windows para su monitorización centralizada.

Los puertos UDP pueden dejar al descubierto vulnerabilidades ocultas que suelen aprovechar el malware o los servicios no autorizados, por lo que es imprescindible incluirlos en cada auditoría.

Las directivas de grupo (GPO) te permiten aplicar reglas de firewall y restringir el acceso no autorizado a los puertos en todos los dispositivos del dominio, para una seguridad de red homogénea.

Entre los problemas más frecuentes están WinRM deshabilitado, la falta de privilegios de administrador o reglas de firewall restrictivas: cualquiera de ellos puede impedir la ejecución remota del script o dejar la recopilación de datos incompleta.

Quizá también te interese…

¿Listo para simplificar los aspectos más complejos de las TI?