Cómo instalar el servidor FTP vsftpd y asegurarlo con TLS en Debian 11
El Protocolo de Transferencia de Archivos o FTP es un protocolo de red muy antiguo y uno de los más conocidos. Actualmente no es seguro en comparación con SFTP o SCP, pero sigue siendo la primera opción de muchos usuarios para transferir archivos entre un servidor y un cliente. El FTP se conoce como inseguro porque transfiere datos junto con las credenciales del usuario sin ningún tipo de encriptación.
Hoy en día existe una amplia gama de servidores FTP de código abierto, como FTPD, VSFTPD, PROFTPD y pureftpd. Entre todos ellos, VSFTPD es un protocolo muy seguro, rápido y el más utilizado para transferir archivos entre dos sistemas.
VSFTPD también se conoce como «Demonio de Protocolo de Transferencia de Archivos Muy Seguro» con soporte de SSL, IPv6, FTPS explícito e implícito.
En esta guía, te mostraremos cómo instalar el servidor FTP vsftpd en Debian 11.
Requisitos previos
Un servidor con Debian 11.
Un usuario no root con privilegios sudo.
1. Instalar Vsftpd
Antes de comenzar la instalación, actualiza tu servidor Debian 11 ejecutando el siguiente comando en el terminal:
sudo apt update -y sudo apt upgrade -y
Debian tiene un repositorio muy amplio y el paquete vsftpd está disponible en el repositorio oficial, así que puedes instalar fácilmente el vsftpd ejecutando el siguiente comando:
sudo apt install vsftpd -y
Después de la instalación del paquete, inicia el servicio Vsftpd, comprueba el estado del servicio y habilita el servicio al inicio.
sudo systemctl start vsftpd sudo systemctl status vsftpd systemctl enable vsftpd.service
2. Crea un usuario FTP y configúralo para el inicio de sesión FTP
Ahora, crea una nueva cuenta de usuario para FTP, utilizando este usuario iniciaremos la sesión en el servidor FTP más adelante.
sudo adduser sohan
Los usuarios añadidos en el archivo vsftpd.userlist tienen permiso para acceder al servidor FTP.
A continuación, tenemos que añadir el usuario sohan en la lista de usuarios de vsftpd. Abre el archivo y añade un usuario ejecutando el siguiente comando:
echo "sohan" | sudo tee -a /etc/vsftpd.userlist
3. Crear un directorio de usuario FTP
A continuación, tenemos que crear un directorio FTP para nuestro usuario FTP y establecer la propiedad con el siguiente comando:
sudo mkdir -p /home/sohan/ftp_directory sudo chown nobody:nogroup /home/sohan/ftp_directory sudo chmod a-w /home/sohan/ftp_directory
Ahora, crea un directorio donde se puedan subir archivos y dale la propiedad al usuario sohan ejecutando el comando
sudo mkdir -p /home/sohan/ftp_directory/ftp_data sudo chown sohan:sohan /home/sohan/ftp_directory/ftp_data cd /home/sohan/ftp_directory/ chmod -R 777 ftp_data
4. Configurar el Vsftpd
A continuación, tienes que cambiar algunos parámetros por defecto para configurar un servidor FTP.
En primer lugar, crea una copia de seguridad del archivo de configuración original de vsftpd.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
En el servidor FTP, los usuarios anónimos tienen acceso por defecto. Para que el servidor FTP sea más seguro, deshabilitaremos el acceso de los usuarios anónimos y sólo concederemos acceso al usuario específico.
A continuación, abre el archivo vsftpd.conf y realiza los cambios que se indican a continuación:
vim /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
Hay algunos otros cambios que tenemos que hacer en la configuración, Primero abre vsftpd.conf
sudo vim /etc/vsftpd.conf
A continuación, asegúrate de que vsftpd.conf debe contener las siguientes líneas:
listen=NO listen_ipv6=YES anonymous_enable=NO write_enable=YES local_umask=022 dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd user_sub_token=$USER local_root=/home/$USER/ftp_directory userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
Guarda y cierra el archivo. Puedes cambiar la configuración anterior según tus necesidades.
Ahora reinicia el servicio vsftpd y comprueba el estado del servicio ejecutando los siguientes comandos
sudo systemctl restart vsftpd
A continuación, asegúrate de que el servicio vsftpd está en su estado de ejecución ejecutando el siguiente comando en el Terminal:
sudo systemctl status vsftpd
5. permite vsftpd en el firewall y accede al servidor vsftpd
A continuación, si estás utilizando un cortafuegos, permite el puerto 21 y el puerto 22 ejecutando el siguiente comando:
sudo ufw allow 21/tcp
sudo ufw allow 22/tcp
A continuación, vuelve a cargar el cortafuegos para aplicar los cambios:
sudo ufw reload
A continuación, abre cualquier cliente FTP como FileZilla e introduce los datos de tu servidor, como el protocolo, el host y el usuario:
Ahora, haz clic en conectar, e introduce tu contraseña:
Entonces, se mostrarán detalles como los que se muestran a continuación, haz clic en Aceptar.
En este punto, estás conectado al servidor FTP, y puedes subir y bajar archivos/carpetas.
6. Proteger el Vsftpd con SSL/TLS
Digamos que quieres transferir datos encriptados a través de FTP, para ello necesitas crear un certificado SSL y necesitas habilitar la conexión SSL/TLS.
Puedes crear un certificado utilizando OpenSSL con el siguiente comando:
sudo mkdir /etc/cert sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/cert/vsftpd.pem -out /etc/cert/vsftpd.pem
Ahora, tendrás que editar el archivo vsftpd.conf y hacer algunos cambios:
sudo vim /etc/vsftpd.conf
Añade al final las siguientes líneas:
rsa_cert_file=/etc/cert/vsftpd.pem rsa_private_key_file=/etc/cert/vsftpd.pem ssl_enable=YES 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
Guarda y sal del archivo, luego reinicia Vsftpd usando el siguiente comando:
sudo systemctl restart vsftpd
7. Acceder al FTP sobre SSL/TLS
Abre el cliente FTP FileZilla y ve a Archivo>Administrador de sitios. Aquí, haz clic en añadir Nuevo sitio e introduce el nombre del host/sitio, añade la dirección IP, define el protocolo a utilizar, Cifrado: Requiere explicar FTP sobre TLS y el tipo de inicio de sesión. A continuación, haz clic en el botón Conectar. Deberías ver la siguiente imagen:
A continuación, introduce tu contraseña:
A continuación, verás el certificado SSL, verifica los detalles del certificado y haz clic en Aceptar.
Por fin, verás el contenido de tu servidor FTP y podrás transferir tus datos de forma segura de un sistema a otro.