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:

  • 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?


Categorías

Linux, Tutoriales

Luis Gómez

Ingeniero informático y administrador de sistemas. Es un apasionado de la tecnología en general y de la informática en particular. Le gustan los... Ver perfil ›

Un comentario

  1.   Pierre dijo

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

Escribe un comentario