GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar VSFTPD FTPS con SSL/TLS en Ubuntu 18.04

FTP, el acrónimo de Protocolo de transferencia de archivos, se utiliza para transferir archivos entre la computadora y el servidor en una red informática determinada. El protocolo FTP utiliza una forma insegura de transferencia de datos y debe limitarse a la red en la que confía. En su lugar, deberíamos tener FTPS (Protocolo de transferencia de archivos con SSL) que use una conexión segura SSL entre los dos extremos o usar SFTP (Protocolo de transferencia de archivos SSH/Protocolo seguro de transferencia de archivos).

Este tutorial proporciona pasos detallados sobre cómo configurar un servidor vsftpd seguro con SSL/TLS en Ubuntu 18.04 y conectarse al servidor mediante un terminal y herramientas GUI.

Instalar servidor VSFTPD

Hay varios servidores FTP disponibles en Linux. Vamos a instalar vsftp. Para hacerlo en Ubuntu 18.04 escribimos el siguiente comando en la terminal:

sudo apt install vsftpd

Una vez que vsftpd está instalado, su archivo de configuración predeterminado se encuentra en /etc/vsftpd.conf. Para realizar cambios con ese archivo y probar configuraciones personalizadas, primero creamos una copia de seguridad de este archivo. Para hacerlo puedes ejecutar:

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak

Luego creamos el archivo vsftpd.conf con el siguiente comando:

sudo vim /etc/vsftpd.conf

y agregue las siguientes líneas al archivo:vsftpsft

 listen=NO
 listen_ipv6=YES
 anonymous_enable=NO
 local_enable=YES
 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
 pasv_enable=Yes
 pasv_min_port=10000
 pasv_max_port=11000
 user_sub_token=$USER
 local_root=/home/$USER/ftp
 userlist_enable=YES
 userlist_file=/etc/vsftpd.userlist
 userlist_deny=NO

Tenga en cuenta que estas son las configuraciones más utilizadas y puede cambiarlas según sus necesidades.

Ubuntu 18.04 viene con ufw (firewall sin complicaciones) preinstalado y habilitado. Puede verificar si ufw se está ejecutando en su máquina con este comando:

sudo service ufw status

Si está funcionando y lo vas a dejar funcionando, debes permitir el tráfico entrante a los puertos FTP (20,21 para conexiones activas y 10000-10100 para conexiones pasivas). Para hacerlo puedes ejecutar:

sudo ufw allow from any to any port 20,21,10000:11000 proto tcp

Si tiene éxito, el resultado será como el siguiente:

Rules updated
Rules updated (v6)

Después de realizar todos estos pasos, debemos reiniciar el servidor vsftpd con el siguiente comando:

sudo service vsftpd restart

Creando usuario para conectarse al servidor FTP

Una vez que el servidor vsftp está instalado y configurado según nuestras necesidades, no necesitamos crear un usuario (por ejemplo, ftpsuer) para conectarnos al servidor ftp. Para hacerlo puedes ejecutar:

sudo useradd -m ftpuser

Cree una contraseña para el usuario recién creado con el siguiente comando:

sudo passwd ftpuser

Después se le pedirá que ingrese la nueva contraseña de UNIX y vuelva a escribirla para que se apliquen los cambios. La salida exitosa se parece a esta:

passwd: password updated successfully

Preparar directorio de usuario FTP

Una de las acciones más importantes que se deben realizar para proteger la conexión FTP es restringir a los usuarios a su directorio de inicio para que no tengan acceso a otros directorios. Para hacerlo en vsftpd, necesitamos habilitar chroot en el archivo de configuración, lo cual ya hicimos en la parte de configuraciones del artículo (chroot_local_user=YES ). La forma de seguridad del directorio de vsftpd asume que el usuario no tiene acceso de escritura. Pero si estamos dando acceso FTP a los usuarios existentes y están usando shell para usar el servidor, es posible que necesiten tener acceso de escritura a su carpeta de inicio. Para evitar la falta de seguridad y también tener un acceso FTP adecuado para el usuario, creamos una carpeta ftp en el directorio de inicio del usuario y la agregamos a la configuración de vsftpd como raíz local cuando se conecta a través de FTP. También necesitamos cambiar la propiedad del directorio y eliminar el acceso de escritura. Para hacerlo puedes ejecutar:

sudo mkdir /home/ftpuser/ftp
sudo chown nobody:nogroup /home/ftpuser/ftp
sudo chmod a-w /home/ftpuser/ftp

luego agregue/cambie las siguientes líneas en el archivo de configuración de vsftpd /etc/vsftpd.conf

user_sub_token=$USER 
local_root=/home/$USER/ftp

Después de realizar estos pasos, debemos crear otra carpeta en /home/ftpuser/ftp y asignar su propiedad al usuario

sudo mkdir /home/ftpuser/ftp/files
sudo chown ftpuser:ftpuser/home/ftpuser/ftp/files

Para probar que podemos ver archivos en el directorio de inicio del usuario después de conectarnos al servidor FTP, vamos a crear un archivo de prueba en ese directorio y agregarle texto. Para hacerlo puedes ejecutar:

echo "test file for vsftpd" | sudo tee /home/ftpuser/ftp/files/test.txt

Para permitir o denegar el acceso de usuarios específicos a vsftpd, podemos usar el archivo de lista de usuarios y agregar el registro apropiado en el archivo de configuración de vsftpd. Para hacerlo puedes ejecutar lo siguiente:

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

Si userlist_deny se establece en NO, solo los usuarios agregados al archivo pueden acceder al servidor FTP y si se establece en SÍ, los usuarios enumerados en el archivo no tendrán acceso al servidor FTP y otros tendrán acceso. Agregue nombres de usuario al archivo mencionado anteriormente con el siguiente comando:

echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist

Configurar SSL para VSFTPD

Dado que los datos (incluso las credenciales) transferidos a través de FTP no están encriptados, podemos habilitar TLS/SSL para brindar otro nivel de seguridad a nuestro servidor FTP. Para crear un certificado usando openssl, ejecute lo siguiente:

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

donde -days 365 es para agregar el certificado por un año y agregar el mismo valor para los indicadores -out, -keyout para ubicar la clave privada y el certificado en el mismo archivo. Se le pedirá que agregue toda la información necesaria para crear un certificado, como se muestra a continuación

Generating a 2048 bit RSA private key
.................+++
..............................................................................................+++
writing new private key to '/etc/ssl/private/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:AU
State or Province Name (full name) [Some-State]:SY
Locality Name (eg, city) []:Sydney
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linoxide
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:ubuntu
Email Address []:[email protected]

Después de crear el certificado, debemos agregarlo al archivo de configuración vsftpd y habilitar SSL. Para ello, agregue la siguiente línea al archivo mencionado:

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

Después, debemos denegar las conexiones anónimas a través de SSL y solicitar SSL para la transferencia de datos y el inicio de sesión. Para hacerlo, agregue las siguientes líneas a /etc/vsftpd.conf archivo:

 allow_anon_ssl=NO
 force_local_data_ssl=YES
 force_local_logins_ssl=YES

Una vez que se agreguen las líneas anteriores, configuraremos el servidor para usar TLS, que es el sucesor preferido de SSL. Para hacerlo, agregue las siguientes líneas en el mismo archivo:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Después de todos los pasos, nuestro archivo de configuración vsftpd se verá así:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
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
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=11000
user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/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

Después de cualquier cambio en el archivo de configuración de vsftpd, debemos reiniciar el servicio con el siguiente comando:

sudo service vsftpd restart

También puede configurar vsftpd para usar el certificado letsencrypt para sftp, pero asegúrese de tener un dominio para validar. Puede agregar la variable de ruta en la configuración de vsftpd donde se almacenan el certificado SSL y la clave privada.

rsa_cert_file=/ssl/letsencrypt/ftpdomain.com/chain-bundle.pem
rsa_private_key_file=/ssl/letsencrypt/ftpdomain.com/private-key.pem

Conectando al servidor FTP

Hay dos métodos para conectarse al servidor ftp:

  • usando la terminal
  • utilizando un cliente FTP con GUI

Conectar usando terminal

Para conectarse al servidor ftp a través de la línea de comandos, escriba el siguiente comando en la terminal:

ftp ubuntu

Donde ubuntu es el nombre de host de la máquina donde está instalado el servidor ftp. Asegúrese de que se pueda acceder a la máquina del servidor ftp a través de su nombre de host desde la máquina que está tratando de conectar.

Después de conectarse, se le pedirá que ingrese el nombre de usuario y la contraseña para conectarse al servidor ftp:

Connected to ubuntu.
220 (vsFTPd 3.0.3)
Name (ubuntu:ubuntu): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Escribe ls para verificar si el archivo de prueba creado antes está allí:

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 1001 1001 4096 May 21 13:39 files
226 Directory send OK.

Conéctese usando un cliente FTP con GUI

Vamos a usar Filezilla para conectarnos a nuestro servidor FTP instalado en Linux. Para hacerlo, abra el cliente de Filezilla en su máquina e ingrese la dirección IP del servidor FTP, las credenciales de ftpuser para conectarse y presione el botón de conexión como se muestra en la captura de pantalla a continuación. Se le pedirá que agregue el certificado a confiable, después de lo cual podrá conectarse al servidor FTP.

Después de conectar podemos ver que el test.txt que creamos antes está ahí.

Lectura relacionada:

  • Cómo configurar el servidor SFTP de MySecureShell en Ubuntu 18.04
  • 5 pasos para instalar y configurar ProFTPD en Debian 9 Stretch
  • 12 comandos lftp para administrar archivos con ejemplos

Como puede aprender del artículo, instalar el servidor vsftpd y conectarse a él es muy fácil y se puede hacer en unos pocos pasos. El punto principal aquí es proteger el servidor ftp a través de su archivo de configuración, como hacer chroot al usuario en su directorio de inicio, deshabilitar el inicio de sesión anónimo y agregar umask local y permisos de lectura y escritura del usuario.


Ubuntu
  1. Cómo instalar y configurar un servidor FTP (vsftpd) con SSL/TLS en Ubuntu 20.04

  2. Instalar Vsftpd con SSL/TLS en Ubuntu 20.04:¿el mejor procedimiento?

  3. Cómo proteger vsFTPd con SSL/TLS

  4. Cómo configurar vsftpd para usar SSL/TLS (FTPS) en CentOS/Ubuntu

  5. Instale Vsftpd con SSL/TLS en Ubuntu 20.04

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

Cómo instalar ProFTPD con TLS en Ubuntu 20.04 LTS

Cómo instalar y configurar Apache con Let's Encrypt TLS/SSL en Ubuntu 20.04

Cómo instalar Nginx con Let's Encrypt TLS/SSL en Ubuntu 20.04

Cómo instalar Vsftpd en Ubuntu 16.04

Cómo configurar vsftpd para usar SSL/TLS en Ubuntu 20.04