El Protocolo de transferencia de archivos o FTP es un protocolo de red muy antiguo y uno de los más conocidos. No es seguro en comparación con SFTP o SCP en estos días, 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 cifrado.
Tenemos una gran variedad de servidores FTP de código abierto disponibles en la actualidad, como FTPD, VSFTPD, PROFTPD y pureftpd. Entre todos ellos, VSFTPD es un protocolo muy seguro, rápido y muy 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, le mostraremos cómo instalar el servidor FTP vsftpd en Debian 11.
Requisitos
Un servidor que ejecuta Debian 11.
Un usuario no root con privilegios sudo.
1. Instalar Vsftpd
Antes de comenzar la instalación, actualice su servidor Debian 11 ejecutando el siguiente comando en la terminal:
sudo apt update -y
sudo apt upgrade -y
Debian tiene un repositorio muy grande y el paquete vsftpd está disponible en el repositorio oficial, por lo que puede instalar vsftpd fácilmente ejecutando el siguiente comando:
sudo apt install vsftpd -y
Después de la instalación del paquete, inicie el servicio Vsftpd, verifique el estado del servicio y habilite el servicio al inicio.
sudo systemctl start vsftpd
sudo systemctl status vsftpd
systemctl enable vsftpd.service
2. Cree un usuario de FTP y configúrelo para iniciar sesión en FTP
Ahora, cree una nueva cuenta de usuario para FTP, con este usuario iniciaremos sesión en el servidor FTP más tarde.
sudo adduser sohan
Los usuarios agregados en el archivo vsftpd.userlist tienen permiso para acceder al servidor FTP.
A continuación, debemos agregar el usuario sohan en la lista de usuarios de vsftpd. Abra el archivo y agregue un usuario ejecutando el siguiente comando:
echo "sohan" | sudo tee -a /etc/vsftpd.userlist
3. Crear directorio de usuario FTP
A continuación, debemos 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, cree un directorio donde se puedan cargar los archivos y otorgue 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 Vsftpd
A continuación, debe cambiar algunos parámetros predeterminados para configurar un servidor FTP.
Primero, cree una copia de seguridad del archivo de configuración vsftpd original.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
En el servidor FTP, los usuarios anónimos tienen acceso por defecto. Para hacer que el servidor FTP sea más seguro, deshabilitaremos el inicio de sesión de usuario anónimo y solo otorgaremos acceso al usuario específico.
A continuación, abra el archivo vsftpd.conf y realice los cambios siguientes:
vim /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
Hay algunos otros cambios que debemos hacer en la configuración, primero abrir vsftpd.conf
sudo vim /etc/vsftpd.conf
A continuación, asegúrese de que vsftpd.conf contenga 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
Guarde y cierre el archivo. Puede cambiar la configuración anterior según sus necesidades.
Ahora reinicie el servicio vsftpd y verifique el estado del servicio ejecutando los siguientes comandos:
sudo systemctl restart vsftpd
A continuación, asegúrese de que el servicio vsftpd esté en estado de ejecución ejecutando el siguiente comando en la Terminal:
sudo systemctl status vsftpd
5. permitir vsftpd en el cortafuegos y acceder al servidor vsftpd
A continuación, si está utilizando un cortafuegos, permita el puerto 21 y el puerto 22 ejecutando el siguiente comando:
sudo ufw allow 21/tcp
sudo ufw allow 22/tcp
A continuación, vuelva a cargar el cortafuegos para aplicar los cambios:
sudo ufw reload
A continuación, abra cualquier cliente FTP como FileZilla e ingrese los detalles de su servidor, Me gusta Protocolo, Host, Usuario:
Ahora, haga clic en conectar, luego ingrese su contraseña:
Luego, mostrará detalles como los siguientes, haga clic en Aceptar.
En este punto, está conectado al servidor FTP y puede cargar y descargar archivos/carpetas.
6. Asegure Vsftpd usando SSL/TLS
Digamos que desea transferir datos cifrados a través de FTP, para hacerlo necesita crear un certificado SSL y habilitar la conexión SSL/TLS.
Puede crear un certificado usando OpenSSL usando 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, deberá editar el archivo vsftpd.conf y realizar algunos cambios:
sudo vim /etc/vsftpd.conf
Agregue las siguientes líneas por fin:
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
Guarde y salga del archivo, luego reinicie Vsftpd usando el siguiente comando:
sudo systemctl restart vsftpd
7. Acceda a FTP sobre SSL/TLS
Abra el cliente FTP de FileZilla y vaya a Archivo>Administrador de sitios. Aquí, haga clic en Agregar nuevo sitio e ingrese el nombre del host/sitio, agregue la dirección IP, defina el protocolo a usar, Cifrado:Requerir para explicar FTP sobre TLS y tipo de inicio de sesión. Luego haga clic en el botón Conectar. Debería ver la siguiente imagen:
A continuación, introduzca su contraseña:
A continuación, verá el certificado SSL, verificará los detalles del certificado y hará clic en Aceptar.
Por fin, verá el contenido de su servidor FTP y podrá transferir de forma segura sus datos desde un sistema a otro.
Conclusión
En la guía anterior, hemos instalado el servidor VSFTPD en Debian 11. También aprendemos cómo conectarnos a través de una conexión cifrada y no cifrada utilizando un certificado SSL.