Cómo instalar un servidor FTP seguro con vsftpd en Debian 12

vSFTPd o Very Secure FTP Daemon es un software de servidor FTP gratuito y de código abierto. Es un demonio FTP para sistemas operativos tipo Unix y está licenciado bajo la Licencia Pública General de GNU. vSFTPd es uno de los demonios FTP más utilizados, es rápido y ligero en cuanto a recursos del sistema, seguro gracias a la integración de PAM y SSL, y estable. vSFTPd se ha ganado la confianza de grandes empresas como RedHat, SUSE, Debian, Gnome, KDE, etc. debido a su sofisticación.

vSFTPd puede funcionar con IPv6 y admite configuraciones de IP y usuarios virtuales. Puede ejecutarse como demonio independiente o a través de inetd. Para la gestión de usuarios, vSFTPd ofrece una función que permite a los usuarios establecer su propia configuración, como restricciones de IP por fuente, reconfigurabilidad y estrangulamiento del ancho de banda. Además, vSFTPd admite un módulo de autenticación plug-in (PAM) para usuarios virtuales y también proporciona integración de seguridad con SSL/TLS.

En este tutorial, aprenderás a configurar y crear un servidor FTP seguro con vsftpd en un servidor Debian 12. En esta guía también aprenderás a asegurar la instalación de tu servidor FTP mediante UFW (Uncomplicated Firewall) y a conectarte al servidor FTP utilizando el cliente FTP FileZilla.

Requisitos previos

Antes de continuar, asegúrate de que tienes lo siguiente:

  • Un servidor Debian 12.
  • Un usuario no root con privilegios de administrador sudo.
  • El paquete openssl está instalado en tu servidor.

Instalación de vsftpd

El vsftpd es una implementación del protocolo FTP para sistemas operativos UNIX y Linux. El paquete vsftpd está disponible en la mayoría de las distribuciones de Linux, incluida Debian. Ahora instalarás vsftpd mediante APT y verificarás el servicio vsftpd para asegurarte de que se está ejecutando.

Antes de instalar el paquete vsftpd, ejecuta el siguiente comando para actualizar tu repositorio Debian.

sudo apt update

actualizar repo

Ahora instala el paquete vsftpd utilizando el siguiente comando apt install.

sudo apt install vsftpd

Confirma la instalación escribiendo y y pulsa ENTER.

instalar vsftpd

Una vez instalado vsftpd, el servicio vsftpd se ejecutará automáticamente y quedará habilitado. Verifica el servicio vsftpd utilizando el siguiente comando.

sudo systemctl is-enabled vsftpd
sudo systemctl status vsftpd

La siguiente salida confirma que el servicio vsftpd se está ejecutando y está habilitado. Además, el servicio vsftpd se ejecutará automáticamente al arrancar el sistema.

verificar vsftpd

Configurar vsftpd

En el siguiente paso, configurarás y crearás un servidor FTP seguro con vsftpd. Generarás certificados SSL/TLS y modificarás la configuración por defecto de vsftpd /etc/vsftpd.conf.

En primer lugar, ejecuta el siguiente comando openssl para generar nuevos certificados TLS que se utilizarán para la instalación de tu servidor vsftpd.

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Introduce tus datos cuando se te solicite. Una vez finalizado el proceso, tus certificados TLS estarán disponibles en /etc/ssl/private/vsftpd.pem.

generar tls

Ahora ejecuta el siguiente comando para crear un nuevo archivo /etc/vsftpd.userlist para almacenar los usuarios FTP.

touch /etc/vsftpd.userlist

Después, ejecuta el siguiente comando para hacer una copia de seguridad de la configuración de vsftpd. A continuación, abre la configuración de vsftpd /etc/vsftpd.conf utilizando el editor nano.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
sudo nano /etc/vsftpd.conf

Desactiva el acceso anónimo a tu servidor vsftpd cambiando la opción anonymous_enable a NO.

anonymous_enable=NO

Permite que los usuarios locales del archivo /etc/passwd y los usuarios PAM inicien sesión en el servidor vsftpd cambiando la opción local_enable a YES.

local_enable=YES

Permite a los usuarios FTP subir archivos al servidor vsftpd cambiando la opción write_enable a YES.

write_enable=YES

Ahora habilita chroot o jail para los usuarios FTP añadiendo las siguientes opciones. Esto encerrará al usuario FTP en el directorio /home/$USER/chroot. Por ejemplo, el usuario FTP bob quedará bloqueado en el directorio /home/bob/chroot.

chroot_local_user=YES
user_sub_token=$USER
local_root=/home/$USER/chroot

A continuación, añade la siguiente configuración para establecer usuarios virtuales vsftpd. Cualquier usuario dentro del archivo /etc/vsftpd.userlist podrá acceder al servidor vsftpd.

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Añade las siguientes líneas para asegurar tu servidor vsftpd con certificados SSL/TLS. Esto forzará que el inicio de sesión del usuario y la conexión de transferencia de datos utilicen conexiones seguras.

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
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

Ahora añade la siguiente configuración para establecer las conexiones en modo pasivo utilizando puertos entre 20000 y 25000.

pasv_min_port=20000
pasv_max_port=25000

Guarda y sal del archivo cuando hayas terminado.

Ahora ejecuta el siguiente comando systemctl para reiniciar el servicio vsftpd y aplicar los cambios que has realizado.

sudo systemctl restart vsftpd

Con esto, tu servidor vsftpd ya está funcionando con las nuevas configuraciones.

Configurar el cortafuegos

En el siguiente paso, instalarás UFW (Uncomplicated Firewall) en tu servidor Debian y asegurarás con él la instalación de tu servidor FTP. Instalarás UFW mediante APT, abrirás el puerto 20:21/tcp del servidor FTP y el puerto 20000:25000/tcp de conexión de datos en modo pasivo.

Instala UFW utilizando el siguiente comando apt. Escribe y para proceder a la instalación.

sudo apt install ufw

instalar ufw

Una vez instalado UFW, ejecuta los siguientes comandos ufw para abrir el puerto para el servicio OpenSSH, los puertos 20:21 del servidor vsftpd y la conexión FTP de modo pasivo entre los puertos 20000 y 25000.

sudo ufw allow OpenSSH
sudo ufw allow 20:21/tcp
sudo ufw allow 20000:25000/tcp

A continuación, ejecuta el siguiente comando ufw para iniciar y habilitar la UFW.

sudo ufw enable

Escribe para confirmar y la UFW debería estar ejecutándose y habilitada en tu sistema Debian.

configuración ufw

Comprueba el estado detallado de UFW utilizando el comando que aparece a continuación.

sudo ufw status

La salida activa confirma que UFW se está ejecutando y está habilitado. Además, se añade el servicio OpenSSH y algunos puertos para el servidor vsftpd 20:21/tcp y 20000:25000/tcp.

verificar ufw

Configurar usuarios virtuales FTP

Llegados a este punto, ya has terminado la configuración del servidor vsftpd, ahora vas a crear un nuevo usuario FTP que se utilizará para iniciar sesión en el servidor FTP y cargar archivos en él.

Ejecuta el siguiente comando para crear un nuevo archivo /bin/ftponly. A continuación, hazlo ejecutable mediante el comando chmod que aparece a continuación. El archivo /bin/ftponly se utilizará como shell por defecto para los usuarios de FTP.

echo -e '#!/bin/sh\necho "Shell for FTP users only."' | sudo tee -a  /bin/ftponly
sudo chmod a+x /bin/ftponly

Añade el archivo /bin/ftponly a /etc/shells para asegurarte de que es un shell válido.

sudo echo "/bin/ftponly" >> /etc/shells

añadir caparazón

Ahora crea un nuevo usuario FTP bob y configura la contraseña ejecutando el siguiente comando. Introduce tu contraseña y repítelo.

sudo useradd -m -s /bin/ftponly bob
sudo passwd bob

Después, ejecuta el siguiente comando para crear un nuevo directorio chroot /home/bob/chroot para el usuario bob. Además, te asegurarás de que el directorio chroot /home/bob/chroot tiene la propiedad adecuada.

sudo -u bob mkdir -p /home/bob/chroot
sudo chown -R bob: /home/bob/chroot

A continuación, ejecuta el siguiente comando para crear otros directorios nuevos data y upload que se utilizarán para almacenar los datos del usuario FTP. Asegúrate de configurar correctamente la propiedad de esos directorios.

sudo -u bob mkdir -p /home/bob/chroot/{data,upload}
sudo chown -R bob: /home/bob/chroot/{data,upload}

Ahora ejecuta el siguiente comando para cambiar el permiso del directorio /home/bob/chroot a 550 y de los directorios data y upload a 750.

sudo chmod 550 /home/bob/chroot
sudo chmod 750 /home/bob/chroot/{data,upload}

Ahora que has creado un nuevo usuario, ejecuta el comando siguiente para añadir el usuario bob al archivo /etc/vsftpd.userlist.

echo "bob" >> /etc/vsftpd.userlist

Por último, ejecuta el siguiente comando para reiniciar el servicio vsftpd y aplicar los cambios. Tras ejecutar el comando, tu usuario FTP bob estará listo.

sudo systemctl restart vsftpd

Subir archivos al servidor FTP

Para verificar la instalación de tu servidor vsftpd, te conectarás al servidor FTP con el nuevo usuario que has creado mediante el software cliente FTP. A continuación, también subirás nuevos archivos para asegurarte de que la instalación se ha realizado correctamente.

Descarga e instala el cliente FTP para tu máquina local. Puedes utilizar FileZilla, que se puede instalar en Windows, Linux y MacOS. Una vez instalado FileZilla, ábrelo para conectarte a tu servidor FTP seguro.

Introduce la dirección IP de tu servidor FTP, y el nombre de usuario y la contraseña de tu usuario FTP. A continuación, haz clic en Conexión rápida para confirmar.

conectar mediante filezilla

Selecciona la opción Confiar siempre en este certificado en futuras sesiones y haz clic en Aceptar para confirmar.

aceptar certificados

Una vez conectado a tu servidor FTP, deberías ver dos directorios de datos y de subida disponibles en tu servidor FTP. Puedes subir archivos a ambos directorios datos y subir, pero no puedes subir archivos fuera de esos directorios protegidos mediante chroot.

conectado al servidor ftp

Puedes arrastrar y soltar tus archivos para subirlos al servidor FTP.

archivos subidos

Conclusión

Para terminar, has creado con éxito un servidor FTP seguro con vsftpd en un servidor Debian 12. También has asegurado la instalación de tu servidor FTP mediante UFW (Uncomplicated Firewall) y has aprendido a crear usuarios FTP. Ahora puedes utilizar el servidor FTP como la principal transferencia de datos entre tu máquina local y tu servidor, También puedes encontrar otro software cliente FTP con tus preferencias.

También te podría gustar...