Cómo comprobar los puertos en uso en Linux

tux_question

Conocer qué puertos están en uso en un sistema es una tarea básica para cualquier administrador. Desde la configuración de interfaces a la protección contra intrusiones y pasando por cualquier resolución de problemas que podamos imaginar, debemos ser capaces de comprobar si un puerto está prestando algún tipo de servicio en nuestro entorno.

Imaginad la situación en que habéis instalado en vuestro sistema el servicio CUPS de impresión y desconocéis si se ha iniciado correctamente el servicio y levantado su puerto correspondiente 631 o su opcional 515. En esta guía os mostraremos tres comandos básicos para detectar los puertos que emplea un sistema y cuál es su estado.

A continuación haremos un repaso de 3 comandos básicos que resultan especialmente útiles en la administración de cualquier sistema. Se trata de lsof, netstat y nmap, utilidades que ejecutaremos desde la consola de terminal y con privilegios de root.

Comando lsof

El comando lsof es el más básico de cuantos os prestamos y, siendo nativo de Linux, la base que todo usuario debería conocer. Para conocer los puertos abiertos en el sistema mediante este comando, deberéis introducir una secuencia como la siguiente, que os mostrará diversa información donde destacaremos: el nombre de la aplicación (por ejemplo, sshd), el socket del programa (en este caso la dirección IP 10.86.128.138 asociada al puerto 22 que está a la ESCUCHA) y el identificador del proceso (que sería 85379).

$ sudo lsof -i -P -n
$ sudo lsof -i -P -n | grep LISTEN

lsof-outputs

Comando netstat

El comando netstat varía ligeramente en su sintaxis respecto al anterior pero presenta unos parámetros mucho más sencillos de memorizar gracias a una sencilla palabra mnemotécnica. A partir de ahora no os olvidéis de la palabra putona, que hace referencia a las siguientes características:

Cómo redimensionar la partición de Linux
Artículo relacionado:
Redimensionar particiones de Ubuntu
  • p: Muestra las conexiones para el protocolo especificado que puede ser TCP o UDP.
  • u: Lista todos los puertos UDP.
  • t: Lista todos los puertos TCP.
  • o: Muestra los timers.
  • n: Muestra el numero de puerto.
  • a: Visualiza todas las conexiones activas del sistema.

De este modo, introduciendo el comando y filtrándolo con un pipe podemos obtener información sobre un determinado puerto.

$ netstat -putona | grep numero-de-puerto

netstat_putona

Comando nmap

Nmap es una utilidad que nos permite realizar multitud de escaneos en nuestro sistema y uno de ellos, el de puertos abiertos en el equipo. Para ejecutarlo debemos introducir una secuencia del tipo nmap -sX -O Y, tomando X el valor T o U para conexión TCP o UDP respectivamente y el valor Y la dirección IP de nuestra máquina (o localhost para abreviar). Echad un vistazo al siguiente ejemplo.

</pre>
$ sudo nmap -sU -O localhost
$ sudo nmap -sT -O 192.168.0.1
<pre>

Con estas tres aplicaciones ya disponéis de herramientas suficientes para determinar lor puertos abiertos de vuestra máquina. ¿Empleáis las mismas herramientas o conocéis alguna otra forma de verificar los puertos abiertos de un sistema?


5 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Pierre dijo

    No entiendo nada. Normal, no soy un especialista, pero es interesante 🙂

  2.   lilia peregrina dijo

    hola buen dia, como puedo ver los datos que estan llegando por un puerto?
    tengo un dispositivo que por gprs me envia strings al puerto 10005 de mi ubuntu y necesito por terminal ver los strings que me estan llegando, me puedes apoyar por favor? gracias. slds

  3.   PuldarArena dijo

    Con el comando netstat -putona observo que me aparece la dirección 127.0.0.1 en dos protocolos tcp y upd, en ambos casos puerto 53. ¿Es normal o correcto esto?. Casualmente tengo problemas con el dnsmasq y zimbra desktop que no levanta en ubuntu 16.04.

    En intentar iniciar zimbra me arroba: La página 127.0.0.1 ha rechazado la conexión.

    Aprecio su ayuda para sumarme a esta comunidad.

  4.   J.Jeimison dijo

    Muy bueno.

    Solo añadir: Con ls se puede saber la ruta del proceso y también hay otros comandos como ss o fuser con los que podemos ver qué proceso está utilizando un puerto.

    Visto aquí: https://www.sysadmit.com/2018/06/linux-que-proceso-usa-un-puerto.html

  5.   Jorge V. dijo

    Excelente, bien resumido y explicado, no se me olvida lo de PUTONA jeje. ;-D