Ya sea que esté utilizando Linux como servidor o escritorio, conocer los puertos abiertos o los puertos en uso puede ser útil en una variedad de situaciones.
Por ejemplo, si está ejecutando un servidor web basado en Apache o Ngnix, el puerto en uso debe ser 80 o 443. Verificar los puertos lo confirmará. Del mismo modo, puede verificar qué puerto está utilizando SMTP o SSH u otros servicios. Saber qué puertos están en uso puede ser útil al asignar los puertos a un nuevo servicio.
También puede comprobar si hay puertos abiertos para la detección de intrusos.
Hay varias formas de comprobar los puertos en Linux. Compartiré dos de mis métodos favoritos en este consejo rápido.
Método 1:Comprobación de puertos abiertos en el sistema Linux actualmente conectado usando comando lsof
Si ha iniciado sesión en un sistema, ya sea directamente o a través de SSH, puede usar el comando lsof para verificar sus puertos.
sudo lsof -i -P -n
Este comando lsof se usa para encontrar los archivos y procesos usados por un usuario. Las opciones de usuario aquí son:
- -i:si no se especifica una dirección IP, esta opción selecciona la lista de todos los archivos de red
- -P:inhibe la conversión de números de puerto a nombres de puerto para archivos de red
- -n:inhibe la conversión de números de red a nombres de host para archivos de red
Pero esto también nos muestra muchos puertos adicionales que la computadora en realidad no escucha.
Simplemente puede canalizar esta salida al comando grep y hacer coincidir el patrón "ESCUCHAR", así:
sudo lsof -i -P -n | grep LISTEN
Esto solo mostrará los puertos que nuestra computadora está escuchando activamente y también qué servicio está usando dicho puerto abierto.
Método 2:Comprobación de puertos en cualquier servidor Linux remoto mediante el comando netcat
nc (Netcat) es una utilidad de línea de comandos que lee y escribe datos entre computadoras a través de la red usando los protocolos TCP y UDP.
A continuación se muestra la sintaxis de nc
comando:
nc [options] host port
Esta utilidad tiene un ingenioso -z
bandera. Cuando se usa, hará nc
busque demonios de escucha sin enviar ningún dato al puerto.
Combina esto con -v
marca, habilitando la verbosidad, puede obtener una salida detallada.
A continuación se muestra el comando que puede usar para buscar puertos abiertos usando el nc
comando:
nc -z -v <IP-ADDRESS> 1-65535 2>&1 | grep -v 'Connection refused'
Reemplace IP-ADDRESS
con la dirección IP del sistema Linux para el que está comprobando los puertos.
En cuanto a por qué seleccioné valores 1
a 65535
, eso se debe a que el rango de puertos comienza desde 1
y termina en 65535
.
Finalmente, canalice la salida a grep
dominio. Usando el -v
opción, excluye cualquier línea que tenga "Conexión rechazada" como patrón coincidente.
Esto mostrará todos los puertos que están abiertos en la computadora a los que puede acceder otra máquina en la red.
Conclusión
De los dos métodos, prefiero el comando lsof. Es más rápido que el comando nc. Sin embargo, debe iniciar sesión en el sistema y tener acceso a Sudo para eso. En otras palabras, lsof es una opción más adecuada si está administrando un sistema.
El comando nc tiene la flexibilidad de escanear puertos sin iniciar sesión.
Ambos comandos se pueden usar para verificar los puertos abiertos en Linux según el escenario en el que se encuentre. Disfrute.