Crear un servidor vsftpd
Hoy os voy a mostrar como montar un servidor vsftpd. He seguido el manual y consejos que damupi
tiene en su página web (I, II):
Nos conectamos como root
su |
Instalamos el paquete vsftpd
apt-get install vsftpd |
Creamos la carpeta de donde colgaran los usuarios.
mkdir /home_ftp |
y creamos la carpeta para un primer usuario
mkdir /home_ftp/cristina |
Para autentificar a los usuarios utilizaremos un mecanismo que proporciona una interfaz entre las aplicaciones de usuario y los diferentes métodos de autenticación, denominado PAM (Pluggable Authentication Module)
Vamos a crear un fichero en texto plano y una base de datos encriptada (.db).
ATENCION !!!!
no podemos bajarnos cualquier version para hacer la base de datos (db_load),
para vsftpd necesitamos la version 3. nos ponemos en el fichero /tmp y bajamos la version 3 para crear bbdd.
Nos bajamos las fuentes del db_load y lo descomprimimos en /tmp/db-3.2.9
cd /tmp wget http://download.oracle.com/berkeley-db/db-3.2.9.tar.gz tar -zxvf db-3.2.9.tar.gz |
Instalamos el db_load
cd /tmp/db-3.2.9/dist ./configure make make install |
Es posible que en nuestra distribución no tengamos instalado Make. Para ell nos basta un simple:
apt-get install make |
Make compilará diversos ficheros, por lo que es necesario que contemos con las librerias necesarias del compilador C
apt-get install gcc libc6-dev g++ |
echo '/usr/local/berkeleydb/lib/' >> /etc/ld.so.conf ldconfig |
Hacemos una copia de nuestra autentificaion vsftpd via PAM
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.original |
Editamos el contenido
vim /etc/pam.d/vsftpd |
con el siguiente contenido:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login |
Ahora creamos el fichero que tiene los usuarios con su password:
mkdir /etc/vsftpd vim /etc/vsftpd/logins.txt |
cristina password |
Ahora creamos la base de datos con la berkeley que nos hemos instalado antes, mediante encriptacion hash
/usr/local/berkeleydb/bin/db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db
ponemos los permisos necesarios para que no lleguen a manos ajentas
chmod 600 /etc/vsftpd/vsftpd_login.db chmod 600 logins.txt #(lo podemos borrar) |
Nos creamos un certificado para asegurar que es nuestra comunicacion TLS/SSL explicita
apt-get install openssl openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem cp vsftpd.pem /etc/vsftpd |
Ya solo nos queda actualizar vsftpd y editar el fichero de configuracion vsftpd.conf
groupadd virtual useradd -d /home_ftp/ -g virtual virtual |
cp /etc/vsftpd.conf /etc/vsftpd.conf.original |
Ahora por ultimo os dejo mi archivo vsftpd.conf ,
no sin antes deciros que al final he añadido un apartado que empieza por loggin,
donde deja en /var/log/vsftpd.log lo que esta pasando, para de esa manera, si no os funciona algo,
poder saber por donde arreglarlo.
ftpd_banner="Bienvenido al servidor FTP de deckerix" anonymous_enable=NO local_enable=YES write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=NO chroot_local_user=YES guest_enable=YES listen=YES listen_port=1023 pasv_min_port=12000 pasv_max_port=12100 pasv_enable=YES pasv_address=<b>tu_ip_publica</b> #pasv_promiscuous=YES #port_promiscuous=YES #port_enable=NO local_umask=077 pam_service_name=vsftpd user_config_dir=/etc/vsftpd_user_conf guest_username=virtual user_sub_token=$USER chroot_local_user=YES hide_ids=YES local_root=<b>/home_ftp/$USER</b> secure_chroot_dir=/var/run/vsftpd #TLS/SSL/FTPS ssl_enable=YES rsa_cert_file=/etc/vsftpd/vsftpd.pem force_local_data_ssl=NO #Logging #te muestra todos los comandos FTP, bueno para debuguear. Necesita xferlog_enable=YES log_ftp_protocol=YES #Si se pone con xferlog_enable en vez de meterse en el log de vsftpd se llevado al log del sistema syslog_enable=NO xferlog_enable=YES vsftpd_log_file=/var/log/vsftpd.log |