15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
25.12.2024

Verificación de Puertos Abiertos y en Escucha en Linux Usando Netstat y SS

Monitorear puertos abiertos y en escucha en un sistema Linux es una de las prácticas más fundamentales para mantener la seguridad del servidor, diagnosticar problemas de red y gestionar tu infraestructura de manera efectiva. Ya sea que estés ejecutando un servidor web de producción, un entorno de VPS Hosting, o un Servidor Dedicado, entender exactamente qué puertos están abiertos — y qué servicios están vinculados a ellos — te proporciona la visibilidad necesaria para prevenir acceso no autorizado, detectar configuraciones incorrectas y eliminar superficies de ataque innecesarias.

En esta guía completa, te mostraremos cómo usar los comandos netstat y ss para verificar puertos abiertos y en escucha en cualquier sistema Linux, comparar sus fortalezas e introducir herramientas adicionales como lsof y nmap para análisis de red más profundos.

Por qué es importante monitorear puertos abiertos

Cada puerto abierto en tu servidor representa un posible punto de entrada. Los servicios que están mal configurados, desactualizados o simplemente olvidados pueden exponer tu sistema a explotación. Auditar regularmente tus puertos en escucha te permite:

  • Identificar servicios no autorizados ejecutándose en puertos inesperados
  • Detectar intentos de intrusión o procesos comprometidos
  • Verificar que las reglas del firewall funcionan como se pretende
  • Confirmar que las aplicaciones recién implementadas se vinculan a las interfaces correctas
  • Cerrar puertos no utilizados para reducir tu superficie de ataque

Esto es especialmente crítico para administradores que gestionan entornos de Alojamiento Web Compartido o servidores multi-tenant donde múltiples servicios se ejecutan simultáneamente.

Entendiendo puertos y sus tipos

Antes de profundizar en las herramientas, es importante entender la terminología que encontrarás en la salida de comandos.

TérminoDescripción
Puerto abiertoUn puerto en el que una aplicación está escuchando activamente conexiones entrantes
Puerto en escuchaUn puerto vinculado a un servicio que está esperando tráfico de red
TCP (Protocolo de Control de Transmisión)Orientado a conexión, confiable, utilizado por HTTP, SSH, FTP, etc.
UDP (Protocolo de Datagramas de Usuario)Sin conexión, más rápido pero menos confiable, utilizado por DNS, NTP, etc.

Verificando puertos con netstat

¿Qué es netstat?

netstat (estadísticas de red) es una utilidad clásica de línea de comandos que proporciona información detallada sobre conexiones de red, tablas de enrutamiento, estadísticas de interfaz y puertos en escucha. Aunque ha sido oficialmente deprecada en favor de ss en distribuciones modernas, sigue siendo ampliamente utilizada y se encuentra en muchos sistemas heredados.

Instalando netstat

El comando netstat es parte del paquete net-tools, que puede no estar instalado por defecto en distribuciones Linux modernas.

Debian / Ubuntu:

sudo apt install net-tools

CentOS / RHEL / AlmaLinux / Rocky Linux:

sudo yum install net-tools

Usando netstat para verificar puertos abiertos y en escucha

Para mostrar todos los puertos TCP y UDP en escucha en tu sistema, ejecuta el siguiente comando:

sudo netstat -tuln

Desglose de banderas:

BanderaDescripción
-tMostrar puertos TCP
-uMostrar puertos UDP
-lMostrar solo puertos en escucha
-nMostrar direcciones numéricas en lugar de resolver nombres de host

Salida de ejemplo

Proto  Recv-Q  Send-Q  Local Address     Foreign Address   State
tcp         0       0  0.0.0.0:22        0.0.0.0:*         LISTEN
tcp         0       0  0.0.0.0:80        0.0.0.0:*         LISTEN
tcp6        0       0  :::443            :::*              LISTEN
udp         0       0  0.0.0.0:53        0.0.0.0:*

Entendiendo las columnas de salida

  • Dirección local — La dirección IP y número de puerto donde el servicio está escuchando. 0.0.0.0 significa que el servicio está escuchando en todas las interfaces disponibles.
  • Dirección remota — La IP remota y puerto para conexiones activas. Un asterisco (*) significa que no hay conexión establecida aún.
  • Estado — El estado de la conexión. LISTEN indica que el puerto está abierto y esperando conexiones entrantes.

Filtrando puertos específicos con netstat

Puedes canalizar la salida a través de grep para aislar un puerto o servicio específico. Por ejemplo, para verificar si algo está escuchando en el puerto 80 (HTTP):

sudo netstat -tuln | grep ":80"

Para verificar el puerto 443 (HTTPS), que es esencial para servidores con Certificados SSL instalados:

sudo netstat -tuln | grep ":443"

Para mostrar también el nombre del proceso y PID responsable de cada conexión, añade la bandera -p:

sudo netstat -tulnp

Verificando puertos con ss

¿Qué es ss?

ss (estadísticas de socket) es el reemplazo moderno para netstat. Es más rápido, más eficiente y proporciona una salida más rica — particularmente en sistemas con un alto número de conexiones concurrentes. El comando ss está incluido por defecto en prácticamente todas las distribuciones Linux modernas y no requiere instalación adicional.

Usando ss para verificar puertos abiertos y en escucha

La sintaxis de ss se asemeja estrechamente a la de netstat, haciendo la transición directa:

ss -tuln

