Introducción al servicio FTP

per Victor Carceler darrera modificació 2023-02-23T09:13:44+01: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:

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

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: