Cómo Ver Puertas Abiertas en Linux: ss, netstat y lsof
Parte del diagnóstico de red, es verificar los servicios con puertos abiertos en Linux.
Cómo Verificar los Puertos Abiertos en Linux
Para verificar los puertos abiertos con el netstat, las opciones "-tunl" pueden ser usadas:
- -t para TCP
- -u para UDP
- -n para no resolver nombres
- -l para los puertos abiertos (listen)
En este ejemplo, netstat lista los puertos abiertos TCP/UDP:
$ netstat -tunlActive Internet connections (only servers)Proto Local Address Foreign Addresstcp 127.0.0.53:53 0.0.0.0:* tcp 0.0.0.0:22 0.0.0.0:*tcp6 0 :::22 :::* udp 127.0.0.53:53 0.0.0.0:*
Netstat con la opción -p muestra los procesos dueños de los puertos. Para usar esta opción es necesario ser root:
$ sudo netstat -tunlpActive Internet connections (only servers)Proto Local Address State PID/Program name tcp 127.0.0.53:53 LISTEN 24813/systemd-resol tcp 0.0.0.0:22 LISTEN 9857/sshd tcp6 :::22 LISTEN 9857/sshd udp 127.0.0.53:53 24813/systemd-resol
El comando ss también puede mostrar los puertos abiertos con la opción idéntica:
# ss -tunelpNetid Local Address:Port Peer Address:Port udp 127.0.0.53%lo:53 0.0.0.0:* ("systemd-resolve",pid=355)udp 0.0.0.0:68 0.0.0.0:* ("dhclient",pid=17984)udp 0.0.0.0:5353 0.0.0.0:* ("avahi-daemon",pid=27533)tcp 0.0.0.0:22 0.0.0.0:* ("sshd",pid=14825)
Comando lsof en Linux
Como todo en Linux es un archivo, también las conexiones de red pueden verse como un "archivo abierto". El comando "lsof" puede usarse en este contexto para ver los archivos que corresponden a direcciones de Internet.
La opción "-i" de lsof filtra los archivos abiertos del tipo de direcciones de Internet. Es necesario ejecutar lsof como root:
$ sudo lsof -i
COMMAND PID USER FD TYPE NODE NAME
sshd 9857 root 3u IPv4 TCP *:ssh (LISTEN)
sshd 9857 root 4u IPv6 TCP *:ssh (LISTEN)
systemd-r 24813 systemd-resolve 12u IPv4 UDP localhost:domain
systemd-r 24813 systemd-resolve 13u IPv4 TCP localhost:domain (LISTEN)
Comando fuser en Linux
El comando "fuser" también puede usarse para mostrar información sobre un puerto abierto específico. Identifica los procesos a través de los archivos o sockets, retornando el PID de los procesos:
$ sudo fuser 22/tcp22/tcp: 9857 24313 24400
Para saber qué proceso está usando un archivo específico:
$ fuser -v /bin/bash USER PID ACCESS COMMAND/usr/bin/bash: ec2-user 16092 ...e. bash
Los comandos netstat, ss, lsof y fuser sirven para ver los puertos abiertos de la máquina local.
Existe una herramienta llamada nmap que también puede descubrir los puertos abiertos tanto de la máquina local como de máquinas remotas.
Entrena tus conocimientos con nuestro quiz
Estas preguntas abordan conceptos clave discutidos en el artículo sobre puertos abiertos en Linux, proporcionando una oportunidad para que los lectores prueben su conocimiento después de leer el material.
[streamquiz id="64"]Aprende mucho más sobre Linux en nuestro curso en línea. Puedes realizar la matrícula aquí. Si ya tienes una cuenta, o quieres crear una, simplemente ingresa o crea tu usuario aquí.
¿Te gustó? Comparte
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.