Servidor FTP en Ubuntu: así se puede configurar

En 1985, en la norma RFC 959 se especificó el protocolo de transferencia de archivos FTP (File Transfer Protocol) basado en TCP/IP con el objetivo de guardar archivos en un servidor y de volverlos a recuperar. Este protocolo asentado en la capa de aplicación permite, por un lado, transportar datos a través de los puertos 20 (cliente) y 21 (servidor) y, por otro, crear, editar y eliminar directorios. Para utilizar una arquitectura cliente-servidor de tales características, los usuarios tienen que iniciar sesión en el servidor con ayuda de un cliente FTP y de una cuenta de usuario especial.

FTP goza de una gran popularidad en el ámbito del alojamiento web, pues con ayuda del protocolo de transporte y del software de cliente adecuado, se pueden cargar fácilmente los contenidos del propio proyecto en el espacio web y crear las estructuras de los directorios. Si alojas tu página web en un proveedor especializado, este pondrá a tu disposición la aplicación de servidor correspondiente y los datos de acceso necesarios. Si te encargas tú mismo de dicho alojamiento web y de la transferencia de datos, no debes escatimar en esfuerzos en cuanto a la adquisición de las estructuras de hardware y software adecuadas. En este artículo te ofrecemos información sobre cómo instalar y configurar un 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 cuentan ya con una solución propia en el sistema de gestión de paquetes, vsftpd, que solo hay que instalar. La aplicación de código abierto para sistemas unixoides se erige sobre módulos y componentes que destacan por una programación especialmente compacta. De esta manera, los servidores vsftpd garantizan un nivel de seguridad excelente y un rendimiento estable en caso de que un gran número de clientes soliciten acceso.

Para instalar la aplicación, abre el terminal e introduce el siguiente comando:

sudo apt-get install vsftpd

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 carpeta “etc”.

Para abrir y editar el archivo de configuración del servidor FTP se necesita un editor de textos. Para tal fin, Ubuntu ya trae instalado el programa gedit (editor GNOME), por lo que no es necesario buscar una solución propia. 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.

Para los siguientes ajustes al servidor FTP no hay ningún requisito general, sino que la configuración depende de las pretensiones que se tienen como usuario con respecto al servidor FTP. En este sentido es importante abordar las diferentes opciones, por lo que en los siguientes apartados de este manual te informamos sobre las diversas opciones de configuración y sus funciones.

Hecho

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

Permitir el acceso anónimo

Con los ajustes estándares, el servidor 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

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 todos los usuarios (anon_world_readable_only=YES). Si se niega esta instrucción, también se permite la descarga de otros archivos, aunque asimismo se puede recurrir a las siguientes opciones:

  • anon_mkdir_write_enable: el valor “YES” permite a los usuarios anónimos crear directorios nuevos. Otro requisito en este sentido es que write_enable esté activado (véase el apartado “Permitir cambios en el sistema de archivos”). Valor estándar: “NO” o (#) “YES” desactivado.
  • anon_other_write_enable: si se activa esta línea se pueden renombrar y eliminar los archivos y los directorios en el servidor FTP aún en el caso de un acceso impersonal. Valor estándar: “NO” o (#) “YES” desactivado.
  • anon_upload_enable: con esta línea de texto se activa la carga anónima de los archivos. Los requisitos para ello es que write_enable esté activado y que se cree un directorio de carga separado, debido a que los usuarios anónimos no pueden escribir directamente en el directorio principal. Valor estándar: “NO” o (#) “YES” desactivado.

Una vez establecida la conexión del servidor FTP con Internet, no se recomienda ampliar los permisos de los usuarios anónimos, pues de hacerlo se corre el riesgo de que haya terceras personas que hagan un uso indebido del sistema.

Limitar el acceso a los usuarios locales

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”, al que se le suele asignar el valor “NO”. Si modificas la entrada como se muestra a continuación:

chroot_local_user=YES

los usuarios locales tendrán bloqueado el acceso a todos los directorios.

Desactivar el inicio de sesión de los usuarios locales

Para que los usuarios locales tengan acceso al servidor FTP se tiene que introducir la entrada “local-enable=YES”, lo que se logra con la configuración estándar. Si quieres impedir que los usuarios locales tengan acceso al servidor FTP en Ubuntu, debes indicar las líneas correspondientes como comentarios anteponiendo el símbolo #:

#local_enable=YES

Permitir cambios en el sistema de archivos

En la configuración estándar se define que ni los usuarios locales ni los anónimos pueden utilizar los comandos FTP, de modo que la línea para la entrada global “#write_enable=YES” está desactivada. Si se ha de permitir al usuario configurar el sistema de archivos del servidor vsftpd, es necesario revertir la orden del comentario:

write_enable=YES

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. En el primer caso se pueden integrar las siguientes líneas al final del archivo de configuración:

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

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 usuarios puede conectarse de manera habitual.

En el segundo caso, en el que los usuarios incluidos en la lista vsftpd.user_list pueden iniciar sesión, se debe negar el parámetro “userlist_deny”:

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

En ambos casos es necesario crear el archivo de texto externo e introducir al usuario en cuestión manualmente.

Lista de opciones adicionales

Opción Valor estándar Descripción  
download_enable YES Indica si es posible realizar descargas desde el servidor FTP en Ubuntu  
ssl_enable NO Ofrece la posibilidad de activar el cifrado SSL para el acceso FTP  
anon_max_rate   Determina cuál es la velocidad máxima de transmisión (en bytes por segundo) para los usuarios anónimos; 0 es un valor ilimitado  
local_max_rate   Determina cuál es la velocidad máxima de transmisión (en bytes por segundo) para los usuarios locales; 0 es un valor ilimitado  
max_clients   Valor máximo para los clientes que han iniciado sesión simultáneamente en el servidor FTP; 0 significa que no hay restricciones  
anon_root /home/ftp Directorio que hace referencia a los usuarios anónimos  
log_ftp_protocol NO Protocoliza todas las solicitudes y respuestas FTP  
connect_timeout 60 Define el intervalo de tiempo en segundos durante el que se interrumpe la conexión entre el servidor y el cliente ante la ausencia de comunicación  
ftpd_banner   Texto de bienvenida  
guest_enable NO Permite activar el perfil de acceso anónimo definido en guest_username  
guest_username ftp Nombre de usuario para el inicio de sesión anónimo  
Consejo

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

man vsftpd.conf

Así puedes utilizar el servidor FTP en Ubuntu

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

sudo etc/init.d/vsftpd restart

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

sudo etc/init.d/vsftpd start
Consejo

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

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 “user” y definimos la contraseña con “passwort”.

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

A continuación, se debe permitir el acceso al shell nologin incluyendo al final del archivo /etc/shells la siguiente línea:

/usr/sbin/nologin

Se puede utilizar esta nueva cuenta de usuario para establecer la conexión con el servidor vsftpd con un cliente FTP. A este respecto, una solución muy popular, cuyos paquetes están incluidos en Ubuntu, es la aplicación open source FileZilla, apta para todo tipo de plataformas. La instalación se lleva a cabo a través del terminal:

sudo apt-get install filezilla
sudo apt-get install filezilla

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”.

500 OOPS: mecanismo de seguridad para solventar 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
  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 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