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:
- Configurar un servidor FTP en Linux con VSFTPD
- Configurar VSFTPD para conexiones seguras (TLS/SSL/SFTP)
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:
- Copiarlos y pegarlos directamente, con lo que conlleva: pérdida de tiempo y doble consumo de espacio
- 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.