El protocolo de tra­n­s­fe­re­n­cia de archivos FTP (File Transfer Protocol) es una de las so­lu­cio­nes más populares para la carga y descarga de archivos. En este artículo te ofrecemos in­fo­r­ma­ción sobre cómo instalar y co­n­fi­gu­rar tu propio servidor FTP en Ubuntu y sobre los aspectos que se deben tener en cuenta para ello.

In­s­ta­la­ción de un servidor FTP en Ubuntu

Antes de su­me­r­gi­r­te en la co­n­fi­gu­ra­ción de tu servidor FTP en Ubuntu es necesario que en­cue­n­tres 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 apli­ca­ció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 ad­mi­ni­s­tra­dor (sudo) son un requisito fu­n­da­me­n­tal para la in­s­ta­la­ción de vsftpd.
Consejo

¿Necesitas guardar o tra­n­s­fe­rir datos? Co­n­tra­ta­n­do ahora un Secure FTP Hosting con IONOS, obtendrás tra­n­s­fe­re­n­cia segura con SSH y SSL/TLS y copias diarias de seguridad.

El hardware adecuado para tu servidor FTP en Ubuntu

Los re­qui­si­tos de hardware de un servidor FTP en Ubuntu 22.04 varían según el escenario de uso. Para ga­ra­n­ti­zar una conexión óptima a Internet, se re­co­mie­n­da el hosting con un proveedor pro­fe­sio­nal como IONOS. Con los se­r­vi­do­res virtuales VPS y los se­r­vi­do­res dedicados, dispones de dos opciones potentes para el fu­n­cio­na­mie­n­to de un servidor FTP eficiente.

A co­n­ti­nua­ción, te mostramos tres es­ce­na­rios 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 re­co­me­n­da­do de IONOS
Servidor FTP básico; tra­n­s­fe­re­n­cias es­po­rá­di­cas de datos VPS Linux M
Gran servidor FTP em­pre­sa­rial; tra­n­s­fe­re­n­cias regulares de datos VPS Linux XL
Servidor FTP público; tra­n­s­fe­re­n­cias continuas de datos Dedicated Server AR6-32 SSD
Se­r­vi­do­res virtuales (VPS)
VPS rentables en se­r­vi­do­res Dell En­te­r­pri­se
  • 1 Gb/s de ancho de banda y tráfico ilimitado
  • 99,99 % de tiempo de actividad y ce­r­ti­fi­ca­ción ISO
  • Soporte 24/7 ga­la­r­do­na­do y asesor personal

Tutorial para la co­n­fi­gu­ra­ción de un servidor FTP en Ubuntu

Después del breve proceso de in­s­ta­la­ción puedes cerrar el terminal y empezar a co­n­fi­gu­rar el servidor FTP en Ubuntu. Para ello, abre el archivo de co­n­fi­gu­ra­ción vsftpd.conf, que no­r­ma­l­me­n­te se encuentra en la di­re­c­to­rio etc.

Imagen: Fragmento de los documentos disponibles en el directorio etc
El di­re­c­to­rio etc contiene diversos archivos de co­n­fi­gu­ra­ción y de in­fo­r­ma­ción como, por ejemplo, vsftpd.conf.

