Configurar la transferencia segura de archivos FTP mediante SSL / TLS en RHEL 8


En nuestro último artículo, hemos descrito en detalle cómo instalar y configurar un servidor FTP en RHEL 8 Linux. En este artículo, explicaremos cómo proteger un servidor FTP mediante SSL/TLS para habilitar los servicios de cifrado de datos para la transferencia segura de archivos entre sistemas.

Esperamos que ya tenga un servidor FTP instalado y funcionando correctamente. Si no es así, utilice la siguiente guía para instalarlo en su sistema.

  1. How to Install, Configure and Secure FTP Server in RHEL 8

Paso 1. Generación de certificado SSL / TLS y clave privada

1. Cree el siguiente directorio para almacenar el certificado SSL/TLS y los archivos de claves.

# mkdir -p /etc/ssl/vsftpd

2. Luego, genere un certificado SSL/TLS autofirmado y una clave privada usando el siguiente comando.

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

A continuación se muestra la explicación de cada indicador utilizado en el comando anterior.

  1. req – is a command for X.509 Certificate Signing Request (CSR) management.
  2. x509 – means X.509 certificate data management.
  3. days – defines a number of days certificate is valid for.
  4. newkey – specifies certificate key processor.
  5. rsa:2048 – RSA key processor, will generate a 2048 bit private key.
  6. keyout – sets the key storage file.
  7. out – sets the certificate storage file, note that both certificate and key are stored in the same file: /etc/ssl/vsftpd/vsftpd.pem.

El comando anterior le pedirá que responda las preguntas a continuación, recuerde usar valores que se apliquen a su escenario.

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email protected]

Paso 2. Configurar VSFTPD para usar SSL / TLS

3. Abra el archivo de configuración VSFTPD para editarlo con su editor de línea de comandos favorito.

# vi /etc/vsftpd/vsftpd.conf

Agregue los siguientes parámetros de configuración para habilitar SSL, luego seleccione la versión de SSL y TLS a usar, al final del archivo.

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO

4. A continuación, agregue las opciones rsa_cert_file y rsa_private_key_file para especificar la ubicación del certificado SSL y el archivo de claves respectivamente.

rsa_cert_file=/etc/ssl/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/ssl/vsftpd/vsftpd.pem

5. Ahora agregue estos parámetros para deshabilitar las conexiones anónimas de usar SSL y forzar todas las conexiones no anónimas sobre SSL.

allow_anon_ssl=NO			# disable anonymous users from using SSL
force_local_data_ssl=YES		# force all non-anonymous logins to use a secure SSL connection for data transfer
force_local_logins_ssl=YES		# force all non-anonymous logins  to send the password over SSL

6. A continuación, agregue esta opción para deshabilitar la reutilización de todas las conexiones de datos SSL y configure los cifrados SSL en ALTO para permitir conexiones SSL cifradas.

require_ssl_reuse=NO
ssl_ciphers=HIGH

7. También debe especificar el rango de puertos (puerto mínimo y máximo) de los puertos pasivos que utilizará vsftpd para conexiones seguras, utilizando los parámetros pasv_min_port y pasv_max_port respectivamente. Además, puede habilitar opcionalmente la depuración SSL para fines de resolución de problemas, utilizando la opción debug_ssl.

pasv_min_port=40000
pasv_max_port=50000
debug_ssl=YES

8. Finalmente, guarde el archivo y reinicie el servicio vsftpd para que los cambios anteriores surtan efecto.

# systemctl restart vsftpd

9. Una tarea más importante que debe realizar antes de poder acceder de forma segura al servidor FTP es abrir los puertos 990 y 40000-50000 en el firewall del sistema. Esto permitirá conexiones TLS al servicio vsftpd y abrirá el rango de puertos de puertos pasivos definidos en el archivo de configuración VSFTPD respectivamente, de la siguiente manera.

# firewall-cmd --zone=public --permanent –add-port=990/tcp
# firewall-cmd --zone=public --permanent –add-port=40000-50000/tcp
# firewall-cmd --reload

Paso 3: Instale FileZilla para conectarse de forma segura al servidor FTP

10. Para conectarse de forma segura al servidor FTP, necesita un cliente FTP que admita conexiones SSL/TLS como FileZilla: es un cliente FTP, SFTP y FTPS multiplataforma, de código abierto y ampliamente utilizado que admite conexiones SSL/TLS por defecto.

Instale FileZilla en Linux usando su administrador de paquetes predeterminado de la siguiente manera:

$ sudo apt-get install filezilla   		#Debian/Ubuntu
# yum install epel-release filezilla		#On CentOS/RHEL
# dnf install filezilla			        #Fedora 22+
$ sudo zypper install filezilla			#openSUSE

11. Una vez instalado el paquete Filezilla, búsquelo en el menú del sistema y ábralo. Para conectar rápidamente el servidor FTP remoto, desde la interfaz principal, proporcione la dirección IP del host, el nombre de usuario y la contraseña del usuario. Luego haga clic en QuickConnect.

12. Luego, la aplicación le pedirá que permita una conexión segura utilizando el certificado autofirmado desconocido. Haga clic en Aceptar para continuar.

Si la configuración en el servidor está bien, la conexión debería ser exitosa como se muestra en la siguiente captura de pantalla.

13. Finalmente, pruebe el estado de la conexión segura FTP intentando cargar archivos desde su máquina al servidor como se muestra en la siguiente captura de pantalla.

¡Eso es todo! En este artículo, mostramos cómo proteger un servidor FTP usando SSL/TLS para la transferencia segura de archivos en RHEL 8. Esta es la segunda parte de nuestra guía completa para instalar, configurar y asegurar un servidor FTP en RHEL 8. Para compartir cualquier consulta o pensamientos, utilice el formulario de comentarios a continuación.