Introducción al servicio FTP

per Victor Carceler darrera modificació 2021-02-14T21:15:00+02:00
Внимание!

El protocolo FTP es antiguo e inseguro. Si está pensando en poner en marcha un nuevo servidor FTP seguramente valga la pena que considere algún protocolo alternativo.

Wikipedia: File Transfer Protocol Security.

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:

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 o sftp de OpenSSH.
  • Herramientas de sincronización como rsync o rclone.
  • Servicios de distribución de ficheros P2P:

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:

ftp-usuario-registrado-login.png

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.

ftp-usuario-firefox-login.png

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