.
- 1 1. Introducción
- 2 2. Instalación de vsftpd
- 3 3. Configuración básica
- 3.1 Ubicación del archivo de configuración
- 3.2 Permitir operaciones de escritura (cargas, eliminaciones, modificaciones)
- 3.3 Habilitar el inicio de sesión de usuarios locales
- 3.4 Habilitar el listado de directorios
- 3.5 Establecer un banner de inicio de sesión (opcional)
- 3.6 Habilitar transferencias en modo ASCII (si es necesario)
- 4 4. Mejora de la seguridad
- 5 5. Soporte de nombres de archivo japoneses
- 6 6. Modo pasivo y configuración del firewall
- 7 7. Configuración por usuario
- 8 8. Verificación del funcionamiento
- 9 9. Solución de problemas
- 10 10. Conclusión
- 11 Preguntas frecuentes
1. Introducción
Crear un servidor FTP en Ubuntu es una solución muy práctica para desarrolladores y administradores que desean transferir archivos de forma eficiente. Especialmente al montar un servidor doméstico o un entorno sencillo de intercambio de archivos interno, FTP (File Transfer Protocol) sigue siendo una opción fácil de desplegar y directa.
¿Qué es un servidor FTP?
Un servidor FTP es un software de servidor dedicado que se utiliza para transferir archivos a través de Internet o de una red local. Los usuarios se conectan al servidor mediante una aplicación cliente FTP para subir o descargar archivos.
Aunque alternativas seguras como SFTP y SCP se han vuelto más comunes, FTP sigue muy extendido debido a su simplicidad y ligereza. En redes restringidas o para casos de uso básicos, FTP continúa siendo un protocolo práctico y eficaz.
El papel de un servidor FTP en Ubuntu
Ubuntu es una de las distribuciones Linux más populares y se usa ampliamente en entornos de servidor. Al configurar un servidor FTP en Ubuntu, el intercambio de archivos entre múltiples dispositivos y usuarios se vuelve mucho más sencillo.
Casos de uso típicos incluyen:
- Transferir archivos a un servidor web
- Integrarse con dispositivos IoT como Raspberry Pi
- Compartir documentos internos de la empresa
La combinación de Ubuntu y un servidor FTP permite una gestión de archivos flexible y eficiente.
Propósito de este artículo y público objetivo
Este artículo explica cómo crear un servidor FTP en Ubuntu paso a paso, de forma que sea fácil de entender incluso para principiantes. Está dirigido a lectores que:
- Conocen las operaciones básicas de Ubuntu pero son nuevos en FTP
- Quieren montar un servidor FTP para uso local o empresarial ligero
- Desean comprender consideraciones de seguridad y temas como la codificación de nombres de archivo
Siguiendo los pasos de esta guía, podrás construir un entorno de servidor FTP seguro y práctico. En la siguiente sección comenzaremos con la instalación de uno de los servidores FTP más populares: vsftpd.
2. Instalación de vsftpd
Al crear un servidor FTP en Ubuntu, el software más usado es vsftpd (Very Secure FTP Daemon). Como su nombre indica, está diseñado con la seguridad en mente y es ligero y estable, lo que lo hace muy adoptado en entornos corporativos y educativos.
Esta sección explica cómo instalar vsftpd en Ubuntu y configurar el servicio para que se inicie automáticamente.
Instalación de vsftpd
Primero, instala vsftpd usando el sistema de gestión de paquetes de Ubuntu (APT). Ejecuta los siguientes comandos en orden:
sudo apt update
sudo apt install vsftpd
sudo apt update: Actualiza la lista de paquetessudo apt install vsftpd: Instala el paquete vsftpd
Una vez completada la instalación, el servicio vsftpd se inicia automáticamente.
Verificación del estado del servicio
Para comprobar que vsftpd está instalado y funcionando correctamente, usa el siguiente comando:
sudo systemctl status vsftpd
Si ves active (running), el servidor FTP está operando con normalidad.
Habilitar el inicio automático
vsftpd suele estar configurado para iniciarse automáticamente por defecto, pero es buena práctica confirmarlo:
sudo systemctl enable vsftpd
Esto garantiza que vsftpd arranque automáticamente después de reiniciar el sistema.
No olvidar la configuración del firewall (UFW)
Si UFW (Uncomplicated Firewall) está habilitado en Ubuntu, debes permitir los puertos FTP:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
Esto abre los puertos estándar de FTP: 20 (datos) y 21 (comandos).
Después de modificar las reglas del firewall, recarga UFW:
sudo ufw reload
3. Configuración básica
Tras instalar vsftpd, el siguiente paso es personalizar su comportamiento editando el archivo de configuración. Aunque vsftpd ofrece un control muy granular, muchas funciones están desactivadas por defecto, por lo que debes habilitar explícitamente las que necesites.
Esta sección explica las opciones de configuración más comunes y esenciales.
Ubicación del archivo de configuración
.
El archivo de configuración principal de vsftpd se encuentra en:
/etc/vsftpd.conf
Edite el archivo con el siguiente comando:
sudo nano /etc/vsftpd.conf
Después de realizar cambios, reinicie vsftpd para que tengan efecto:
sudo systemctl restart vsftpd
Permitir operaciones de escritura (cargas, eliminaciones, modificaciones)
Por defecto, vsftpd no permite subir ni modificar archivos. Para habilitar el acceso de escritura, descomente o añada la siguiente línea:
write_enable=YES
Esto permite a los usuarios subir, eliminar y modificar archivos dentro de sus directorios personales.
Habilitar el inicio de sesión de usuarios locales
Para permitir que los usuarios del sistema Ubuntu inicien sesión mediante FTP, active la siguiente opción:
local_enable=YES
Con esto, los usuarios listados en /etc/passwd podrán iniciar sesión usando FTP.
Habilitar el listado de directorios
Si los listados de directorios fallan en los clientes FTP, verifique la siguiente configuración:
listen=YES
listen_ipv6=NO
Si IPv6 está deshabilitado en su sistema pero listen_ipv6=YES sigue activo, pueden producirse problemas de conexión.
Establecer un banner de inicio de sesión (opcional)
Puede mostrar un mensaje personalizado cuando los usuarios se conecten al servidor FTP:
ftpd_banner=Welcome to your custom Ubuntu FTP server!
Esto es útil para mostrar avisos operativos o información de contacto.
Habilitar transferencias en modo ASCII (si es necesario)
Si necesita transferir correctamente archivos de texto con diferentes formatos de fin de línea, habilite el modo ASCII:
ascii_upload_enable=YES
ascii_download_enable=YES
El modo binario es suficiente en la mayoría de los casos, pero el modo ASCII puede ser útil en entornos específicos.
vsftpd requiere permiso explícito para cada capacidad, lo que hace que la configuración sea transparente y segura. Siempre reinicie el servicio después de modificar el archivo de configuración.
4. Mejora de la seguridad
Aunque FTP es cómodo, no cifra el tráfico por defecto, lo que genera problemas de seguridad, sobre todo cuando se usa a través de Internet. Una configuración de seguridad adecuada es esencial.
Esta sección presenta las principales medidas de seguridad disponibles en vsftpd.
Restringir el acceso del usuario con chroot
Permitir que los usuarios FTP accedan a directorios fuera de su directorio personal es peligroso. Use chroot para confinar a los usuarios a sus directorios personales.
chroot_local_user=YES
allow_writeable_chroot=YES
chroot_local_user=YESimpide que los usuarios accedan a directorios superiores a su directorio personal.allow_writeable_chroot=YESes necesario cuando el directorio personal tiene permisos de escritura.
Sin esta configuración, se produce el siguiente error:
500 OOPS: vsftpd: refusing to run with writable root inside chrootRestringir usuarios de inicio de sesión (lista blanca)
Permitir que todos los usuarios del sistema inicien sesión mediante FTP aumenta el riesgo de seguridad. En su lugar, limite el acceso mediante una lista blanca.
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
Añada los usuarios permitidos a la lista:
sudo nano /etc/vsftpd.userlist
ftpuser1
ftpuser2
Solo los usuarios listados explícitamente podrán iniciar sesión.
Habilitar comunicación cifrada con FTPS (SSL/TLS)
El FTP estándar transmite credenciales y datos en texto plano. Para evitar la intercepción, habilite FTPS (FTP sobre SSL/TLS).
Cree un certificado SSL:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Agregue lo siguiente a vsftpd.conf:
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
Los clientes ahora pueden conectarse usando FTPS explícito.
Desactivar funciones innecesarias
Desactive las funciones que no use para reducir la superficie de ataque:
anonymous_enable=NO
Esto desactiva explícitamente el inicio de sesión anónimo.
5. Soporte de nombres de archivo japoneses
Al transferir archivos mediante FTP, los nombres de archivo en japonés pueden aparecer corruptos debido a incompatibilidades de codificación, especialmente entre Windows y Ubuntu.
.### Causas comunes de problemas de codificación de nombres de archivo
- La localización de Ubuntu no está configurada a UTF-8
- La codificación del cliente FTP no coincide
- vsftpd no está operando en modo UTF-8
Verificar y configurar la localización de Ubuntu
locale
LANG=ja_JP.UTF-8
Si UTF-8 no está habilitado:
sudo update-locale LANG=ja_JP.UTF-8
source /etc/default/locale
sudo locale-gen ja_JP.UTF-8
Verificar el soporte UTF-8 de vsftpd
utf8_filesystem=YES
Esta opción puede no existir en todas las versiones, pero las locales del sistema UTF-8 suelen ser suficientes.
Configuración del cliente FTP (ejemplo con FileZilla)
- Abrir el Administrador de sitios
- Seleccionar el servidor
- Abrir la pestaña Codificación
- Habilitar la codificación personalizada y establecerla en
UTF-8
6. Modo pasivo y configuración del firewall
Los problemas de FTP, como listados de directorios fallidos o transferencias detenidas, a menudo son causados por una configuración incorrecta del modo pasivo o del firewall.
¿Qué es el modo pasivo?
- Modo activo: el servidor inicia la conexión de datos
- Modo pasivo: el cliente inicia todas las conexiones
Se recomienda encarecidamente el modo pasivo para redes modernas.
Habilitar el modo pasivo en vsftpd
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
Especificar la dirección IP externa (entornos NAT)
pasv_address=203.0.113.45
Abrir los puertos requeridos en UFW
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw reload
7. Configuración por usuario
En entornos de producción, es común asignar diferentes permisos y directorios por usuario.
Crear usuarios FTP dedicados
sudo adduser ftpuser1
sudo useradd -m -s /usr/sbin/nologin ftpuser2
Estructura de directorios recomendada
/home/ftpuser1/
└── files/
sudo mkdir /home/ftpuser1/files
sudo chown ftpuser1:ftpuser1 /home/ftpuser1/files
sudo chmod 755 /home/ftpuser1
Archivos de configuración específicos por usuario
user_config_dir=/etc/vsftpd_user_conf
sudo mkdir /etc/vsftpd_user_conf
sudo nano /etc/vsftpd_user_conf/ftpuser1
local_root=/home/ftpuser1/files
write_enable=YES
8. Verificación del funcionamiento
Después de completar todos los pasos de configuración, verifique que el servidor FTP funcione correctamente.
Prueba desde la línea de comandos
ftp localhost
ls
cd files
put test.txt
get test.txt
Prueba con cliente GUI (FileZilla)
Verifique la conexión, el listado de directorios, las subidas y descargas.
9. Solución de problemas
Los problemas comunes de FTP y sus soluciones incluyen fallos de inicio de sesión, errores de permisos, configuración incorrecta del modo pasivo y problemas de codificación.
10. Conclusión
Este artículo explicó cómo crear un servidor FTP seguro y práctico en Ubuntu usando vsftpd, cubriendo instalación, configuración, seguridad, codificación, modo pasivo, gestión de usuarios, verificación y solución de problemas.
Preguntas frecuentes
Preguntas frecuentes sobre la configuración y operación de un servidor FTP en Ubuntu.