Desglose de banderas:

BanderaDescripción
-tMostrar sockets TCP
-uMostrar sockets UDP
-lMostrar solo sockets en escucha
-nMostrar direcciones numéricas

Salida de ejemplo

Netid  State   Recv-Q  Send-Q  Local Address:Port   Peer Address:Port
tcp    LISTEN  0       128     0.0.0.0:22            0.0.0.0:*
tcp    LISTEN  0       511     0.0.0.0:80            0.0.0.0:*
tcp    LISTEN  0       511        [::]:443             [::]:*
udp    UNCONN  0       0       0.0.0.0:53            0.0.0.0:*

Uso avanzado de ss

El comando ss ofrece una variedad de opciones avanzadas de filtrado y visualización que van mucho más allá de lo que netstat puede proporcionar.

Mostrar solo puertos TCP en escucha

ss -tl

Mostrar solo puertos UDP en escucha

ss -ul

Mostrar nombres de procesos y PIDs

Para identificar exactamente qué proceso está usando un puerto específico, usa la bandera -p:

ss -tulnp

Este es uno de los comandos más útiles para solucionar problemas — muestra el nombre del proceso y PID junto a cada socket en escucha, dejando inmediatamente claro qué aplicación posee qué puerto.

Salida de ejemplo con bandera -p

Netid  State   Local Address:Port   Process
tcp    LISTEN  0.0.0.0:80           users:(("nginx",pid=1234,fd=6))
tcp    LISTEN  0.0.0.0:22           users:(("sshd",pid=987,fd=3))
tcp    LISTEN  0.0.0.0:3306         users:(("mysqld",pid=2345,fd=21))

Filtrar por un puerto específico

Para verificar qué proceso está escuchando en el puerto 8080:

ss -tulnp | grep ":8080"

Mostrar todas las conexiones TCP establecidas

ss -tn state established

Mostrar estadísticas resumidas

ss -s

Esto proporciona un resumen rápido de sockets totales por tipo y estado — útil para detectar volúmenes de conexión inusuales.

netstat vs. ss: Una comparación directa

Característica`netstat``ss`
RendimientoMás lento en sistemas ocupadosSignificativamente más rápido
Disponibilidad por defectoRequiere paquete net-toolsPre-instalado en distros modernas
Opciones de filtradoBásicas (grep requerido)Filtros avanzados incorporados
Información de procesoDisponible con -pDisponible con -p
Detalle de salidaEstándarInformación de socket más detallada
Recomendado paraSistemas heredados, familiaridadEntornos Linux modernos

Cuándo usar netstat

  • En sistemas Linux más antiguos donde ss no está disponible
  • Al trabajar con scripts o documentación escrita alrededor de sintaxis netstat
  • Para verificaciones rápidas en sistemas donde net-tools ya está instalado

Cuándo usar ss

  • En cualquier distribución Linux moderna (Ubuntu 20.04+, CentOS 8+, Debian 10+, etc.)
  • Cuando necesitas salida más rápida en servidores de alto tráfico
  • Para filtrado avanzado y análisis detallado de socket

Herramientas adicionales para auditoría de puertos

Más allá de netstat y ss, varias otras utilidades son valiosas para una auditoría de puertos exhaustiva.

Usando lsof

lsof (listar archivos abiertos) trata los sockets de red como archivos, convirtiéndola en otra forma poderosa de identificar qué proceso está usando un puerto dado.

Para verificar qué proceso está vinculado al puerto 80:

sudo lsof -i :80

Para verificar todos los puertos en escucha:

sudo lsof -i -P -n | grep LISTEN

Salida de ejemplo:

COMMAND   PID     USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
nginx    1234     root   6u  IPv4   23456      0t0  TCP *:80 (LISTEN)
sshd      987     root   3u  IPv4   12345      0t0  TCP *:22 (LISTEN)

Usando nmap

nmap es una herramienta poderosa de escaneo de red que puede detectar puertos abiertos tanto localmente como en hosts remotos. Es particularmente útil para verificar tu configuración de firewall desde una perspectiva externa.

Instala nmap si aún no está presente:

sudo apt install nmap       # Debian/Ubuntu
sudo yum install nmap       # CentOS/RHEL

Escanea todos los puertos TCP en la máquina local:

sudo nmap -sT localhost

Escanea puertos abiertos en una dirección IP específica:

sudo nmap -sV 192.168.1.100

La bandera -sV también intenta detectar la versión del servicio ejecutándose en cada puerto abierto, lo cual es invaluable para identificar software desactualizado o vulnerable.

> Nota de seguridad: Solo ejecuta escaneos nmap contra sistemas que posees o para los cuales tienes permiso explícito de escanear.

Flujo de trabajo práctico de seguridad: Auditando puertos de tu servidor

Aquí hay un flujo de trabajo recomendado paso a paso para auditar puertos abiertos en un servidor Linux:

  1. Lista todos los puertos en escucha con información de proceso:
   ss -tulnp
  1. Haz referencias cruzadas de cada puerto contra servicios esperados. Si ves un proceso desconocido en un puerto inesperado, investiga inmediatamente.
  1. Verifica servicios escuchando en todas las interfaces (0.0.0.0) que deberían ser accesibles solo localmente. Por ejemplo, un servidor de base de datos (puerto 3306) típicamente debería vincularse a 127.0.0.1, no a ###PPT_NOTR_86_
15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar