GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar un servidor FTP con VSFTPD en Ubuntu 18.04

FTP (Protocolo de transferencia de archivos) es un protocolo de red estándar utilizado para transferir archivos hacia y desde una red remota.

Hay muchos servidores FTP de código abierto disponibles para Linux. Los más populares y ampliamente utilizados son PureFTPd, ProFTPD y vsftpd. En este tutorial, instalaremos vsftpd (Very Secure Ftp Daemon). Es un servidor FTP estable, seguro y rápido. También le mostraremos cómo configurar vsftpd para restringir a los usuarios a su directorio de inicio y encriptar toda la transmisión con SSL/TLS.

Aunque este tutorial está escrito para Ubuntu 18.04, se aplican las mismas instrucciones para Ubuntu 16.04 y cualquier distribución basada en Debian, incluidas Debian, Linux Mint y Elementary OS.

Para transferencias de datos más seguras y rápidas, utilice SCPor SFTP.

Requisitos previos #

Antes de continuar con este tutorial, asegúrese de haber iniciado sesión como usuario con privilegios de sudo.

Instalando vsftpd en Ubuntu 18.04 #

El paquete vsftpd está disponible en los repositorios de Ubuntu. Para instalarlo, simplemente ejecute los siguientes comandos:

sudo apt updatesudo apt install vsftpd

El servicio vsftpd se iniciará automáticamente después de que se complete el proceso de instalación. Verifíquelo imprimiendo el estado del servicio:

sudo systemctl status vsftpd

El resultado se verá como a continuación, mostrando que el servicio vsftpd está activo y ejecutándose:

* vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-10-15 03:38:52 PDT; 10min ago
 Main PID: 2616 (vsftpd)
    Tasks: 1 (limit: 2319)
   CGroup: /system.slice/vsftpd.service
           `-2616 /usr/sbin/vsftpd /etc/vsftpd.conf

Configurando vsftpd #

El servidor vsftpd se puede configurar editando el /etc/vsftpd.conf expediente. La mayoría de las configuraciones están bien documentadas dentro del archivo de configuración. Para conocer todas las opciones disponibles, visite la página oficial de vsftpd.

En las siguientes secciones, repasaremos algunas configuraciones importantes necesarias para configurar una instalación segura de vsftpd.

Comience abriendo el archivo de configuración de vsftpd:

sudo nano /etc/vsftpd.conf

1. Número de acceso FTP

Permitiremos el acceso al servidor FTP solo a los usuarios locales, busque el anonymous_enable y local_enable directivas y verifique que su configuración coincida con las líneas a continuación:

/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES

2. Habilitando cargas #

Descomente write_enable configuración para permitir cambios en el sistema de archivos, como cargar y eliminar archivos.

/etc/vsftpd.conf
write_enable=YES

3. Número de cárcel de Chroot

Para evitar que los usuarios de FTP accedan a cualquier archivo fuera de sus directorios de inicio, descomente el chroot ajuste.

/etc/vsftpd.conf
chroot_local_user=YES

De forma predeterminada, para evitar una vulnerabilidad de seguridad, cuando chroot está habilitado, vsftpd se negará a cargar archivos si se puede escribir en el directorio en el que están bloqueados los usuarios.

Use uno de los métodos a continuación para permitir cargas cuando chroot está habilitado.

  • Método 1. - El método recomendado para permitir la carga es mantener habilitado chroot y configurar directorios FTP. En este tutorial, crearemos un ftp directorio dentro de la casa del usuario que servirá como chroot y un uploads grabable directorio para cargar archivos.

    /etc/vsftpd.conf
    user_sub_token=$USER
    local_root=/home/$USER/ftp
  • Método 2. - Otra opción es agregar la siguiente directiva en el archivo de configuración vsftpd. Use esta opción si debe otorgar acceso de escritura a su usuario a su directorio de inicio.

    /etc/vsftpd.conf
    allow_writeable_chroot=YES

4. Conexiones FTP pasivas #

vsftpd puede usar cualquier puerto para conexiones FTP pasivas. Especificaremos el rango mínimo y máximo de puertos y luego abriremos el rango en nuestro firewall.

Agregue las siguientes líneas al archivo de configuración:

/etc/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000

5. Limitación del número de inicio de sesión del usuario

Para permitir que solo ciertos usuarios inicien sesión en el servidor FTP, agregue las siguientes líneas al final del archivo:

/etc/vsftpd.conf
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

Cuando esta opción está habilitada, debe especificar explícitamente qué usuarios pueden iniciar sesión agregando los nombres de usuario a /etc/vsftpd.user_list archivo (un usuario por línea).

6. Protección de transmisiones con SSL/TLS #

Para encriptar las transmisiones FTP con SSL/TLS, deberá tener un certificado SSL y configurar el servidor FTP para usarlo.

Puede utilizar un certificado SSL existente firmado por una autoridad de certificación de confianza o crear un certificado autofirmado.

Si tiene un dominio o subdominio que apunta a la dirección IP del servidor FTP, puede generar fácilmente un certificado Let's EncryptSSL gratuito.

Generaremos un certificado SSL autofirmado usando el openssl comando.

El siguiente comando creará una clave privada de 2048 bits y un certificado autofirmado válido por 10 años. Tanto la clave privada como el certificado se guardarán en un mismo archivo:

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

Una vez creado el certificado SSL, abra el archivo de configuración de vsftpd:

sudo nano /etc/vsftpd.conf

Encuentra el rsa_cert_file y rsa_private_key_file directivas, cambie sus valores a pam ruta del archivo y configure el ssl_enable directiva a YES :

/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Si no se especifica lo contrario, el servidor FTP utilizará solo TLS para realizar conexiones seguras.

Reiniciar el Servicio vsftpd #

Una vez que haya terminado de editar, el archivo de configuración de vsftpd (excluyendo los comentarios) debería verse así:

/etc/vsftpd.conf
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
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
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

Guarde el archivo y reinicie el servicio vsftpd para que los cambios surtan efecto:

sudo systemctl restart vsftpd

Abrir el cortafuegos #

Si está ejecutando un firewall UFW, deberá permitir el tráfico FTP.

Para abrir el puerto 21 (puerto de comando FTP), puerto 20 (puerto de datos FTP) y 30000-31000 (rango de puertos pasivos), ejecute los siguientes comandos:

sudo ufw allow 20:21/tcpsudo ufw allow 30000:31000/tcp

Para evitar ser bloqueado, abra el puerto 22 :

sudo ufw allow OpenSSH

Vuelva a cargar las reglas de UFW deshabilitando y volviendo a habilitar UFW:

sudo ufw disablesudo ufw enable

Para verificar los cambios ejecuta:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
20:21/tcp                  ALLOW       Anywhere
30000:31000/tcp            ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
20:21/tcp (v6)             ALLOW       Anywhere (v6)
30000:31000/tcp (v6)       ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

Creación de usuario FTP n.º

Para probar nuestro servidor FTP crearemos un nuevo usuario.

  • Si ya tiene un usuario al que desea otorgar acceso FTP, omita el primer paso.
  • Si configura allow_writeable_chroot=YES en su archivo de configuración, omita el tercer paso.
  1. Cree un nuevo usuario llamado newftpuser :

    sudo adduser newftpuser
  2. Agregue el usuario a la lista de usuarios FTP permitidos:

    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
  3. Cree el árbol de directorios FTP y establezca los permisos correctos:

    sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp

    Como se discutió en la sección anterior, el usuario podrá cargar sus archivos en el ftp/upload directorio.

En este punto, su servidor FTP es completamente funcional y debería poder conectarse a su servidor usando cualquier cliente FTP que pueda configurarse para usar el cifrado TLS como FileZilla.

Deshabilitar acceso Shell #

De forma predeterminada, al crear un usuario, si no se especifica explícitamente, el usuario tendrá acceso SSH al servidor.

Para deshabilitar el acceso al shell, crearemos un nuevo shell que simplemente imprimirá un mensaje diciéndole al usuario que su cuenta está limitada solo al acceso FTP.

Crea el /bin/ftponly shell y hacerlo ejecutable:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a  /bin/ftponlysudo chmod a+x /bin/ftponly

Agregue el nuevo shell a la lista de shells válidos en /etc/shells archivo:

echo "/bin/ftponly" | sudo tee -a /etc/shells

Cambie el shell de usuario a /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Use el mismo comando para cambiar el shell de todos los usuarios a los que desea dar solo acceso FTP.


Ubuntu
  1. Cómo instalar un servidor FTP en CentOS 7 con VSFTPD

  2. Cómo instalar un servidor FTP en Ubuntu con vsftpd

  3. Cómo configurar el servidor FTP en Ubuntu 20.04 Focal Fossa Linux

  4. Cómo configurar y usar el servidor FTP en Ubuntu Linux

  5. Configurar el servidor Rsyslog en Ubuntu 20.04 - ¿Cómo hacerlo?

Cómo instalar el servidor VsFTPD con TLS en Ubuntu 18.04 LTS

Cómo configurar el servidor DHCP en Ubuntu

Cómo configurar un servidor FTP seguro con Pure-FTPd en Ubuntu

Cómo instalar Vsftpd en Ubuntu 16.04

¿Cómo Instalar Un Servidor Ftp?

Cómo configurar un servidor FTP con VSFTPD