Vsftpd
Versión |
2.0.7-1 |
Página principal |
http://vsftpd.beasts.org/ |
Observaciones |
Sumario
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