Cómo ver puertos abiertos en Linux
Cuando administrás un servidor Linux, es muy importante saber qué puertos están abiertos y qué programas los están utilizando. Esto sirve para revisar la seguridad del sistema, diagnosticar problemas de red o verificar si un servicio está funcionando correctamente.
En esta guía vas a aprender cómo ver puertos abiertos en Linux usando comandos simples, con ejemplos fáciles de entender.
Qué es un puerto en Linux
Un puerto de red es un punto de comunicación que usan los programas para enviar y recibir datos.
Por ejemplo:
- el puerto 80 se usa para sitios web (HTTP)
- el puerto 443 para sitios seguros (HTTPS)
- el puerto 22 para conexiones SSH
Cuando un programa está escuchando en un puerto, significa que está esperando conexiones desde la red.
Ver puertos abiertos con ss
El comando más moderno para ver puertos abiertos en Linux es ss.
Para listar todos los puertos abiertos ejecutá:
ss -tuln
Significado de las opciones:
t→ conexiones TCPu→ conexiones UDPl→ puertos en escuchan→ mostrar números de puerto (sin resolver nombres)
Ejemplo de salida:
Netid State Local Address:Port
tcp LISTEN 0.0.0.0:22
tcp LISTEN 0.0.0.0:80
tcp LISTEN 0.0.0.0:443
Esto indica que el sistema tiene abiertos los puertos 22, 80 y 443.
Ver qué proceso usa un puerto
También podés ver qué programa está usando cada puerto.
ss -tulnp
Ejemplo de salida:
tcp LISTEN 0.0.0.0:22 users:(("sshd",pid=732))
tcp LISTEN 0.0.0.0:80 users:(("nginx",pid=1021))
Esto significa:
- el puerto 22 lo usa sshd
- el puerto 80 lo usa nginx
Este comando es muy útil para diagnosticar conflictos de puertos.
Ver puertos abiertos con netstat
Otro comando muy conocido es netstat. Aunque es más antiguo, todavía se usa en muchos sistemas.
netstat -tuln
Ejemplo de salida:
Proto Local Address State
tcp 0.0.0.0:22 LISTEN
tcp 0.0.0.0:80 LISTEN
Opciones utilizadas:
t→ TCPu→ UDPl→ puertos abiertosn→ mostrar números de puerto
Si querés ver también los procesos:
netstat -tulnp
Ver si un puerto específico está abierto
A veces solo querés saber si un puerto determinado está en uso.
Podés filtrar con grep.
Ejemplo para revisar el puerto 80:
ss -tuln | grep :80
Si aparece una línea, significa que el puerto está activo.
Ver puertos abiertos con lsof
El comando lsof también permite ver puertos de red utilizados por procesos.
lsof -i
Ejemplo de salida:
COMMAND PID USER TYPE DEVICE NODE NAME
sshd 732 root IPv4 TCP *:22 (LISTEN)
nginx 1021 www IPv4 TCP *:80 (LISTEN)
Esto muestra:
- el programa
- el puerto
- el tipo de conexión
Ver puertos abiertos desde otra máquina
Si querés comprobar puertos abiertos desde otro equipo, podés usar una herramienta como nmap.
Ejemplo:
nmap 192.168.1.10
Esto mostrará qué puertos están accesibles desde la red.
Ejemplo de resultado:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
Esto se utiliza mucho para auditorías de seguridad y diagnóstico de red.
