El protocolo de transferencia de archivos FTP (File Transfer Protocol) es una de las soluciones más populares para la carga y descarga de archivos. En este artículo te ofrecemos información sobre cómo instalar y configurar tu propio servidor FTP en Ubuntu y sobre los aspectos que se deben tener en cuenta para ello.

Instalación de un servidor FTP en Ubuntu

Antes de sumergirte en la configuración de tu servidor FTP en Ubuntu es necesario que encuentres el software apropiado. Para ello, los sistemas Ubuntu, como el sistema Ubuntu 22.04, cuentan ya con una solución propia en el sistema de gestión de paquetes, vsftpd, que solo hay que instalar. Para instalar la aplicación, abre el terminal e introduce el siguiente comando:

sudo apt-get install vsftpd
bash
Imagen: Ubuntu 22.04: instalación de vsftpd en el terminal
Los permisos de root o de administrador (sudo) son un requisito fundamental para la instalación de vsftpd.
Consejo

¿Necesitas guardar o transferir datos? Contratando ahora un Secure FTP Hosting con IONOS, obtendrás transferencia segura con SSH y SSL/TLS y copias diarias de seguridad.

El hardware adecuado para tu servidor FTP en Ubuntu

Los requisitos de hardware de un servidor FTP en Ubuntu 22.04 varían según el escenario de uso. Para garantizar una conexión óptima a Internet, se recomienda el hosting con un proveedor profesional como IONOS. Con los servidores virtuales VPS y los servidores dedicados, dispones de dos opciones potentes para el funcionamiento de un servidor FTP eficiente.

A continuación, te mostramos tres escenarios posibles para tu servidor FTP en Ubuntu junto con el plan de servidor de IONOS más adecuado para cada caso:

Escenario del servidor FTP en Ubuntu Plan recomendado de IONOS
Servidor FTP básico; transferencias esporádicas de datos VPS Linux M
Gran servidor FTP empresarial; transferencias regulares de datos VPS Linux XL
Servidor FTP público; transferencias continuas de datos Dedicated Server AR6-32 SSD
Servidores virtuales VPS
Virtualización completa con acceso root
  • Ancho de banda de hasta 1 Gb/s y tráfico ilimitado
  • Almacenamiento SSD NVMe ultrarrápido
  • Incluye: edición Plesk Web Host

Tutorial para la configuración de un servidor FTP en Ubuntu

Después del breve proceso de instalación puedes cerrar el terminal y empezar a configurar el servidor FTP en Ubuntu. Para ello, abre el archivo de configuración vsftpd.conf, que normalmente se encuentra en la directorio etc.

Imagen: Fragmento de los documentos disponibles en el directorio etc
El directorio etc contiene diversos archivos de configuración y de información como, por ejemplo, vsftpd.conf.

Para abrir y editar el archivo de configuración del servidor FTP en Ubuntu se necesita un editor de textos. Para tal fin, Ubuntu ya trae instalado el programa gedit (editor GNOME).

El contenido textual puede dividirse en dos ámbitos:

  • Las líneas que comienzan con el símbolo de la almohadilla (#) se tratan como comentarios, por lo que el servidor las ignora. Son, por un lado, comentarios a las diferentes opciones de configuración y, por el otro, funciones desactivadas.
  • Las líneas que no comienzan con una almohadilla contienen información que el servidor interpretará más adelante.
Imagen: Vista del archivo vsftpd.conf
Las almohadillas no solo son importantes para el servidor vsftpd, sino que fomentan la comprensión y optimizan la legibilidad.

Para los siguientes ajustes al servidor FTP en Ubuntu 22.04 no hay ningún requisito general, sino que la configuración depende de las pretensiones que se tienen con respecto al servidor FTP. En los siguientes apartados de este manual te informamos sobre las diversas opciones de configuración y sus funciones.

Nota

Para guardar los cambios en el archivo vsftpd.conf se necesitan derechos de administrador. De lo contrario, solo podrás leerlo.

Permitir el acceso anónimo

Con los ajustes estándares, vsftpd está configurado de manera que el usuario solo puede iniciar sesión en el servidor FTP con una cuenta específica. El File Transfer Protocol también permite un procedimiento de inicio de sesión anónimo sin que el usuario tenga que utilizar datos personales y, para activar este acceso inespecífico, busca la entrada anonymous_enable=NO y sustituye el parámetro NO por YES:

anonymous_enable=YES
txt
Imagen: vsftpd.conf: configuración del acceso FTP anónimo
Una vez que hayas añadido la línea “anonymous_enable=YES”, el acceso anónimo a tu servidor FTP en Ubuntu estará habilitado.

Ampliar los permisos de los usuarios anónimos

Por lo general, los permisos están muy limitados cuando los usuarios se registran de manera anónima en un servidor FTP en Ubuntu. Así, solo es posible descargar los archivos que sean legibles para todas las personas (anon_world_readable_only=YES). Si se niega esta instrucción, también se permite la descarga de otros archivos.

Nota

Si el servidor FTP está conectado a Internet, no se recomienda ampliar los permisos para sesiones anónimas. De lo contrario, corres el riesgo de que terceros utilicen tu servidor de manera indebida.

Otras opciones disponibles para ampliar los permisos de usuarios anónimos son las siguientes:

  • anon_mkdir_write_enable: los usuarios anónimos pueden crear nuevos directorios si estableces el valor en YES o eliminas el carácter # que comenta la línea. Es necesario que la opción write_enable esté activada.
  • anon_other_write_enable=YES: si añades esta línea, los archivos y directorios en el servidor FTP podrán ser renombrados y eliminados incluso en accesos anónimos.
  • anon_upload_enable=YES: esta línea activa la carga anónima de archivos. Para ello, debes habilitar write_enable y crear un directorio de carga separado, ya que los usuarios anónimos no pueden escribir directamente en el directorio home.

Restringir el acceso de usuarios locales al directorio home

A los usuarios locales solo se les permite el acceso al directorio principal /home/username por medio del archivo vsftpd.conf. El parámetro de distinción responsable en este caso es chroot_local_user. La línea está comentada por defecto en Ubuntu 22.04. Elimina el # para impedir que las cuentas locales accedan a otros directorios.

chroot_local_user=YES
txt

Activar o desactivar el acceso de usuarios locales

Para permitir a los usuarios locales acceder al servidor FTP, la opción local_enable=YES debe estar habilitada, lo cual es la configuración predeterminada. Si quieres impedir el acceso de los usuarios locales a tu servidor FTP en Ubuntu, simplemente comenta la línea correspondiente añadiendo el símbolo de almohadilla (#) al principio:

#local_enable=YES
txt
Imagen: Servidor FTP en Ubuntu: configuración de los permisos de los usuarios locales
Por defecto, el inicio de sesión para cuentas de usuarios locales está permitido en el archivo de configuración vsftpd.conf.

Activar el acceso global de escritura

En Ubuntu 22.04, la configuración predeterminada establece que ni las cuentas locales ni las anónimas pueden utilizar comandos FTP. La línea correspondiente a la escritura global, write_enable=YES, está comentada y, por tanto, desactivada.

Si deseas permitir que los usuarios autenticados modifiquen el sistema de archivos del servidor vsftpd, debes eliminar el símbolo de almohadilla (#) al inicio de la línea:

write_enable=YES
txt

Limitar el acceso FTP a usuarios específicos

En algunas situaciones puede ser conveniente prohibir el acceso al servidor FTP a algunos usuarios o definir con claridad qué usuarios pueden conectarse.

Para denegar el acceso a determinados usuarios, añade las siguientes líneas al final del archivo de configuración:

userlist_deny=YES
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
txt

Estos parámetros indican al servidor vsftpd que debe negar el acceso a todos los usuarios incluidos en el archivo externo vsftpd.user_list. El resto de los usuarios pueden conectarse de manera habitual.

Si deseas permitir el acceso solo a usuarios específicos, debes establecer el parámetro userlist_deny en NO. Como resultado, solo podrán iniciar sesión las cuentas de usuario que hayas añadido al archivo vsftpd.user_list:

userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
txt
Nota

En ambos casos, es necesario crear manualmente el archivo de texto externo vsftpd.user_list en el directorio /etc/. Cada cuenta de usuario debe añadirse en una línea separada dentro del archivo.

Servidor FTB en Ubuntu: lista de opciones adicionales

Opción Valor predeterminado Descripción
download_enable - Activar (YES) o desactivar (NO) las descargas
ssl_enable NO Habilitar el cifrado SSL para el acceso FTP
force_anon_logins_ssl NO Obligar a los usuarios anónimos a utilizar una conexión SSL (YES)
force_local_logins_ssl NO Obligar a los usuarios locales a utilizar una conexión SSL (YES)
anon_max_rate 0 Velocidad máxima de transferencia (en bytes/segundo) para usuarios anónimos; 0 significa sin límite
local_max_rate 0 Velocidad máxima de transferencia (en bytes/segundo) para usuarios locales; 0 significa sin límite
max_clients 0 Número máximo de clientes que pueden conectarse simultáneamente; 0 significa sin restricciones
max_per_ip 0 Número máximo de conexiones permitidas por dirección IP; 0 significa sin restricciones
anon_root /home/ftp Directorio predeterminado para usuarios anónimos

Puedes acceder a la lista completa de todas las opciones en el terminal con ayuda del siguiente comando:

man vsftpd.conf
bash
Imagen: Página Man del archivo de configuración de vsftpd
En los manuales del servidor FTP en Ubuntu encuentras información detallada sobre todas las opciones disponibles.

Así puedes utilizar el servidor FTP en Ubuntu 22.04

Una vez hayas editado el archivo de configuración conforme a tus preferencias, no te olvides de guardarlo. Para que la aplicación del servidor acepte todos los cambios, es necesario reiniciar el sistema mediante el siguiente comando:

sudo systemctl restart vsftpd
bash

Si todavía no has iniciado el servidor FTP, puedes hacerlo con el siguiente comando:

sudo systemctl start vsftpd
bash
Consejo

Si quieres detener el servidor FTP en Ubuntu, sustituye en el comando anterior start por stop.

Crear una cuenta de usuario FTP

Finalizada la configuración del servidor FTP en Ubuntu, necesitas una cuenta de usuario para poder iniciar sesión. Como ejemplo, otorgamos al usuario el nombre “ftpuser” y definimos la contraseña con “test123”.

sudo useradd -m user -s/usr/sbin/nologin
sudo passwd user
bash

A continuación, permite el acceso de inicio de sesión para la shell NoLogin añadiendo la siguiente línea al final del archivo /etc/shells:

/usr/sbin/nologin
txt

Establecer conexión con el servidor FTP

Ahora puedes utilizar la cuenta de usuario creada para establecer la conexión con el servidor vsftpd a través del cliente FTP de tu elección. Una opción popular y multiplataforma, cuyos paquetes están disponibles por defecto en Ubuntu, es la aplicación de código abierto FileZilla.

Para instalarla, simplemente ejecuta el siguiente comando en el terminal:

sudo apt-get install filezilla
bash

Abre FileZilla y agrega una nueva conexión con los datos adecuados: en el apartado del host introduce la dirección IP de tu servidor FTP en Ubuntu, el cual, siempre que no se haya modificado en la configuración, escucha las peticiones en el puerto 21. Elige el File Transfer Protocol y si es posible SFTP (Secure FTP) o FTP over TLS, ya que una conexión sencilla a través del puerto 21 plantea riesgos de seguridad muy elevados. En el campo “Logon Type” selecciona la opción “Normal” y para “User” y “Password” necesitas los datos de acceso de la cuenta de ejemplo que se han generado antes. Tras ello podrás establecer la conexión con el servidor haciendo clic en “Connect”.

Imagen: FileZilla Site Manager
El cliente de FileZilla ofrece detalladas opciones de configuración para establecer la conexión con el servidor FTP.

500 OOPS: mecanismo de seguridad para resolver problemas

Si tras crear un servidor FTP en Ubuntu hay algunos ajustes que no funcionan, esto puede tener varias causas: es posible que hayas olvidado reiniciar el servidor FTP o proteger el archivo de configuración. Asimismo, también pueden colarse errores sintácticos en el archivo vsftpd.conf cuando se coloca un espacio en el lugar incorrecto. Este es el aspecto de un mensaje de error habitual producido por un motivo totalmente diferente:

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

Este mensaje, que puede aparecer cuando se está estableciendo conexión, no es en sí un aviso de error, sino de una función de seguridad. El motivo para ello es una posible vulnerabilidad de la biblioteca glibc (biblioteca estándar de Ubuntu del lenguaje de programación C), a la que los usuarios pueden recurrir si tienen permisos de escritura para su propio directorio raíz. Para eludir este bloqueo de seguridad existen dos soluciones:

  1. Eliminar los permisos de seguridad en el directorio raíz del usuario: deben revocarse los permisos de escritura de los usuarios para el propio directorio raíz de modo que solo puedan escribir en subdirectorios. Dicha limitación permite eliminar el problema “500 OOPS”, pero es poco ventajosa si necesariamente tienen que escribirse archivos en el directorio raíz. Para ello, el comando del terminal que debe utilizarse es:
chmod a-w */home/user*
bash
  1. Conceder permisos de escritura para el directorio raíz en vsftpd.conf: si no tienes ningún problema de seguridad derivado de un abuso de los permisos de escritura, puedes informar al servidor FTP de Ubuntu de que esta es la función deseada, para lo que solo es necesario incluir una entrada en el archivo de configuración:
allow_writeable_chroot=YES
txt
VPS gratis
Prueba un servidor virtual de forma gratuita durante 30 días

¡Prueba tu servidor virtual durante 30 días! Si lo solicitas, te reembolsaremos todos los gastos incurridos.

¿Le ha resultado útil este artículo?
Ir al menú principal