Verifique qué proceso está utilizando un puerto en Linux

Verifique qué proceso está utilizando un puerto en Linux

Que es un puerto?

En las redes de computadora, un puerto representa un punto de entrada y salida lógicos para una conexión. Los puertos se basan en el software y son completamente virtuales. Estos puertos en una computadora son administrados por el sistema operativo.

De que hablaremos?

Este tutorial rápido demuestra los diversos métodos para determinar qué proceso o servicio de Linux está escuchando actualmente en un puerto específico. Hablemos de los puertos y su propósito.

¿Cómo son los puertos análogos a los puertos físicos??

Así como los puertos físicos ayudan a interactuar con varios dispositivos periféricos conectados a una computadora, los puertos ayudan a los diferentes servicios a comunicarse entre sí. Estos servicios pueden estar en la misma computadora o en diferentes computadoras.

Un poco sobre el puerto de un servicio

Para escuchar las solicitudes de conexión entrantes, un proceso se asocia con un número de puerto. La mayoría de los procesos están configurados con un puerto predeterminado, y tienen que usar ese puerto según su especificación. No cambian automáticamente al otro puerto a menos que su configuración se modifique explícitamente.

Algunos ejemplos de protocolos y sus puertos predeterminados asociados incluyen el protocolo Secure Shell (SSH) (Port22), el Apache HTTP (Port80), el servidor de base de datos MySQL (Port3306), etc. Puede usar esta información para descubrir qué puerto predeterminado utiliza un servicio.

El archivo de configuración de estos servicios se puede editar para usar algún otro puerto también.

Verificar los puertos en Linux

Veamos ahora cómo verificar qué puertos/puertos está utilizando un proceso en Linux. Aquí, le mostraremos los diferentes comandos para este propósito.

1. Comando LSOF

La utilidad LSOF es útil para obtener una lista de los puertos que utilizan su sistema. Consideremos el siguiente ejemplo para obtener una información sobre un proceso (procesos) utilizando el puerto TCP 22:

$ sudo lsof -i tcp: 22

El comando LSOF proporciona más información como el nombre del usuario y qué ID de proceso están vinculados a cada proceso. Funciona con los puertos TCP y UDP.

2. Comando SS

El ss El comando es otra forma de averiguar qué procesos están vinculados a un cierto puerto. Aunque LSOF es la abreviatura más común, algunas personas pueden encontrar que SS es más útil.

Busquemos los procesos o servicios que escuchen en el puerto 3306:

$ sudo ss -tunap | GREP: 3306

Desglosemos este comando:

1. T: Le dice al comando ss que muestre los paquetes TCP.

2. u: Le dice al comando ss que muestre los paquetes UDP.

3. norte: Se usa para mostrar los números de puerto en lugar de sus traducciones.

4. a: Se utiliza para mostrar los enchufes de escucha y no perjudicada de todos los tipos.

5. pag: Se utiliza para mostrar los procesos que utilizan un socket.

El resultado del comando anterior muestra qué proceso está utilizando qué puerto. También puede emitir el siguiente comando:

$ sudo ss -tup -a sport =: 80

Aquí, el deporte significa el puerto de origen.

Estos dos enfoques pueden ayudarlo a encontrar las ID de los procesos que están conectados a diferentes puertos.

3. Comando netstat

El comando NetStat muestra la información sobre su red y se puede utilizar para solucionar los problemas o cambiar la forma en que su red está configurada. También puede vigilar de cerca las conexiones de sus redes.

Este comando se usa a menudo para ver una información sobre conexiones entrantes y salientes, tablas de enrutamiento, escucha de puertos y estadísticas de uso. Aunque se ha vuelto obsoleto en los últimos años, NetStat sigue siendo una herramienta útil para analizar las redes.

Con el comando GREP, NetStat puede determinar qué proceso o servicio está utilizando un cierto puerto (mencionando el puerto):

$ sudo netstat -ltnp | Grep -W ': 80'

Las opciones utilizadas aquí se pueden clasificar de la siguiente manera:

1. T: Solo muestra la conexión TCP.

2. l: Se usa para mostrar los resultados en una lista.

3. norte: Muestra direcciones y números de puerto en formato numérico.

4. pag: Muestra el nombre PID y el programa que están asociados con cada enchufe.

4. Comando fusor

El comando fusor determina los procesos que utilizan los archivos o enchufes. Puede usarlo para enumerar los servicios que se ejecutan en un puerto específico. Tomemos el ejemplo del puerto 3306 y veamos qué servicios se ejecutan aquí:

$ sudo fusor 3306/tcp

Esto nos proporciona los números de proceso utilizando este puerto. Puede usar este número de proceso para encontrar los nombres de proceso correspondientes. Por ejemplo, si el número de proceso es 15809, el comando para usar aquí es el siguiente:

$ PS -P 15809 -O Comm =

Sin embargo, se requieren ciertas herramientas para identificar los procesos que utilizan un puerto no estándar. "LSOF" es una herramienta para descubrir qué servicios están disponibles en una red y qué puertos usan. Considere el siguiente ejemplo. Esto muestra cómo enumerar los puertos de escucha UDP y TCP:

$ sudo lsof -pni | egrep "(udp | escuchar)"

La siguiente es una descripción de las opciones que se utilizan aquí:

1. PAG: Suprime la búsqueda del nombre del servicio del puerto.

2. norte: Muestra las direcciones de red numéricas.

3. i: Enumera los sockets IP.

Tanto los puertos como los procesos asociados se muestran en el resultado mencionado previamente. De esta manera es particularmente útil para procesos con puertos no defectuosos.

Conclusión

En este artículo, hablamos sobre cuatro posibles herramientas de línea de comandos de Linux y proporcionamos los ejemplos sobre cómo usarlas para averiguar qué proceso está escuchando en cierto puerto.