GNU/Linux es un sistema operativo que tiene gran cantidad de puertos disponibles, 65535 para ser precisos. Algunos servicios o aplicaciones utilizan puertos específicos, pero en otras pueden ser cambiados, como por ejemplo en el caso del protocolo SSH. Un servidor dedicado, VPS o compartido con sistema operativo GNU/Linux puede tener una gran cantidad de puertos abiertos, y muchos de ellos pueden estar en uso o no estarlo. Por razones de seguridad, solamente se deberían dejar abiertos los puertos que sean utilizados.
Vamos a ver a continuación es una lista con algunos de los puertos más importantes en los sistemas operativos GNU/Linux. La gran mayoría de estos suelen estar abiertos por defecto, aunque en algunos casos esto no se da. Hay que tener en cuenta que mantener SSH en el puerto 22 es considerado un riesgo a nivel de seguridad, por lo que se recomienda cambiarlo.
21 > FTP 22 > SSH 23 > Telnet 25 > SMTP 43 > WHOIS 53 > Nameservers (sistema DNS) 80 > HTTP (servidor web, ya sea Apache, Nginx u otro) 110 > Protocolo POP utilizado para mail. 111 > rpcbind 143 > Protocolo IMAP utilizado para mail. 443 > HTTP seguro (utilizado por certificados SSL a nivel web, https://) 953 > rndc 993 > IMAP bajo SSL 995 > Protocolo POP con SSL 2082 > Panel cPanel 2083 > cPanel con SSL 2086 > Panel WHM 2087 > WHM con SSL 2095 > Webmail 2096 > Webmail con SSL 3306 > MySQL 4643 > Virtuosso 9999 > Urchin Panel Plesk > 8443 Panel DirectAdmin > 2222 Panel Webmin > 10000
¿Cómo podemos saber qué puertos están abiertos y qué aplicaciones los están utilizando?
Hay diversas formas de hacerlo, pero podemos usar por ejemplo los comandos nmap y lsof:
Mapeo a todo el rango de puertos disponible (1-65535) de nuestra máquina local:
nmap -p 1-65535 localhost
O si quieres escanear un solo puerto en particular:
nmap -p 22 localhost
¿Cómo averiguo qué proceso ocupa determinado puerto?
Para eso usamos lsof:
lsof -i:56388
Espero que les haya sido útil, hasta la próxima!