Ahorre 15% 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
Secciones
Linux Seguridad

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 su infraestructura de manera efectiva. Ya sea que esté ejecutando un servidor web de producción, un entorno de VPS Hosting, o un Dedicated Server, comprender exactamente qué puertos están abiertos — y qué servicios están vinculados a ellos — le proporciona la visibilidad necesaria para prevenir acceso no autorizado, detectar configuraciones incorrectas y eliminar superficies de ataque innecesarias.

En esta guía completa, le 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é el Monitoreo de Puertos Abiertos es Importante

Cada puerto abierto en tu servidor representa un punto de entrada potencial. Los servicios que están mal configurados, desactualizados o simplemente olvidados pueden exponer tu sistema a la 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 Shared Web Hosting 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 (Transmission Control Protocol)Orientado a conexión, confiable, utilizado por HTTP, SSH, FTP, etc.
UDP (User Datagram Protocol)Sin conexión, más rápido pero menos confiable, utilizado por DNS, NTP, etc.

Verificación de 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.

Instalación de 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

Uso de 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:*

Comprensión de las Columnas de Salida

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

Filtrado de 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á en escucha 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

Verificación de 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 se incluye por defecto en prácticamente todas las distribuciones Linux modernas y no requiere instalación adicional.

Usar ss para Verificar Puertos Abiertos y en Escucha

La sintaxis de ss refleja estrechamente la de netstat, lo que hace que la transición sea 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 amplia gama de opciones 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á utilizando un puerto específico, utiliza la bandera -p:

ss -tulnp

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

Salida de Ejemplo con la 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 de Resumen

ss -s

Esto proporciona un resumen rápido de los 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 predeterminadaRequiere paquete net-toolsPreinstalado en distribuciones modernas
Opciones de filtradoBásico (grep requerido)Filtros avanzados integrados
Información de procesosDisponible 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 antiguos donde ss no está disponible
  • Cuando se trabaja con scripts o documentación escrita alrededor de la 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 sockets

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 (list open files) trata los sockets de red como archivos, lo que la convierte en otra forma poderosa de identificar qué proceso está utilizando un puerto determinado.

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 la configuración del 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 que se ejecuta en cada puerto abierto, lo que es invaluable para identificar software obsoleto o vulnerable.

> Nota de Seguridad: Solo ejecuta escaneos nmap contra sistemas que poseas o para los que tengas permiso explícito de escanear.

Flujo de Trabajo Práctico de Seguridad: Auditoría de 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 procesos:
   ss -tulnp
  1. Haz referencia cruzada de cada puerto contra los servicios esperados. Si ves un proceso desconocido en un puerto inesperado, investiga inmediatamente.
  1. Verifica los servicios que escuchan 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 debe vincularse a 127.0.0.1, no a 0.0.0.0.
  1. Verifica tus reglas de firewall con iptables -L -n o ufw status verbose para asegurar que solo los puertos previstos estén expuestos externamente.
  1. Usa nmap desde un host externo para confirmar qué puertos son realmente accesibles desde internet, ya que las reglas de firewall pueden diferir de lo que ss reporta localmente.
  1. Cierra o restringe cualquier puerto que no sea requerido usando tu firewall o deteniendo el servicio asociado.

Referencia Rápida: Comandos Más Útiles

# List all listening TCP and UDP ports (modern, recommended)
ss -tuln

# List listening ports with process names and PIDs
ss -tulnp

# List all listening ports using netstat (legacy)
sudo netstat -tulnp

# Check which process is using port 443
ss -tulnp | grep ":443"

# Check open ports with lsof
sudo lsof -i -P -n | grep LISTEN

# Scan local machine for open ports with nmap
sudo nmap -sT localhost

Conclusión

Auditar regularmente puertos abiertos y en escucha es una parte innegociable de la administración de servidores Linux. Herramientas como netstat y ss te dan visibilidad inmediata y detallada sobre qué servicios se están ejecutando, qué puertos ocupan y si hay algo inesperado en tu sistema.

Para entornos Linux modernos, ss es la opción clara — es más rápido, más capaz y disponible por defecto. Sin embargo, netstat sigue siendo un respaldo confiable para sistemas heredados o administradores ya familiarizados con su sintaxis. Complementar estas herramientas con lsof y nmap proporciona una imagen completa de la exposición de red de tu servidor.

Ya sea que estés endureciendo un despliegue de VPS Hosting, administrando una flota de Servidores Dedicados, o asegurando un entorno de Email Hosting, dominar la auditoría de puertos es una habilidad esencial que contribuye directamente a la seguridad y confiabilidad de tu infraestructura.