Conexiones ProFTPD seguras mediante el protocolo TLS/SSL en RHEL/CentOS 7


Por su naturaleza, el protocolo FTP se diseñó como un protocolo inseguro y todos los datos y contraseñas se transfieren en texto sin formato, lo que hace que el trabajo de un tercero sea muy fácil de interceptar todas las transacciones cliente-servidor FTP, especialmente los nombres de usuario y contraseñas utilizadas en el proceso de autenticación.

  1. Instalación del servidor ProFTPD en RHEL/CentOS 7
  2. Habilite la cuenta anónima para el servidor Proftpd en RHEL/CentOS 7

Este tutorial lo guiará sobre cómo proteger y cifrar la comunicación FTP en el servidor ProFTPd en CentOS / RHEL 7 , utilizando TLS (Seguridad de la capa de transporte) con la extensión FTPS explícita (piense en FTPS como HTTPS para el protocolo HTTP).

Paso 1: Cree el archivo de configuración del módulo Proftpd TLS

1. Como se discutió en el tutorial anterior de Proftpd sobre la cuenta anónima, esta guía también utilizará el mismo enfoque para administrar los archivos de configuraciones futuras de Proftpd como módulos, con la ayuda de enabled_mod y disabled_mod directorios, que albergarán todas las capacidades extendidas del servidor.

Entonces, cree un nuevo archivo con su editor de texto favorito llamado tls.conf en la ruta disabled_mod Proftpd y agregue las siguientes directivas.

# nano /etc/proftpd/disabled_mod/tls.conf

Agregue el siguiente extracto de configuración del archivo TLS.

<IfModule mod_tls.c>
TLSEngine                               on
TLSLog                                  /var/log/proftpd/tls.log
TLSProtocol                             SSLv23
 
TLSRSACertificateFile                   /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile                /etc/ssl/private/proftpd.key

#TLSCACertificateFile                                     /etc/ssl/certs/CA.pem
TLSOptions                      NoCertRequest EnableDiags NoSessionReuseRequired
TLSVerifyClient                         off
TLSRequired                             on
TLSRenegotiate                          required on
</IfModule>

2. Si utiliza navegadores o clientes FTP que no admiten conexiones TLS, comente la línea TLSRequired on para permitir conexiones TLS y no TLS al mismo tiempo y evitar el mensaje de error como en el captura de pantalla a continuación.

Paso 2: Cree archivos de certificado SSL para TLS

3. Después de haber creado el archivo de configuración del módulo TLS. que habilitará FTP sobre TLS en Proftpd, debe generar un certificado y una clave SSL para poder utilizar la comunicación segura a través del servidor ProFTPD con la ayuda del paquete OpenSSL .

# yum install openssl

Puede usar un solo comando largo para generar certificados SSL y pares de claves, pero para simplificar las cosas, puede crear un script bash simple que generará pares SSL con su nombre deseado y asignará los permisos correctos para el archivo de clave.

Cree un archivo bash llamado proftpd_gen_ssl en /usr/local/bin/ o en cualquier otra ruta del sistema ejecutable (definida por la variable $PATH ).

# nano /usr/local/bin/proftpd_gen_ssl

Agregue el siguiente contenido.

#!/bin/bash
echo -e "\nPlease enter a name for your SSL Certificate and Key pairs:"
read name
 openssl req -x509 -newkey rsa:1024 \
          -keyout /etc/ssl/private/$name.key -out /etc/ssl/certs/$name.crt \
          -nodes -days 365\

 chmod 0600 /etc/ssl/private/$name.key

4. Después de haber creado el archivo anterior, asígnele permisos de ejecución, asegúrese de que existe el directorio /etc/ssl/private y ejecute el script para crear pares de claves y certificados SSL.

# chmod +x /usr/local/bin/proftpd_gen_ssl
# mkdir -p /etc/ssl/private
# proftpd_gen_ssl

Proporcione el certificado SSL con la información solicitada requerida que se explica por sí misma, pero preste atención a Nombre común para que coincida con su host Nombre de dominio completo - FQDN .

Paso 3: Habilite TLS en el servidor ProFTPD

5. Como el archivo de configuración TLS creado anteriormente ya apunta al certificado SSL correcto y al archivo de clave, lo único que queda es activar el módulo TLS creando un enlace simbólico de tls.conf en el directorio enabled-mod y reinicia el demonio ProFTPD para aplicar los cambios.

# ln -s /etc/proftpd/disabled_mod/tls.conf  /etc/proftpd/enabled_mod/
# systemctl restart proftpd

6. Para deshabilitar el módulo TLS, simplemente elimine el enlace simbólico tls.conf del directorio enabled_mod y reinicie el servidor ProFTPD para aplicar los cambios.

# rm /etc/proftpd/enabled_mod/tls.conf
# systemctl restart proftpd

Paso 4: Abra el cortafuegos para permitir la comunicación FTP sobre TLS

7. Para que los clientes puedan acceder a ProFTPD y transferir archivos de forma segura en Modo pasivo , debe abrir todo el rango de puertos entre 1024 y 65534 en RHEL./CentOS Firewall, usando los siguientes comandos.

# firewall-cmd --add-port=1024-65534/tcp  
# firewall-cmd --add-port=1024-65534/tcp --permanent
# firewall-cmd --list-ports
# firewall-cmd --list-services
# firewall-cmd --reload

Eso es. Ahora su sistema está listo para aceptar la comunicación FTP a través de TLS desde el lado del Cliente.

Paso 5: Acceda a ProFTPD a través de TLS desde los clientes

8. Los navegadores web no suelen tener soporte integrado para FTP sobre el protocolo TLS, por lo que todas las transacciones se envían a través de FTP no cifrado. Uno de los clientes FTP más excelentes es FileZilla , que es completamente de código abierto y puede ejecutarse en casi todos los principales sistemas operativos.

Para acceder a FTP sobre TLS desde FileZilla, abra Administrador del sitio , elija FTP en Protocolo y Requerir FTP explícito sobre TLS en Encriptación menú desplegable, seleccione su Tipo de inicio de sesión como Normal , ingrese sus credenciales de FTP y presione Conectar para comunicarse con el servidor.

9. Si es la primera vez que se conecta a ProFTPD Server, debería aparecer una ventana emergente con el nuevo certificado, marque la casilla que dice Confiar siempre en el certificado para futuras sesiones y presione en Aceptar para aceptar el certificado y autenticarse en el servidor ProFTPD.

Si planea utilizar otros clientes además de FileZilla para acceder de forma segura a los recursos FTP, asegúrese de que sean compatibles con el protocolo FTP sobre TLS. Algunos buenos ejemplos de clientes FTP que pueden hablar FTPS son gFTP o LFTP (línea de comandos) para NIX.