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:

Listar puertos de escucha Linux
Listar puertos de escucha Linux

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:

Ver servicios y puertos en Linux
Ver servicios y puertos en 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:

Abrir y cerrar puertos con ufw
Abrir y cerrar puertos con ufw

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.

Fuente: esgeeks.com

Compartir