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

Crear directorio FTP

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:

Configurar el cortafuegos
Ahora, haz clic en conectar, e introduce tu contraseña:

Introduce la contraseña

Entonces, se mostrarán detalles como los que se muestran a continuación, haz clic en Aceptar.

Acepta el nuevo anfitrión

En este punto, estás conectado al servidor FTP, y puedes subir y bajar archivos/carpetas.

La conexión con el servidor FTP se ha realizado con éxito

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:

Acceder a FTP sobre SSL/TLS

A continuación, introduce tu contraseña:

Introduce la contraseña
A continuación, verás el certificado SSL, verifica los detalles del certificado y haz clic en Aceptar.

Aceptar certificado SSL
Por fin, verás el contenido de tu servidor FTP y podrás transferir tus datos de forma segura de un sistema a otro.

La conexión con el servidor FTP se ha realizado con éxito

También te podría gustar...