Configurar un servidor de FTP anónimo con VSFTPD

A raíz de un comentario aparecido en una entrada anterior, que por cierto no entendí bien, comenté brevemente cómo poner en marcha un servidor de FTP anónimo usando VSFTPD. Sin embargo, el tema tiene mucho más que decir, por lo que aquí viene esta entrada que va a complementar a otras dos ya aparecidas anteriormente:

Nuevo fichero de configuración

Para no interferir directamente con el fichero vsftpd.conf vamos a crear otro llamado vsftpd-anon.conf en el que indicaremos expresamente las opciones para el FTP anónimo. Veamos una a una las opciones que incluiremos en dicho fichero y por qué.

Escucha de forma autónoma

listen=YES

El servidor se encargará de escuchar las peticiones por sí mismo. La otra opción, ponerlo a NO, requiere que xinetd se encargue de controlar las llamadas. La configuración extra que requiere no es el objeto de esta entrada, así que dejaremos que VSFTPD trabaje de forma autónoma.

Usuarios locales y acceso anónimos

local_enable=NO
anonymous_enable=YES

No permitimos que los usuarios locales inicien sesión en el servidor y permitimos que existan entradas anónimas.

Escritura

write_enable=NO

Puesto que estamos hablando de un servidor anónimo, lo lógico es que no existan escrituras.

Raíz accesos anónimos

anon_root=/var/ftp

Creamos el directorio /var/ftp, en caso de que no exista ya y con esta opción lo asignamos como raíz para los accesos de usuarios anónimos.

Tasa máxima de subida

anon_max_rate=1048576

Limitamos la tasa máxima de descarga (en bytes por segundo) para conexiones anónimas. En este caso lo he limitado a 1GB/s, dependiendo de vuestra línea deberéis modificar ese valor para evitar que las conexiones de usuarios anónimos os dejen sin velocidad de subida. Si ponemos 0 no existe límite.

Log

xferlog_enable=YES

Activamos el log del sistema (por defecto estará en /var/log).

Dirección y puerto de escucha

listen_address=mi_direccion_ip
listen_port=21

Indicamos la dirección y el puerto de escucha.

Fichero completo

Ya tenemos listo el fichero de configuración al completo. Os lo dejo tal cuál por si queréis copiarlo y pegarlo:

# Obligatorias
listen=YES
local_enable=NO
anonymous_enable=YES
write_enable=NO
anon_root=/var/ftp

# Opcionales
anon_max_rate=1048576
xferlog_enable=YES
listen_address=mi_direccion_ip
listen_port=21

Arranque y parada del servicio

Si ejecutamos la orden: service vsftpd restart, reiniciaremos el servidor VSFTPD con su fichero de configuración original. Para iniciarlo con el que acabamos de crear, deberemos especificárselo en forma de párametro (como usuario root):

vsftpd /etc/vsftpd/vsftpd-anon.conf

Para parar el servicio:

killall vsftpd

Compartir ficheros y directorios

Tenemos dos opciones para poner en el servidor FTP disponibles ficheros y directorios:

  1. Copiarlos y pegarlos directamente, con lo que conlleva: pérdida de tiempo y doble consumo de espacio
  2. Unir mediante montajes los directorios que queramos compartir

Seguro que también pensáis que más directo que el punto 2, sería crear enlaces simbólicos. VSFTPD no permite el uso de estos enlaces porque al “enjaular” los datos /var/ftp aunque el enlace esté hecho, la llamada al sistema es al directorio real y se cancela la petición.

La solución es usar montajes con el parámetro bind. Para ello sólo tendremos que hacer lo siguiente:

mount --bind /ruta/a/compartir /var/ftp/pub

Con esto tendremos los directorios o carpetas compartidas en el directorio público de nuestro FTP sin tenerlas que haber copiado previamente.