¿Qué es un puerto?
Un puerto es un número de 16 bits (0 a 65535) para ayudar a identificar una aplicación o proceso determinado en un sistema operativo Linux (Unix). El puerto diferencia una aplicación de otra en un sistema Linux.
A continuación se presentan las diferentes categorías de puertos:
0 – 1023 – Denominados Puertos Conocidos
1024 – 49151 -Referido como Puertos Registrados
49152 – 65535 – Denominados puertos dinámicos
Utilizando el siguiente comando, se muestra una lista de aplicaciones y puertos en su terminal:
cat /etc/services
TCP : TCP significa Protocolo de control de transmisión. Es el protocolo más utilizado habitualmente en Internet. TCP no es sólo una comunicación unidireccional, sino que envía paquetes de vuelta para confirmar que ha recibido sus paquetes.
UDP : También conocido como Protocolo de datagrama de usuario. Es un protocolo de comunicaciones alternativo al TCP. El protocolo UDP funciona de forma similar a TCP. Sin embargo, ignora todas las cosas que controlan los errores. UDP es necesario cuando la velocidad es deseable y no es necesaria la corrección de errores.
SOCKETS : Socket permite la comunicación de dos procesos diferentes en la misma máquina o en máquinas diferentes.
Veamos diferentes maneras de listar un puerto abierto en Linux.
1. Netstat
En este método usaremos el comando netstat -atu para buscar puertos abiertos en Linux.
Usamos las banderas -a, -t y -u para netstat.
-a : muestra todos los sockets
-t : muestra las conexiones TCP
-u : muestra las conexiones UDP
También puede añadir el indicador -p para mostrar el PID relacionado con el nombre del proceso o programa.
Para mostrar sólo los puertos UDP, puede utilizar el siguiente comando:
netstat -vaun
Además, puede utilizar el siguiente comando para buscar puertos TCP:
netstat -vatn
2. lsof
En lugar de usar netstat, podemos usar el comando lsof para mostrar los puertos abiertos en Linux:
lsof -i
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>i
El siguiente comando también puede ayudar a mostrar los zócalos abiertos:
lsof -n -P | grep LISTEN
Además, puede utilizar el siguiente comando para listar todas las conexiones TCP:
lsof -i tcp
Además, puede utilizar el siguiente comando para las conexiones UDP:
lsof -i udp
3. Comando Asignado de Red
En este método usaremos nmap para detectar el puerto abierto en su sistema. Podemos usar el siguiente comando para mostrar las conexiones del puerto tcp:
nmap -sT -O localhost
Finalmente, para mostrar las conexiones del puerto udp, podemos usar el siguiente comando:
nmap -sU localhost
Conclusión
Cuando se trata de la seguridad de su PC con Linux, lo primero que debe hacer es cerrar todos los puertos innecesarios para evitar el acceso externo. Con los métodos mencionados anteriormente, podrá comprobar fácilmente si hay puertos abiertos en un sistema Linux y determinar qué puertos deben estar cerrados o abiertos.