¿Cómo saber qué puertos están abiertos y qué aplicación los escucha?
¿Qué comando utilar para analizar los puertos de la máquina donde nos encontramos conectados?
netstat
sudo netstat -tulpn
De la ejecución de este comando obtendremos sobre los puertos y protocolos que escucha nuestra máquina, que programa y PID tienen asociado cada puerto y el estado del mismo.
ss
Alternativamente se puede emplear el más moderno y potente comando ss
con el que se pueden obtener resultados similares.
ss -a | grep LISTEN --color
fuser
Si sabemos ya el puerto que queremos comprobar el PID del programa que escucha en un puerto lo podremos hacer con el comando siguiente, donde cambiaremos #puerto por el número de puerto, poniendo tcp o udp dependiendo del protocolo que nos interese.
sudo fuser #puerto/tcp
cat /proc/xxx y ps
Si queremos saber el programa asociado al PID obtenido ejecutaremos el comando que sigue cambiando #pid
por el número obtenido.
sudo ls -l /proc/#pid/exe
Si con el nombre obtenido aún no tenemos claro que programa es podremos ejecutar man “programa”
o whatis “programa”
. Aunque siempre nos quedará google…
Si lo que queremos saber es el propietario del programa ejecutaremos lo siguiente.
sudo ls -l /proc/#pid/cwd
O también …
sudo ps aux | grep #pid
nmap
Si queremos comprobar los puertos de una máquina remota podremos ejecutar el siguiente comando.
sudo nmap -sN -p T:#puerto URL
Donde T se refiere a tcp y puede cambiarse por U para comprobar el protocolo udp, #puerto es el número de puerto y URL es la dirección del host a comprobar.
Se puede obtener algo más de información con las siguientes opciones.
sudo nmap -p 1-65535 -T4 -A -v URL