Para abrir y editar el archivo de co­n­fi­gu­ra­ció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 al­moha­di­lla (#) se tratan como co­me­n­ta­rios, por lo que el servidor las ignora. Son, por un lado, co­me­n­ta­rios a las di­fe­re­n­tes opciones de co­n­fi­gu­ra­ción y, por el otro, funciones des­ac­ti­va­das.
  • Las líneas que no comienzan con una al­moha­di­lla contienen in­fo­r­ma­ción que el servidor in­te­r­pre­ta­rá más adelante.
Imagen: Vista del archivo vsftpd.conf
Las al­moha­di­llas no solo son im­po­r­ta­n­tes para el servidor vsftpd, sino que fomentan la co­m­pre­n­sión y optimizan la le­gi­bi­li­dad.

Para los si­guie­n­tes ajustes al servidor FTP en Ubuntu 22.04 no hay ningún requisito general, sino que la co­n­fi­gu­ra­ción depende de las pre­te­n­sio­nes que se tienen con respecto al servidor FTP. En los si­guie­n­tes apartados de este manual te in­fo­r­ma­mos sobre las diversas opciones de co­n­fi­gu­ra­ción y sus funciones.

Nota

Para guardar los cambios en el archivo vsftpd.conf se necesitan derechos de ad­mi­ni­s­tra­dor. De lo contrario, solo podrás leerlo.

Permitir el acceso anónimo

Con los ajustes es­tá­n­da­res, vsftpd está co­n­fi­gu­ra­do de manera que el usuario solo puede iniciar sesión en el servidor FTP con una cuenta es­pe­cí­fi­ca. El File Transfer Protocol también permite un pro­ce­di­mie­n­to de inicio de sesión anónimo sin que el usuario tenga que utilizar datos pe­r­so­na­les y, para activar este acceso ine­s­pe­cí­fi­co, 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á ha­bi­li­ta­do.

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 in­s­tru­c­ción, también se permite la descarga de otros archivos.

Nota

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

Otras opciones di­s­po­ni­bles para ampliar los permisos de usuarios anónimos son las si­guie­n­tes:

  • anon_mkdir_write_enable: los usuarios anónimos pueden crear nuevos di­re­c­to­rios si es­ta­ble­ces 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 di­re­c­to­rios en el servidor FTP podrán ser re­no­m­bra­dos y eli­mi­na­dos 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 di­re­c­to­rio de carga separado, ya que los usuarios anónimos no pueden escribir di­re­c­ta­me­n­te en el di­re­c­to­rio home.

Re­s­tri­n­gir el acceso de usuarios locales al di­re­c­to­rio home

A los usuarios locales solo se les permite el acceso al di­re­c­to­rio principal /home/username por medio del archivo vsftpd.conf. El parámetro de di­s­ti­n­ción re­s­po­n­sa­ble 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 di­re­c­to­rios.

chroot_local_user=YES
txt

Activar o des­ac­ti­var el acceso de usuarios locales

Para permitir a los usuarios locales acceder al servidor FTP, la opción local_enable=YES debe estar ha­bi­li­ta­da, lo cual es la co­n­fi­gu­ra­ción pre­de­te­r­mi­na­da. Si quieres impedir el acceso de los usuarios locales a tu servidor FTP en Ubuntu, si­m­ple­me­n­te comenta la línea co­rre­s­po­n­die­n­te añadiendo el símbolo de al­moha­di­lla (#) 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 co­n­fi­gu­ra­ción vsftpd.conf.

Activar el acceso global de escritura

En Ubuntu 22.04, la co­n­fi­gu­ra­ción pre­de­te­r­mi­na­da establece que ni las cuentas locales ni las anónimas pueden utilizar comandos FTP. La línea co­rre­s­po­n­die­n­te a la escritura global, write_enable=YES, está comentada y, por tanto, des­ac­ti­va­da.

Si deseas permitir que los usuarios au­te­n­ti­ca­dos mo­di­fi­quen el sistema de archivos del servidor vsftpd, debes eliminar el símbolo de al­moha­di­lla (#) al inicio de la línea:

write_enable=YES
txt

Limitar el acceso FTP a usuarios es­pe­cí­fi­cos

En algunas si­tua­cio­nes puede ser co­n­ve­nie­n­te prohibir el acceso al servidor FTP a algunos usuarios o definir con claridad qué usuarios pueden co­ne­c­tar­se.

Para denegar el acceso a de­te­r­mi­na­dos usuarios, añade las si­guie­n­tes líneas al final del archivo de co­n­fi­gu­ra­ción:

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

Estos pa­rá­me­tros 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 co­ne­c­tar­se de manera habitual.

Si deseas permitir el acceso solo a usuarios es­pe­cí­fi­cos, debes es­ta­ble­cer 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 ma­nua­l­me­n­te el archivo de texto externo vsftpd.user_list en el di­re­c­to­rio /etc/. Cada cuenta de usuario debe añadirse en una línea separada dentro del archivo.

Servidor FTB en Ubuntu: lista de opciones adi­cio­na­les

Opción Valor pre­de­te­r­mi­na­do De­s­cri­p­ción
download_enable - Activar (YES) o des­ac­ti­var (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 tra­n­s­fe­re­n­cia (en bytes/segundo) para usuarios anónimos; 0 significa sin límite
local_max_rate 0 Velocidad máxima de tra­n­s­fe­re­n­cia (en bytes/segundo) para usuarios locales; 0 significa sin límite
max_clients 0 Número máximo de clientes que pueden co­ne­c­tar­se si­mu­l­tá­nea­me­n­te; 0 significa sin re­s­tri­c­cio­nes
max_per_ip 0 Número máximo de co­ne­xio­nes pe­r­mi­ti­das por dirección IP; 0 significa sin re­s­tri­c­cio­nes
anon_root /home/ftp Di­re­c­to­rio pre­de­te­r­mi­na­do 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 en­cue­n­tras in­fo­r­ma­ción detallada sobre todas las opciones di­s­po­ni­bles.

Así puedes utilizar el servidor FTP en Ubuntu 22.04

Una vez hayas editado el archivo de co­n­fi­gu­ra­ción conforme a tus pre­fe­re­n­cias, no te olvides de guardarlo. Para que la apli­ca­ció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

Fi­na­li­za­da la co­n­fi­gu­ra­ció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 co­n­tra­se­ña con “test123”.

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

A co­n­ti­nua­ció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

Es­ta­ble­cer conexión con el servidor FTP

Ahora puedes utilizar la cuenta de usuario creada para es­ta­ble­cer la conexión con el servidor vsftpd a través del cliente FTP de tu elección. Una opción popular y mu­l­ti­pla­ta­fo­r­ma, cuyos paquetes están di­s­po­ni­bles por defecto en Ubuntu, es la apli­ca­ción de código abierto FileZilla.

Para in­s­ta­lar­la, si­m­ple­me­n­te 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 mo­di­fi­ca­do en la co­n­fi­gu­ra­ción, escucha las pe­ti­cio­nes 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” se­le­c­cio­na 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 es­ta­ble­cer la conexión con el servidor haciendo clic en “Connect”.

Imagen: FileZilla Site Manager
El cliente de FileZilla ofrece de­ta­lla­das opciones de co­n­fi­gu­ra­ción para es­ta­ble­cer 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 co­n­fi­gu­ra­ción. Asimismo, también pueden colarse errores si­n­tá­c­ti­cos en el archivo vsftpd.conf cuando se coloca un espacio en el lugar in­co­rre­c­to. Este es el aspecto de un mensaje de error habitual producido por un motivo to­ta­l­me­n­te diferente:

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

Este mensaje, que puede aparecer cuando se está es­ta­ble­cie­n­do conexión, no es en sí un aviso de error, sino de una función de seguridad. El motivo para ello es una posible vu­l­ne­ra­bi­li­dad de la bi­blio­te­ca glibc (bi­blio­te­ca estándar de Ubuntu del lenguaje de pro­gra­ma­ción C), a la que los usuarios pueden recurrir si tienen permisos de escritura para su propio di­re­c­to­rio raíz. Para eludir este bloqueo de seguridad existen dos so­lu­cio­nes:

  1. Eliminar los permisos de seguridad en el di­re­c­to­rio raíz del usuario: deben revocarse los permisos de escritura de los usuarios para el propio di­re­c­to­rio raíz de modo que solo puedan escribir en su­b­di­re­c­to­rios. Dicha li­mi­ta­ción permite eliminar el problema “500 OOPS”, pero es poco ventajosa si ne­ce­sa­ria­me­n­te tienen que es­cri­bi­r­se archivos en el di­re­c­to­rio raíz. Para ello, el comando del terminal que debe uti­li­zar­se es:
chmod a-w */home/user*
bash
  1. Conceder permisos de escritura para el di­re­c­to­rio 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 co­n­fi­gu­ra­ció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 re­em­bo­l­sa­re­mos todos los gastos in­cu­rri­dos.

Ir al menú principal