Instalar y Configurar vsftpd en Debian 9

File Transfer Protocol (FTP) es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP, basado en la arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado en cada equipo.

En esta entrada describiré la instalación y configuración de vsftpd, que es un programa utilizado para implementar servidores de archivos a través del protocolo FTP, se distingue principalmente por su seguridad y por la sencillez en su configuración. Esta instalación la realizaremos tomando como punto de partida la Instalación Básica de Debian 9, que fue descrita en una entrada anterior.

Instalación

Como es de esperar, lo primero que haremos es instalar el paquete de este programa, para lo cual ejecutamos lo siguiente.

sudo apt install vsftpd

Una vez instalado el servicio del vsftpd se inicia automáticamente y del mismo modo se inicia durante el arranque del sistema.

Configuración

La configuración de vsftpd se encuentra en el archivo  /etc/vsftpd/vsftpd.conf. Haremos que nuestro servidor FTP solo permita el acceso a usuarios locales, con privilegios de lectura y escritura pero solo a sus carpetas personales. Para esto, primero editamos el archivo de configuración de vsftpd.

sudo vi /etc/vsftpd.conf

En este archivo hay varias opciones de configuración que debemos verificar, modificar o habilitar según corresponda.  La siguiente es una lista de estas opciones y sus valores respectivos para nuestro cometido.

anonymus_enable=NODeshabilita el acceso anónimo.
local_enable=YESHabilta el acceso a usuarios locales.
write_enable=YESConcede a los usuarios privilegios de escritura.
local_umask=022Mascara.
ftpd_banner=Bienvenido a mi FTP.Cambia el mensaje de bienvenida.
chroot_local_user=YESRestringe los usuarios a sus carpetas personales.

Como aclaración, cualquier opción de configuración que comience con #  es una opción deshabilitada, ya que el sistema la reconoce como comentario.

Una vez realizado cualquier cambio en el archivo de configuración de vsftpd debemos reiniciar su servicio correspondiente.

sudo systemctl restart vsftpd.service

Configuración del Firewall

Al realizar la Instalación Básica de Debian 9 configuramos el Firewall de tal modo que se restrinja el acceso a nuestro servidor. Para que el servicio FTP funcione correctamente es necesario abrir el puerto 21  por TCP del Firewall, razón por la cual debemos ejecutar la siguiente línea.

sudo iptables -I INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT

No olvidemos que el servicio FTP usa el puerto 21 solo para comandos, toda la transferencia de datos se realiza a través de diferentes puertos elegidos al azar, para que iptables acepte los paquetes en dichos puertos debemos habilitar el seguimiento a las conexiones FTP, un modo recomendable de hacerlo es ejecutando la siguiente línea.

sudo iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp

Finalmente debemos guardar los cambios realizados en iptables.

sudo iptables-save

Creación de Usuarios

Para que un usuario tenga acceso al servidor FTP debe ser creado ejecutando una línea similar a la siguiente.

sudo useradd -s /usr/sbin/nologin -m nubins

Como podemos ver, estamos creando el usuario  nubins, la opción -m permite crear su carpeta personal que por defecto se ubica en /home y lleva el mismo nombre del usuario, además no podrá acceder a una línea de órdenes porque le asignamos /usr/sbin/nologin como shell.

Una vez creado el usuario le asignamos una contraseña.

sudo passwd nubins

Adicionalmente debemos añadir la línea /usr/sbin/nologin en el archivo /etc/shells, caso contrario el usuario no podrá acceder al servidor FTP. Por lo tanto debemos modifcarlo mediante:

nano /etc/shells

Y añadimos la línea:

/usr/sbin/nologin

Para “enjaular” a los usuarios en sus carpetas personales hemos especificado chroot_local_user=YES en el archivo de configuración de vsftpd, desde la versión 3.0 de este programa de modo predeterminado no se permite el acceso con chroot() a los usuarios que tengan acceso a la línea de órdenes o bien que tengan privilegios de escritura sobre su propio carpeta de inicio. Una manera práctica de abordar este problema es seguir los siguientes pasos.

  1. Establecer a root como propietario de la carpeta de inicio del usuario y cambiar sus permisos.
sudo chown root:root /home/nubins
sudo chmod 755 /home/nubins
  1. Crear una nueva carpeta dentro de la carpeta de inicio del usuario.
sudo mkdir /home/nubins/publico
  1. Realizar todos los cambios necesarios a la carpeta creada.
sudo chown nubins:nubins  /home/nubins/publico

Ahora el usuario nubins puede acceder a nuestro servidor FTP.

Gestionar VSFTPD

Para gestionar el servicio usaremos los mismos comandos que usamos en cualquier otro servicio, esto son:

Iniciar el servicio vsftpd

systemctl start vsftpd

Parar el servicio vsftpd

systemctl stop vsftpd

Reiniciar el servicio vsftpd

systemctl restart vsftpd

Comprobar el estado del servicio vsftpd

systemctl status vsftpd