Saltar al contenido
TCPRiesgo alto si se expone

Puerto 21 (FTP): para qué sirve y cómo protegerlo

El puerto 21 TCP es el puerto de control de FTP (File Transfer Protocol): por él se envían el usuario, la contraseña y las órdenes para listar, subir o descargar ficheros. FTP no cifra nada, así que hoy se recomienda sustituirlo por SFTP (puerto 22) o, como mínimo, FTPS.

Qué es el puerto 21

FTP es de 1971 y se diseñó para redes de confianza. Cualquiera que pueda ver el tráfico (una wifi pública, un equipo comprometido en la red) puede leer las credenciales en texto plano. Muchos hostings siguen ofreciéndolo por compatibilidad con programas antiguos.

En modo pasivo, el servidor indica al cliente un puerto alto al que conectarse para los datos. Si el servidor está detrás de NAT, hay que configurarle la IP pública (pasv_address en vsftpd) y abrir ese rango en el firewall; si no, la conexión se queda colgada al listar directorios.

¿Es peligroso tener abierto el puerto 21?

Riesgo alto: No debe estar abierto a Internet.

  • Credenciales y ficheros sin cifrar.
  • Blanco constante de bots que prueban contraseñas.
  • Los servidores FTP anónimos mal configurados filtran datos con frecuencia.

Cómo proteger el puerto 21

  • Usa SFTP (incluido en OpenSSH) en lugar de FTP.
  • Si tienes que usar FTP, activa TLS (FTPS), desactiva el acceso anónimo y usa fail2ban.
  • Encierra a cada usuario en su carpeta (chroot_local_user=YES en vsftpd).

Comandos y configuración

Comprobar si el puerto 21 está abierto

bash
sudo ss -tlnp | grep ':21 '
nc -zv 203.0.113.10 21
sudo nmap -p 21 203.0.113.10

vsftpd: modo pasivo detrás de NAT

ini
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
pasv_address=203.0.113.10
anonymous_enable=NO
chroot_local_user=YES
ssl_enable=YES

ufw

bash
sudo ufw allow 21/tcp
sudo ufw allow 40000:40100/tcp

También puedes comprobarlo desde fuera de tu red con nuestro escáner de puertos online.

Herramientas para comprobarlo

Preguntas frecuentes

¿Qué diferencia hay entre FTP, FTPS y SFTP?

FTP no cifra nada. FTPS es FTP con TLS, usa los mismos puertos (21 o 990). SFTP es un protocolo distinto que funciona dentro de SSH, por el puerto 22, y solo necesita un puerto.

¿Por qué mi cliente FTP conecta pero no lista los ficheros?

Casi siempre es el modo pasivo: el firewall bloquea el rango de puertos de datos o el servidor anuncia su IP privada en lugar de la pública.

Puertos relacionados

Ver la lista de puertos