Introducción al servicio FTP
El servicio FTP —File Transfer Protocol— es un servicio clásico para transmitir ficheros en Internet. Es tan antiguo (el primer RFC que lo regula es el RFC 114 de 1971) que hasta 1980 se ejecutaba sobre NCP el predecesor de TCP/IP.
Si bien este servicio ha tenido una gran difusión hoy en día ha sido superado por opciones más modernas, seguras y eficientes. El protocolo HTTP/HTTPS se ha hecho tan popular que los servicios web han pasado a reemplazar a los viejos servidores FTP. Históricamente los navegadores web además de HTTP/HTTPS han soportado el protocolo FTP para poder interactuar con los servidores existentes pero recientemente los navegadores han comenzado a abandonar el soporte para FTP:
- Mozilla Firefox ha anunciado su intención de eliminar el soporte para FTP en 2021.
- Google Chrome elimina por completo el soporte para FTP en la versión 88 (enero de 2021) .
Hoy en día no hay ninguna buena razón técnica para montar un nuevo servidor FTP a no ser que se deba interactuar con servicios o equipos que no soporten otra alternativa.
Otras maneras más actuales de distribuir ficheros pueden ser:
- Utilizar un servicio web con HTTPS.
- Utilizar las herramientas
scp
osftp
de OpenSSH. - Herramientas de sincronización como
rsync
orclone
. - Servicios de distribución de ficheros P2P:
- Utilizar un object storage:
Instalación de vsftpd
La documentación de Ubuntu recomienda instalar el servicio vsftpd para implementar un servidor FTP. Al tratarse de una aplicación empaquetada en los respositorios oficiales su instalación resulta trivial:
apt install vsftpd
Una vez instalado el servidor permite la conexión a los usuarios locales de la máquina en modo de solo lectura, las escrituras están bloqueadas. El acceso del usuario anónimo tampoco está activo en la configuración por defecto que se encuentra en /etc/vsftpd.conf
.
Por ejemplo se puede conectar con el servidor FTP utilizando el explorador de archivos de GNOME con la opción Otras ubicaciones -> Conectar al servidor
:
O alternativamente, mientras Firefox mantenga el soporte para FTP, escribiendo en el navegador la URL ftp://192.168.1.151
se presenta un diálogo para autenticar al usuario y establecer la conexión.
En el servidor se puede consultar el fichero de registro utilizando journalctl -u vsftpd
.
usuario@ftp:~$ journalctl -u vsftpd
-- Logs begin at Thu 2020-04-23 19:04:09 CEST, end at Sun 2021-02-14 19:29:25 CET. --
feb 14 12:18:28 ftp systemd[1]: Starting vsftpd FTP server...
feb 14 12:18:28 ftp systemd[1]: Started vsftpd FTP server.
feb 14 12:20:53 ftp vsftpd[13139]: pam_unix(vsftpd:auth): Couldn't open /etc/securetty: No such file or directory
feb 14 12:20:53 ftp vsftpd[13139]: pam_unix(vsftpd:auth): check pass; user unknown
feb 14 12:20:53 ftp vsftpd[13139]: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=anonymous rhost=::ffff:192.168.1.185
Configuración del acceso anónimo
Una de las aplicaciones tradicionales de los servidores FTP ha sido publicar ficheros utilizando el usuario anonymous
. Para activar el acceso anónimo es necesario cambiar el valor de la directiva de configuración anonymous_enable
:
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=YES
En este caso se accederá al directorio home
del usuario ftp
que por defecto es /srv/ftp
.
Acceso de escritura
Para permitir el acceso de escritura a los usuarios locales del servidor FTP es necesario activar la directiva de configuración write_enable
que por defecto está comentada:
# Uncomment this to enable any form of FTP write command.
write_enable=YES
De esta manera los usuarios podrán crear y borrar ficheros en su propio directorio personal.
Si además se desea permitir que el usuario anónimo pueda subir ficheros al servidor FTP (lo que normalmente no resulta recomendable en un servidor público) además se deberá activar la opción anon_upload_enable
.
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES
Para que el usuario anónimo pueda subir ficheros puede ser necesario definir un nuevo directorio (por ejemplo /srv/ftp/public
) que pertenezca al usuario ftp
. El demonio vsftpd
, por razones de seguridad no aconseja tener una raíz en la que pueda escribir el usuario anónimo.
Otras directivas de configuración
Algunas opciones de configuración para vsftpd.conf
son:
Opción: | Función: |
no_anon_password |
Si se activa no se solicitará contraseña para el usuario anónimo. |
anon_max_rate |
Velocidad máxima, en bytes por segundo, para los clientes anónimos. |
local_max_rate |
Velocidad máxima, en bytes por segundo, para los usuarios locales. |
max_clients |
Número máximo de clientes simultáneos. |
max_per_ip |
Número máximo de clientes conectados desde la misma IP. |
deny_file |
Ficheros a los que se denegará el acceso. Ejemplo: deny_file={*.mp3,*.mov,.private} |
download_file |
Únicamente se podrán descargar los ficheros que concuerden con este patrón. |
hide_file |
Ficheros que no se mostrarán (aunque podrán ser accedidos). Ejemplo: hide_file={*.mp3,.hidden,hide*,h?} |
Más información: