15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
30.10.2024

Cómo instalar y configurar un servidor FTP en Ubuntu con vsftpd

La transferencia de archivos es una tarea fundamental para cualquier administrador de servidores. Ya sea que estés subiendo archivos de sitios web, gestionando copias de seguridad o compartiendo grandes conjuntos de datos entre sistemas, contar con un servidor FTP confiable hace que todo el proceso sea significativamente más eficiente. Esta guía completa te lleva a través de la instalación, configuración y segurización de vsftpd (Very Secure FTP Daemon) en Ubuntu — la solución de servidor FTP más confiable para entornos Linux.

¿Por qué usar vsftpd en Ubuntu?

FTP (File Transfer Protocol) sigue siendo uno de los métodos más utilizados para transferir archivos entre una máquina local y un servidor remoto. Si bien existen alternativas más recientes como SFTP y SCP, FTP con cifrado SSL/TLS (FTPS) sigue siendo una opción práctica para muchos entornos de alojamiento.

vsftpd se destaca como el daemon FTP preferido en Ubuntu por varias razones convincentes:

  • Huella ligera — consumo mínimo de recursos, ideal para entornos VPS
  • Modelo de seguridad sólido — soporte integrado para SSL/TLS, jaulas chroot y controles de acceso detallados
  • Mantenimiento activo — actualizado regularmente y bien documentado
  • Compatibilidad — funciona perfectamente con clientes FTP populares como FileZilla, WinSCP y Cyberduck

Si estás ejecutando un entorno de Hosting VPS o un Servidor Dedicado, vsftpd es una excelente opción para gestionar transferencias de archivos de forma segura y eficiente.

Requisitos previos

Antes de comenzar, asegúrate de tener lo siguiente:

  • Un servidor con Ubuntu 20.04, 22.04 o 24.04
  • Acceso root o sudo al servidor
  • Conocimientos básicos de la línea de comandos de Linux
  • Firewall UFW instalado (recomendado)

Paso 1: Actualiza tu sistema

Antes de instalar cualquier software nuevo, es fundamental asegurarse de que los paquetes del sistema estén completamente actualizados. Esto evita conflictos de dependencias y garantiza que recibas los últimos parches de seguridad.

Abre una terminal y ejecuta:

sudo apt update
sudo apt upgrade -y

Espera a que el proceso de actualización se complete antes de continuar.

Paso 2: Instala vsftpd

Instala el paquete vsftpd desde los repositorios oficiales de Ubuntu:

sudo apt install vsftpd -y

Una vez completada la instalación, verifica que el servicio vsftpd esté en ejecución:

sudo systemctl status vsftpd

Deberías ver una salida que indica que el servicio está activo (en ejecución). Si el servicio no está en ejecución, inícialo manualmente:

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

El indicador enable garantiza que vsftpd se inicie automáticamente en cada reinicio del sistema.

Paso 3: Haz una copia de seguridad del archivo de configuración predeterminado

Antes de modificar cualquier archivo de configuración, crea siempre una copia de seguridad. Esto te permite restaurar la configuración original si algo sale mal:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Paso 4: Configura vsftpd

El archivo de configuración principal de vsftpd se encuentra en /etc/vsftpd.conf. Ábrelo con tu editor de texto preferido:

sudo nano /etc/vsftpd.conf

Aplica los siguientes cambios de configuración para mejorar tanto la funcionalidad como la seguridad:

4.1 — Permitir que los usuarios locales inicien sesión

Encuentra y descomenta la siguiente línea para permitir que los usuarios locales del sistema se autentiquen a través de FTP:

local_enable=YES

4.2 — Habilitar la carga de archivos

Para permitir que los usuarios autenticados suban archivos al servidor, descomenta:

write_enable=YES

4.3 — Restringir a los usuarios a sus directorios de inicio (jaula Chroot)

Esta es una medida de seguridad crítica. Evita que los usuarios FTP naveguen fuera de sus directorios de inicio designados:

chroot_local_user=YES

4.4 — Configurar los puertos del modo pasivo

El modo pasivo es esencial para clientes detrás de NAT o firewalls. Añade las siguientes líneas al final del archivo de configuración:

pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000

4.5 — Configuraciones de seguridad adicionales recomendadas

Añade o verifica las siguientes directivas para una configuración reforzada:

anonymous_enable=NO
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES

> Explicación de las configuraciones clave:

> – anonymous_enable=NO — Deshabilita el acceso FTP anónimo, un importante riesgo de seguridad

> – xferlog_enable=YES — Registra todas las transferencias de archivos para fines de auditoría

> – use_localtime=YES — Utiliza la hora local del servidor en las entradas del registro

Una vez realizados todos los cambios, guarda el archivo con Ctrl+O, luego sal con Ctrl+X.

Paso 5: Crea un usuario FTP dedicado

Es una buena práctica crear una cuenta de usuario dedicada específicamente para el acceso FTP en lugar de usar tu cuenta root o administrativa:

sudo adduser ftpuser

Sigue las indicaciones interactivas para establecer una contraseña segura y completar el proceso de creación del usuario.

A continuación, crea un directorio FTP dedicado para este usuario y establece la propiedad y los permisos correctos:

sudo mkdir -p /home/ftpuser/ftp/upload
sudo chown nobody:nogroup /home/ftpuser/ftp
sudo chmod a-w /home/ftpuser/ftp
sudo chown ftpuser:ftpuser /home/ftpuser/ftp/upload

> ¿Por qué esta estructura? El directorio padre ftp es propiedad de nobody y no tiene permisos de escritura, lo que satisface el requisito de seguridad chroot de vsftpd. El subdirectorio upload es donde el usuario realmente lee y escribe archivos.

