VSFTPD se distingue principalmente porque sus valores predeterminados son muy seguros y por su sencillez en la configuración. Actualmente se presume que vsftpd podría ser quizá el servidor FTP más seguro del mundo.
En este post voy a explicar como instalar VSFTPD en Ubuntu Server.
Empezamos con este comando para realizar su instalación:
sudo apt-get update sudo apt-get install vsftpd
Una vez instalado editamos su fichero de configuración para afinar mas su seguridad:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig sudo nano /etc/vsftpd.conf
Nos aseguramos que tenemos habilitados estos parámetros:
anonymous_enable=NO local_enable=YES write_enable=YES secure_chroot_dir=/var/run/vsftpd/empty connect_from_port_20=YES pasv_min_port=40110 pasv_max_port=40210
Aqui pongo una breve explicación de estos parametros:
Parámetro anonymous_enable, desactivar acceso a usuarios anónimos, para mayor seguridad.
anonymous_enable=NO
Parámetro local_enable, permitir a los usuarios autenticados tener sus propias carpetas locales.
local_enable=YES
Parámetro write_enable, perrmitir el modo de escritura en su carpeta.
write_enable=YES
También debemos abrir los puertos 20 y 21 para FTP, el puerto 990 para cuando habilitemos a posterior TLS y el rango de puertos 40000-50000 como puertos pasivos. Os remito a mi post de como configurar un firewall en linux usando iptables
Ahora reiniciamos el servidor para que se tengan en cuenta estos cambios:
sudo /etc/init.d/vsftpd restart
El siguiente paso es crear nuestros usuarios FTP para enjaularlos en su propio directorio FTP:
sudo adduser tu_usuario_ftp
Añadir grupo al usuario.
Ahora agregamos el usuario al grupo ftp y en mi caso también al grupo de apache para que pueda escribir en una carpeta de una aplicacion web concreta:
sudo usermod -a -G www-data tu_usuario_ftp
sudo usermod -a -G ftp tu_usuario_ftp
Añadir direcotrio por defecto del usuario.
En mi caso quiero que cada usuario ftp acceda a una carpeta de cada aplicacion web alojada en apache
sudo usermod -d /var/www/tu_aplicacion_web tu_usuario_ftp
Ahora reiniciamos el servidor para que se tengan en cuenta estos cambios:
sudo /etc/init.d/vsftpd restart
Ahora ya podriamos entrar por ftp con este usuario a la carpeta home del usuario creado que la hemos cambiado a una carpeta de una de las aplicaciones web que tengamos alojada en apache.
Ahora tocaría configurar VFTP para que las conexiones siempre vayan cifradas.
Lo primero que tenemos que hacer es generarnos un certificado, os remito a mi post que explica muy bien los certificados ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Una vez generado el certificado nos toca de nuevo editar el fichero de confiuracion para añadir las siguientes lineas:
sudo nano /etc/vsftpd.conf
Comentamos las siguientes las lineas del fichero:
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Y añadimos las siguientes:
ssl_enable=YES rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO require_ssl_reuse=NO ssl_ciphers=HIGH
Por último nos queda reiniciar el servicio para aplicar los cambios
sudo systemctl restart vsftpd
Ya sólo queda acceder por FTP usando vuestro cliente ftp favorito. Os recomiendo usar Filezilla y cuando configures las conexion marcar la opcion de modo pasivo y aceptar el certificado autofirmado.
Deja una respuesta