vsftpd soporta de manera explícita (desde la 2.0.0) y implícita (desde 2.1.0)
FTPS.
vsftpd es el servidor FTP por defecto de las distribuciones
Ubuntu,
CentOS,
Fedora,
NimbleX,
Slackware y
RHEL Linux.
Instalación
apt-get install vsftpd libdb4.7 libdb4.7-dev db4.7-util
Configuración
Para editar la configuración del vsftpd es tan facil como editar las preferencias que queremos en el archivo /etc/vsftpd.conf . Habitualmente nos fijaremos en estas opciones:
cat vsftpd.conf
listen=YES
anonymous_enable=NO
guest_enable=YES
guest_username=ftp
local_enable=YES
write_enable=YES
user_config_dir=/etc/vsftpd/users
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
connect_from_port_20=YES
local_umask=022
ftpd_banner=Welcome to a very very secret service.
chroot_list_enable=YES
chown_uploads=YES
chown_username=ftp
virtual_use_local_privs=YES
secure_chroot_dir=/var/run/vsftpd/empty
user_sub_token=$USER
local_root=/vsftpd/$USER
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
Lo que hace cada opción se ve muy bien explicado en los comentarios del propio archivo.Os aconsejo hacer un 'man vsftpd.conf'
Como lo que queremos son usuarios virtuales, y no usuarios del sistema, lo que haremos es crear una base de datos con usuarios-contraseñas y le diremos al vsftpd que use dicha base de datos. Podemos usar MySQL o Berkeley.db. En muchos casos Berkeley nos será suficiente aunque usar MySQL és más versátil a la hora de añadir y borrar usuarios facilmente. Para este tutorial usaremos Berkeley. Primero creamos un txt con el formato siguiente:
cat usuarios-ftp.txt
eddy
momami
paco
potroski
En donde los usuarios son eddy (con contraseña momami) y paco (con contraseña potroski).
Ahora creamos la base de datos Berkeley:
db4.7_load -T -t hash -f usuarios-ftp.txt /etc/vsftpd_login.db
luego le damos los permisos adecuados a
/etc/vsftpd_login.db:
chmod 600 /etc/vsftpd_login.db
El archivo de usuarios-ftp.txt lo podemos borrar o hacer una copia de seguridad por si tuviéramos que añadir nuevos usuarios. También circula por internet
un script que automatiza el gestionar usuarios de una base de datos Berkeley.
Ahora tendremos que hacer que el sistema de autenticación PAM lea para vsftpd de nuestra base de datos:
cat /etc/pam.d/vsftpdauth required /lib/security/pam_userdb.so db=/etc/vsftpd_login crypt=hash
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login crypt=hash
Con esto ya tendremos a nuestros usuarios virtuales creados y validados. Como hemos puesto la directiva
local_root=/vsftpd/$USER del /etc/vsftpd.conf, una vez validado el usuario irá a mirar ese directorio (en donde $USER es una variable que contiene el nombre de usuario). Así pues, debe existir y con privilegios para el usuario ftp, tal como hemos indicado en la directiva
guest_username=ftp :
mkdir -p /vsftpd/{eddy,paco}
chown -R ftp:ftp /vsftpd
Ahora ya tenemos usuarios validados y con carpeta personal. Lo que nos interesa ahora es enjaularlos en dicha carpeta para que no puedan salir. Esto lo hacemos con la directiva del /etc/vsftpd.conf siguiente:
chroot_list_enable=YES
Con esta directiva lo que hacemos es enjaular a todos los usuarios que esten en la lista
/etc/vsftpd.chroot_list . Así pues en nuestra intencion de que los usuarios virtuales eddy y paco entren en nuestro ftp, demanera enjaulada pondremos lo siguiente en ese archivo:
cat /etc/vsftpd.chroot_listeddy
paco
Y con esto daríamos por finalizada la configuración de nuestro vsftpd con usuarios virtuales y enjaulados.