Ver los puertos abiertos de tu equipo con Powershell

Una de las operaciones más habituales para comprobar la seguridad de un ordenador es ver qué puertos tiene abiertos. Afortunadamente para ti, con PowerShell lo podemos ver de forma muy sencilla, sin necesidad de usar ningún software.

¿QUÉ SON LOS PUERTOS?

Las comunicaciones que realiza un ordenador se realizan mediante los puertos de red.

Los puertos son números de identificación únicos que permiten a los programas de ordenador interactuar con la red. Cada programa que se ejecuta en un ordenador utiliza un número de puerto diferente para comunicarse con otros dispositivos de la red. Por ejemplo, un servidor web puede usar el puerto 443 para recibir solicitudes de navegadores web (https), mientras que un cliente de BitTorrent puede utilizar el puerto 6881 para enviar descargar documentos.

Por lo general, un ordenador tiene 65535 puertos listos para utilizar, de los cuales hay algunos programas que ya tienen por defecto un número asignado, como los protocolos de navegación por Internet (80 y 443), conexiones SSH (22), telnet (23), protocolos de correo electrónico (587 y 993), etc.

Además, los puertos se pueden clasificar en dos tipos: puertos TCP (Transmission Control Protocol) y puertos UDP (User Datagram Protocol). Los puertos TCP se utilizan para conexiones de red más fiables, donde importa que llegue al receptor todos los paquetes de red, mientras que los puertos UDP se utilizan para conexiones más rápidas y eficientes, donde no importa que haya alguna pérdida de paquetes.

VERIFICANDO LOS PUERTOS ABIERTOS CON POWERSHELL

Los puertos abiertos en un ordenador suponen una potencial entrada al equipo, si el servicio que está a la escucha es vulnerable. Por eso, encontrar los puertos abiertos y comprobar que sólo se abren los requeridos es esencial para proteger el ordenador.

A continuación, te explico cómo ver los puertos que están en escucha:

  1. Abre PowerShell en tu ordenador.
  2. Una vez que se abra PowerShell, copia y pega el siguiente comando:
Get-NetTCPConnection -State Listen

Este comando utiliza el cmdlet Get-NetTCPConnection para obtener una lista de todas las conexiones TCP en tu ordenador y luego utiliza la propiedad State para filtrar la lista y mostrar sólo aquellas conexiones que están en estado Listen, es decir, aquellos puertos que están siendo utilizados y están esperando conexiones entrantes.

También puedes ver qué puertos tienen una conexión establecida sustituyendo Listen por Established.

  1. Después de ejecutar el comando, PowerShell mostrará una lista de puertos TCP abiertos en tu ordenador, junto con información adicional como el estado de la conexión, el proceso que está utilizando el puerto y la dirección IP local y remota.
VERIFICANDO LOS PUERTOS ABIERTOS CON POWERSHELL

VER EL PROCESO QUE ESTÁ ESCUCHANDO DETRÁS DEL PUERTO

Una vez obtenido la lista de puertos abiertos con el comando anterior, puedes ver qué proceso está escuchando por el puerto con el siguiente comando:

Get-Process -Id "número_del_proceso"

Siguiendo el ejemplo anterior veamos qué proceso está escuchando por la IP local 127.0.0.1 por el puerto 80:

VER EL PROCESO QUE ESTÁ ESCUCHANDO DETRÁS DEL PUERTO

Como ves en la imagen, el proceso que está escuchando pertenece al software de monitorización PRTG Server.