Vsftpd

De Astillas.net
Versión
2.0.7-1
Página principal
http://vsftpd.beasts.org/
Observaciones


Configuración

El archivo de configuración principal es /etc/vsftpd.conf aunque dependiendo de las características habilitadas pueden existir otros archivos y directorios.

Acceso puramente anónimo

La configuración predefinida de vsftpd ya permite el acceso anónimo al usuario del sistema ftp y su directorio personal /home/ftp. Conviene crear dentro de él un directorio raíz bajo el que situar el contenido.

$ sudo mkdir /home/ftp/pub 
$ sudo chown ftp.nogroup /home/ftp/pub 
$ sudo chmod 2755 /home/ftp/pub 

La configuración mínima del servidor queda así:

listen=YES
anonymous_enable=YES
local_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd

Y ya que hemos activado el registro de transferencias conviene que si cambiamos el valor toquemos también la configuración del limpiador de registros en /etc/logrotate.d/vsftpd.

Acceso con usuarios

En este caso se puede tener una base de datos de usuarios y contraseñas independiente del sistema. Para ello se debe crear dicha base de datos y luego cambiar la configuración para que la utilice.

La configuración mínima puede quedar así:

anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=ftpsecure
listen=YES
listen_port=21
pasv_min_port=30000
pasv_max_port=30999
user_config_dir=/etc/vsftpd_user_conf

En este caso vamos a emplear PAM para gestionar la identificación de usuarios (directiva local_enable) y aprovechamos su flexibilidad para indicarle que emplee únicamente una base de datos local.

Lo siguiente formaría el archivo /etc/pam.d/vsftpd:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

El módulo pam_userdb nos permite indicar un archivo tanto para la autentificación como para los datos de la cuenta.

Errores

vsftpd: refusing to run with writable anonymous root

Tras una conexión como usuario anónimo nos encontramos con este error

$ ncftp XXX.XXX.XXX.XXX
NcFTP 3.2.1 (Jul 29, 2007) by Mike Gleason (http://www.NcFTP.com/contact/).
Connecting to XXX.XXX.XXX.XXX...
Bienvenido al servicio FTP de XXXXXXXX
Unexpected response: OOPS: vsftpd: refusing to run with writable anonymous root
OOPS: vsftpd: refusing to run with writable anonymous root
OOPS: child died
Sleeping 20 seconds...

que se da cuando el programa vsftpd se encuentra con que el directorio raíz del usuario anónimo tiene permisos de escritura. Este directorio se define directamente con la variable anon_root o si no existe con el directorio personal del usuario al que pertenece el servidor, que en el caso de Debian es ftp y /home/ftp.

Así que siempre se puede hacer esto:

$ sudo chmod u-w /home/ftp 
$ sudo mkdir /home/ftp/pub
$ sudo chown ftp.nogroup /home/ftp/pub
$ sudo chmod 0750 /home/ftp/pub