Localizar y bloquear puertos abiertos no deseados en Linux debería ser una tarea que todo administrador de red sabe hacer.
Entonces eres administrador de red y tiene varias máquinas Linux en tu centro de datos. Has encontrado un tráfico extraño rebotando en tu red y tu curiosidad se ha despertado. ¿Es posible que el tráfico esté haciendo uso de un puerto abierto en una máquina? Si es así, ¿dónde está el puerto y cómo lo cierras?
En esas máquinas Linux, la tarea es bastante simple. Quiero mostrarle cómo ubicar un puerto abierto y cerrarlo. Haré la demostración utilizando Parrot OS, aunque el proceso será similar en muchas distribuciones, la única diferencia es cómo cierras el puerto.
- Lo que necesitarás
Para que esto funcione, todo lo que necesitará es una instancia de una distribución Linux y una cuenta de usuario con privilegios de sudo.
1. Cómo ubicar un puerto de escucha (listening)
Afortunadamente, no tienes que instalar ningún software para que esto funcione. ¿Por qué? Porque usaremos el comando ss
(ya que netstat ha quedado en desuso) para ver los puertos de escucha en tu servidor o PC. Esto se realizará completamente desde la línea de comandos, por lo tanto, inicia sesión en tu servidor o usa un shell seguro para acceder. Una vez que esté en el indicador de bash, emite el comando:
sudo ss -tulwn | grep LISTEN
Las opciones son las siguientes:
-t
Mostrar solo sockets TCP en Linux-u
Mostrar solo sockets UDP en Linux-l
Mostrar tomas de escucha (por ejemplo, el puerto TCP 22 es abierto por el servidor SSHD)-p
Lista el nombre del proceso que abrió el socket-n
No resuelve los nombres de servicio
La salida de la siguiente imagen enumerará solo los puertos de escucha:
Como puedes ver, solo hay un puñado de puertos de escucha en esta máquina (el puerto 34323
es utilizado por Remote-Touchpad para utilizar tu smartphone como mouse). Esa es una lista bastante corta de puertos.
Si no estás seguro de qué puerto se asigna a qué servicio, siempre puedes averiguarlo en el archivo /etc/services
. Lee ese archivo con el comando:
less /etc/services
Deberías ver una lista de todos los puertos disponibles para Linux:
2. Cómo cerrar un puerto
Supongamos que estás alojando un servidor web en la máquina pero no quieres que escuche el puerto 8080. En cambio, solo deseas que el tráfico pase por los puertos 80 (HTTP) y 443 (HTTPS). Para cerrar el puerto 8080, usaremos el comando ufw (Firewall sin complicaciones) de la siguiente manera:
sudo ufw deny 8080
Deberías ver que las reglas se han actualizado y el puerto ahora está bloqueado. Si encuentras que el bloqueo de este puerto puede causar problemas con un servicio o aplicación, puedes volver a abrirlo con el comando:
sudo ufw allow 8080
El siguiente ejemplo lo utilicé para el puerto 34323
:
Y eso es todo lo que hay para localizar y cerrar un puerto de escucha en Linux. Este proceso debería funcionar en la mayoría de las distribuciones, la única advertencia será cómo bloqueas un puerto, ya que no todas las distribuciones usan ufw
. Si tu distribución de elección utiliza un comando diferente para bloquear puertos (como sudo iptables -A INPUT -p tcp --destination-port 80 -j DROP
), asegúrate de saber cómo realizar esta tarea en tus servidores.
También te interesará:
- Cómo revisar lista de puertos abiertos en Linux
- Cómo saber qué puertos están abierto en Windows
- USBGuard: Cómo proteger los puertos USB en Linux
Si te gusta el contenido y deseas apoyar a la mejora del sitio web, considera hacer una contribución ¡haciendo clic aquí por favor!. ¡NO ES OBLIGATORIO, GRACIAS! 🙂
¿Te ha gustado este artículo? Sígue este blog en su fanpage de Facebook, Twitter, Instagram y/o YouTube para que no te pierdas del mejor contenido informático y hacking!