Introducción
Un puerto es un punto final de comunicación. A nivel de software, dentro de un sistema operativo, un puerto es una construcción lógica que identifica un proceso específico o un tipo de servicio de red. Se identifica un puerto para cada combinación de dirección y protocolo de transporte mediante un número sin firmar de 16 bits, conocido como número de puerto. . Los protocolos de transporte más comunes que utilizan números de puerto son el Protocolo de control de transmisión (TCP) y el Protocolo de datagramas de usuario (UDP).
Además, el puerto es una entidad lógica que representa un punto final de comunicación y está asociado con un proceso o servicio determinado en un sistema operativo. En artículos anteriores, explicamos cómo averiguar la lista de todos los puertos abiertos en Linux y cómo verificar si se puede acceder a los puertos remotos mediante el comando Netcat.
1. Usando el comando lsof
lsof El comando (List Open Files) se usa para listar todos los archivos abiertos en un Linux
Para instalarlo en su sistema, ejecute
$ sudo apt-get install lsof #for Debian, Ubuntu and Mint
$ sudo yum install lsof #for RHEL/CentOS/Fedora and Rocky Linux
$ sudo emerge -a sys-apps/lsof #for Gentoo Linux
$ sudo pacman -S lsof #for Arch Linux
$ sudo zypper install lsof #for OpenSUSE
Para encontrar el proceso/servicio que escucha en un puerto en particular, ejecute el siguiente comando:
[root@unixcop ~]# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 12289 root 4u IPv6 70310 0t0 TCP *:http (LISTEN)
httpd 24040 apache 4u IPv6 70310 0t0 TCP *:http (LISTEN)
httpd 24041 apache 4u IPv6 70310 0t0 TCP *:http (LISTEN)
httpd 24042 apache 4u IPv6 70310 0t0 TCP *:http (LISTEN)
[root@unixcop ~]#
2. Uso del comando netstat
Así que netstat El comando se refiere a (estadísticas de red) que se utiliza para mostrar información, incluidas las conexiones de red, las tablas de enrutamiento y las estadísticas de interfaz.
Para instalar netstat:
$ sudo apt-get install net-tools #for Debian/Ubuntu & Mint
$ sudo dnf install net-tools #for CentOS/RHEL/Fedora and Rocky Linux
$ pacman -S netstat-nat #for Arch Linux
$ emerge sys-apps/net-tools #for Gentoo
$ sudo dnf install net-tools #for Fedora
$ sudo zypper install net-tools #for openSUSE
Puedes usarlo con el grep Comando para encontrar el proceso o servicio escuchando en un puerto particular en Linux como con el siguiente comando:
$ netstat -ultnp | grep -w ':80'
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816030200.png)
En el comando anterior, las banderas.
l
– le dice a netstat que solo muestre los sockets de escucha.p
– permite mostrar el ID del proceso y el nombre del proceso.n
– le indica que muestre direcciones numéricas.t
– le dice que muestre las conexiones tcp.grep -w
– muestra la coincidencia de la cadena exacta (:80).
3. Uso del comando del fusor
fusor El comando muestra los PID de los procesos que utilizan los archivos o sistemas de archivos especificados.
Puedes instalarlo con:
$ sudo apt-get install psmisc #for Debian, Ubuntu and Mint
$ sudo yum install psmisc #for RHEL/CentOS/Fedora and Rocky Linux
$ sudo emerge -a sys-apps/psmisc #for Gentoo Linux
$ sudo pacman -S psmisc #for Arch Linux
$ sudo zypper install psmisc #for OpenSUSE
Puede encontrar el proceso/servicio escuchando en un puerto en particular ejecutando el comando:
[root@unixcop ~]# fuser 80/tcp
80/tcp: 12289 24040 24041 24042
[root@unixcop ~]#
Para encontrar el nombre del proceso usando el número PID con el comando ps :
$ ps -p 2053 -o comm=
$ ps -p 2381 -o comm=
[root@unixcop ~]# fuser 80/tcp
80/tcp: 12289 24040 24041 24042
[root@unixcop ~]# ps -p 12289 -o comm=
httpd
[root@unixcop ~]# ps -p 24040 -o comm=
httpd
[root@unixcop ~]
Conclusión
En esta guía, conoce las mejores formas de encontrar el proceso/servicio escuchando en un puerto particular en Linux.