Paso 6: Reinicia vsftpd para aplicar los cambios

Después de completar la configuración, reinicia el servicio vsftpd:

sudo systemctl restart vsftpd

Confirma que el servicio sigue funcionando correctamente:

sudo systemctl status vsftpd

Paso 7: Configura el firewall UFW

Si UFW (Uncomplicated Firewall) está activo en tu servidor, debes abrir los puertos necesarios para el tráfico FTP. FTP usa el puerto 21 para comandos, el puerto 20 para transferencias de datos en modo activo, y el rango de puertos pasivos definido en tu configuración:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp

Recarga el firewall para aplicar las nuevas reglas:

sudo ufw reload

Verifica las reglas actualizadas:

sudo ufw status

Paso 8: Prueba tu servidor FTP

Con todo configurado, es momento de probar la conexión. Puedes usar cualquier cliente FTP estándar:

Opción A: Usando FileZilla (cliente GUI)

  1. Abre FileZilla y navega a Archivo → Gestor de sitios
  2. Haz clic en Nuevo sitio e ingresa un nombre
  3. Establece el Protocolo en FTP – File Transfer Protocol
  4. Ingresa la dirección IP de tu servidor en el campo Host
  5. Establece el Puerto en 21
  6. Establece el Tipo de inicio de sesión en Normal
  7. Ingresa ftpuser como nombre de usuario y tu contraseña elegida
  8. Haz clic en Conectar

Opción B: Usando la línea de comandos

ftp your_server_ip

Ingresa ftpuser y la contraseña asociada cuando se te solicite. Prueba la carga y descarga de archivos para confirmar que todo funciona como se espera.

Paso 9: Asegura FTP con cifrado SSL/TLS (Muy recomendado)

Transmitir credenciales y datos a través de FTP sin cifrar es un riesgo de seguridad significativo. Cifrar tu conexión FTP con SSL/TLS la transforma en FTPS, protegiendo tus datos en tránsito.

Genera un certificado SSL autofirmado

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 
-keyout /etc/ssl/private/vsftpd.pem 
-out /etc/ssl/private/vsftpd.pem

Actualiza la configuración de vsftpd para SSL/TLS

Abre el archivo de configuración nuevamente:

sudo nano /etc/vsftpd.conf

Añade o actualiza las siguientes directivas:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Reinicia vsftpd para aplicar la configuración SSL:

sudo systemctl restart vsftpd

> Consejo profesional: Para entornos de producción, considera usar un certificado SSL de confianza de una autoridad certificadora en lugar de un certificado autofirmado. AlexHost ofrece Certificados SSL que proporcionan plena confianza en navegadores y clientes sin advertencias de certificado.

Solución de problemas comunes de vsftpd

ProblemaCausa probableSolución
500 OOPS: vsftpd: refusing to run with writable root inside chrootEl directorio chroot tiene permisos de escrituraElimina el permiso de escritura del directorio raíz chroot: sudo chmod a-w /home/ftpuser/ftp
Conexión rechazada en el puerto 21Firewall bloqueando FTPVerifica las reglas UFW con sudo ufw status
Fallos de conexión en modo pasivoRango de puertos pasivos no abiertoAsegúrate de que los puertos 40000–50000 estén abiertos en UFW
Fallo de autenticación de inicio de sesiónCredenciales incorrectas o problema con PAMVerifica que el usuario existe con id ftpuser y restablece la contraseña si es necesario
No se pueden subir archivoswrite_enable no configuradoConfirma write_enable=YES en /etc/vsftpd.conf

Para revisar los registros de vsftpd en busca de información detallada sobre errores:

sudo tail -f /var/log/vsftpd.log

Elegir el entorno de alojamiento adecuado para tu servidor FTP

El rendimiento y la seguridad de tu servidor FTP están directamente influenciados por la calidad de tu infraestructura de alojamiento subyacente. Esto es lo que debes considerar:

  • Hosting VPS — Ideal para la mayoría de los casos de uso. Proporciona recursos dedicados, acceso root completo y la flexibilidad para configurar vsftpd exactamente según sea necesario.
  • Servidores Dedicados — La mejor opción para entornos de alto tráfico u organizaciones con requisitos estrictos de aislamiento de datos. Máximo rendimiento y control completo.
  • Hosting Web Compartido — Adecuado para necesidades básicas de gestión de archivos con volúmenes de tráfico más bajos. Ten en cuenta que la instalación de vsftpd requiere acceso root, que no está disponible en el hosting compartido.

Para los equipos que también necesitan infraestructura de correo electrónico profesional junto con su configuración de transferencia de archivos, el Hosting de Correo Electrónico proporciona una solución confiable y gestionada sin la carga de alojar un servidor de correo propio.

Conclusión

Configurar un servidor FTP completamente funcional y seguro en Ubuntu con vsftpd es un proceso sencillo cuando se aborda de manera sistemática. Siguiendo esta guía, has:

  • ✅ Instalado y habilitado vsftpd en Ubuntu
  • ✅ Configurado acceso de usuario seguro con jaula chroot
  • ✅ Configurado el modo pasivo para amplia compatibilidad con clientes
  • ✅ Abierto los puertos de firewall correctos
  • ✅ Opcionalmente asegurado la conexión con cifrado SSL/TLS

Ya sea que estés gestionando archivos de sitios web, automatizando copias de seguridad o habilitando el intercambio de archivos en equipo, vsftpd en un VPS Ubuntu bien configurado ofrece la confiabilidad y seguridad que necesitas. Con la infraestructura de Hosting VPS de alto rendimiento de AlexHost, obtienes la base ideal para ejecutar vsftpd en producción — con tiempo de actividad de nivel empresarial, acceso root completo y soporte técnico receptivo cuando lo necesites.

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar