🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Guía para configurar un servidor FTP en cPanel (vsftpd)

Actualizado el 2 de octubre de 2025

Introducción: ¿Qué es un servidor FTP y por qué necesitas uno?

Imagina que tu sitio web es una tienda y los archivos que lo componen (imágenes, textos, códigos) son los productos en el almacén. Para reponer las estanterías, necesitas una puerta trasera segura por la que entrar y salir con la mercancía. En el mundo del hosting, esa puerta trasera es el FTP (File Transfer Protocol, Protocolo de Transferencia de Archivos).

Configurar un servidor FTP en cPanel usando vsftpd (Very Secure FTP Daemon) es una de las tareas más comunes para cualquier administrador de sistemas o propietario de un sitio web. Aunque hoy en día muchos usan el Administrador de Archivos de cPanel o Git, el FTP sigue siendo esencial para cargar cientos de archivos, hacer copias de seguridad rápidas o conectar herramientas de terceros.

En esta guía extensa, te explicaré paso a paso cómo configurar tu propio servidor FTP en cPanel, centrándonos en vsftpd, cómo crear cuentas ftp, y sobre todo, cómo asegurar que todo el proceso sea seguro. No necesitas ser un gurú de Linux; con que sigas las instrucciones al pie de la letra, tendrás tu servidor funcionando en menos de lo que canta un gallo.

Requisitos previos antes de empezar

Antes de ensuciarte las manos con la terminal, necesitas tener tres cosas claras:

  1. Acceso root o sudo: No podrás configurar vsftpd si solo tienes acceso a cPanel como usuario. Necesitas acceso a la terminal (SSH) con privilegios de administrador.
  2. cPanel instalado y funcionando: Esta guía asume que ya tienes cPanel/WHM operativo en tu servidor.
  3. Un dominio o subdominio: Para crear una cuenta FTP, necesitas un dominio asociado a tu cuenta de hosting.

Si no tienes acceso root, pero tu proveedor usa un panel alternativo como Syspanel (antes conocido como HestiaCP), el proceso puede variar ligeramente, pero los conceptos de vsftpd son universales. Si usas Syspanel, recuerda que el acceso al panel se realiza a través del puerto 2106 y la configuración de FTP se gestiona desde la sección "Servidor Web" o "Seguridad".

Paso 1: Instalar y actualizar vsftpd

El primer paso es asegurarnos de que tenemos el paquete vsftpd instalado. En la mayoría de las distribuciones Linux (CentOS, AlmaLinux, Ubuntu), es muy sencillo.

Para CentOS, RHEL o AlmaLinux

Abre tu terminal y ejecuta:

yum install vsftpd -y

Para Ubuntu o Debian

apt-get update
apt-get install vsftpd -y

Una vez instalado, es buena práctica actualizar todos los paquetes del sistema para evitar vulnerabilidades de seguridad. Ejecuta yum update o apt-get upgrade según tu distribución.

Después de la instalación, verifica que el servicio esté en funcionamiento:

systemctl start vsftpd
systemctl enable vsftpd

[INFO]
El comando enable es crucial. Sin él, el servidor FTP no se iniciará automáticamente tras un reinicio del servidor, lo que causará caídas inesperadas del servicio.

Paso 2: Configuración básica de vsftpd en cPanel

Ahora viene la parte divertida: modificar el archivo de configuración. El archivo principal se encuentra en /etc/vsftpd/vsftpd.conf. Te recomiendo hacer una copia de seguridad antes de tocarlo.

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

Abre el archivo con tu editor favorito (nano o vi):

nano /etc/vsftpd/vsftpd.conf

Parámetros esenciales que debes modificar

Busca las siguientes líneas y cámbialas según estas recomendaciones (si no existen, agrégalas al final del archivo):

  1. Permitir usuarios locales: Necesitas que los usuarios del sistema (los que crea cPanel) puedan conectarse.

    local_enable=YES
    
  2. Permitir escritura: Sin esto, no podrás subir archivos.

    write_enable=YES
    
  3. Permitir usuarios anónimos: Esto es un riesgo de seguridad. A menos que tengas una razón muy específica, desactívalo.

    anonymous_enable=NO
    
  4. Restringir a la carpeta de inicio (chroot): Esto es crítico para la seguridad ftp. Impide que un usuario navegue por el sistema de archivos fuera de su directorio de inicio.

    chroot_local_user=YES
    
  5. Configurar el puerto pasivo: El modo pasivo es el estándar moderno. Necesitas definir un rango de puertos para las conexiones de datos.

    pasv_enable=YES
    pasv_min_port=30000
    pasv_max_port=31000
    

[WARNING]
Si activas chroot_local_user=YES, debes asegurarte de que el usuario no tenga permisos de escritura en el directorio raíz de su chroot. Si lo tiene, la conexión fallará con el error "500 OOPS: vsftpd: refusing to run with writable root inside chroot". La solución es quitar el permiso de escritura al directorio principal o usar allow_writeable_chroot=YES (menos recomendado).

Guarda el archivo (Ctrl+O, luego Enter, luego Ctrl+X en nano) y reinicia el servicio:

systemctl restart vsftpd

Paso 3: Crear cuentas FTP en cPanel

Ahora que el servidor está configurado, necesitas crear usuarios. Aunque podrías hacerlo directamente desde la terminal con useradd, lo más lógico es hacerlo desde el propio cPanel para que todo quede sincronizado con las cuentas de hosting.

Desde el panel de cPanel

  1. Inicia sesión en tu cuenta de cPanel.
  2. Busca la sección Archivos y haz clic en Cuentas FTP.
  3. Verás un formulario para crear una nueva cuenta.
  4. Rellena el login (ej. usuario@tudominio.com), la contraseña y el directorio (ej. public_html o una subcarpeta).
  5. Haz clic en Crear cuenta.

Este proceso crea automáticamente el usuario en el sistema y lo asigna a su carpeta correspondiente. No tienes que tocar nada más.

[TIP]
Si tu proveedor usa Syspanel en lugar de cPanel, el proceso es similar. Accede al panel a través del puerto 2106 (por ejemplo, https://tu-servidor:2106), ve a la sección de "Dominios" y busca la opción de "Cuentas FTP". La lógica es idéntica: creas un usuario, le asignas una contraseña y defines la ruta.

Verificación desde la terminal

Para asegurarte de que la cuenta se creó correctamente, ejecuta:

cat /etc/passwd | grep usuario

Deberías ver una línea que muestra la ruta de inicio del usuario.

Paso 4: Configurar el firewall y los puertos

Uno de los errores más comunes al configurar ftp es olvidar abrir los puertos en el firewall. Si tu servidor tiene un firewall activo, debes permitir el tráfico FTP.

Abrir puertos en firewalld (CentOS/AlmaLinux)

firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload

Abrir puertos en UFW (Ubuntu/Debian)

ufw allow 21/tcp
ufw allow 30000:31000/tcp
ufw reload

[INFO]
El puerto 21 es el puerto de control (comandos), mientras que los puertos 30000-31000 son para la transferencia de datos en modo pasivo. Si no abres el rango pasivo, las conexiones se colgarán al intentar listar o subir archivos.

Verificar la conexión

Desde tu máquina local, abre un cliente FTP como FileZilla o simplemente usa la línea de comandos:

ftp tu-servidor.com

Introduce el usuario y la contraseña. Si todo está correcto, verás el mensaje 230 Login successful.

Paso 5: Seguridad avanzada para tu servidor vsftpd

La seguridad ftp no termina con desactivar el acceso anónimo. Aquí tienes una lista de endurecimiento (hardening) que debes aplicar para proteger tu servidor.

1. Usar TLS/SSL (FTPS)

El FTP clásico envía contraseñas en texto plano. Para evitarlo, debes configurar FTPS. Añade estas líneas a tu vsftpd.conf:

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

Necesitas un certificado SSL. Puedes usar uno de Let's Encrypt o generar uno autofirmado para pruebas:

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

Luego, especifica la ruta en la configuración:

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem

2. Limitar el número de conexiones

Evita ataques de fuerza bruta limitando las conexiones simultáneas por IP:

max_per_ip=5
max_clients=50

3. Configurar el archivo de bienvenida y el banner

Oculta la versión del servidor para no dar pistas a los atacantes:

banner_file=/etc/vsftpd/banner.txt

Crea el archivo con un mensaje genérico.

4. Deshabilitar usuarios del sistema

Si solo quieres que se conecten los usuarios de cPanel, puedes restringir el acceso a los usuarios del sistema:

userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

En el archivo user_list, añade los nombres de los usuarios que sí pueden conectarse.

5. Monitoreo de logs

Activa los logs para saber quién entra y qué hace:

xferlog_enable=YES
xferlog_file=/var/log/xferlog

Solución de problemas comunes (FAQ)

Aquí tienes las preguntas más frecuentes que resolveremos en esta guía:

¿Por qué recibo el error "530 Login incorrect" en ftp cpanel?

Esto suele ocurrir por tres razones:

  1. La contraseña es incorrecta.
  2. El usuario no existe en el sistema.
  3. El usuario está en la lista de denegados (userlist_enable=YES y userlist_deny=YES).

¿Cómo cambio el puerto predeterminado de FTP?

Cambia la línea listen_port=21 por otro puerto, por ejemplo listen_port=2121. Recuerda abrir ese puerto en el firewall.

¿Puedo usar FTP con una cuenta de Syspanel?

Sí. Si tu proveedor usa Syspanel, la gestión de FTP se hace desde su interfaz. Sin embargo, el servidor subyacente sigue siendo vsftpd. La configuración avanzada (SSL, chroot) se realiza editando el mismo archivo /etc/vsftpd/vsftpd.conf. La única diferencia es que el acceso al panel es vía puerto 2106.

¿Es seguro usar FTP?

El FTP estándar no es seguro porque transmite las credenciales en claro. La solución es usar FTPS (FTP sobre SSL/TLS) o SFTP (SSH File Transfer Protocol). Si tu proveedor soporta SFTP (que usa el puerto 22), te recomiendo encarecidamente que lo uses en lugar de FTP puro.

Conclusión y mejores prácticas

Configurar un servidor FTP en cPanel con vsftpd no es una tarea hercúlea, pero requiere atención al detalle. Hemos cubierto desde la instalación básica hasta las capas de seguridad ftp más avanzadas. Recuerda siempre:

  • Mantén el sistema actualizado.
  • Usa FTPS o SFTP siempre que sea posible.
  • Restringe los usuarios a sus directorios de inicio (chroot).
  • Monitorea los logs regularmente para detectar intentos de intrusión.
  • Si usas paneles alternativos como Syspanel, ten en cuenta que el puerto de administración es el 2106 y la ruta de configuración del servidor FTP puede variar, pero la lógica de vsftpd es la misma.

Con esta guía, ya tienes el conocimiento para implementar un servidor FTP robusto y seguro. Ahora ve y configura el tuyo. Si te encuentras con un error, vuelve a leer la sección de solución de problemas o consulta la documentación oficial de tu distribución Linux. ¡Buena suerte!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel