Cómo proteger un servidor FTP usando SSL/TLS para la transferencia segura de archivos en CentOS 7

Cómo proteger un servidor FTP usando SSL/TLS para la transferencia segura de archivos en CentOS 7

Según su diseño original, FTP. ( Protocolo de transferencia de archivos. no es seguro, lo que significa que no cifra los datos que se transmiten entre dos máquinas, junto con las credenciales del usuario. Esto representa una amenaza masiva para los datos y la seguridad del servidor.

En este tutorial, explicaremos cómo habilitar manualmente los servicios de cifrado de datos en un servidor FTP en CentOS/RHEL 7 y Fedora; Pasaremos por varios pasos para asegurar los servicios VSFTPD. ( Demonio FTP muy seguro. mediante certificados SSL/TLS.

Requisitos previos:

  1. Debe haber instalado y configurado un servidor FTP en CentOS 7

Antes de comenzar, tenga en cuenta que todos los comandos de este tutorial se ejecutarán como root. de lo contrario, use el comando sudo para obtener privilegios de root si no está controlando el servidor usando la cuenta de root.

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

1.. Necesitamos comenzar creando un subdirectorio en:/etc/ssl/donde almacenaremos el certificado SSL/TLS. y los archivos clave:

# mkdir/etc/ssl/private

2.. Luego, ejecute el siguiente comando para crear el certificado y la clave para vsftpd. en un solo archivo, aquí está la explicación de cada bandera

  1. req. es un comando para X.509 Certificate Signing R administración de equest (CSR).
  2. x509. significa administración de datos del certificado X.509.
  3. días. define la cantidad de días el certificado es válido para.
  4. nueva clave. especifica el procesador de claves del certificado.
  5. rsa: 2048. el procesador de claves RSA generará una clave privada de 2048 bits.
  6. keyout. establece el archivo de almacenamiento de claves.
  7. out. establece el archivo de almacenamiento del certificado, tenga en cuenta que tanto el certificado como la clave se almacenan en el mismo archivo: /etc/ssl/private/vsftpd.pem.

# openssl req-x509-nodes-keyout/etc/ssl/private/vsftpd.pem-out/etc/ssl/private/vsftpd.pem-days 365-newkey rsa: 2048 freestar.config.enabled_slots.push (LocationName: “tecmint_incontent”, slotId: “tecmint_incontent”) ;

El comando anterior le pedirá que responda las preguntas siguientes, recuerde utilizar valores que se apliquen a su escenario.

Nombre del país (código de 2 letras) [XX]: IN. Nombre del estado o provincia (nombre completo) []: Lower Parel. Nombre de la localidad (p. Ej., Ciudad) [Ciudad predeterminada]: Mumbai. Nombre de la organización (p. Ej., Empresa) [Compañía predeterminada Ltd]: TecMint.com. Nombre de la unidad organizativa (p. Ej., Sección) []: Linux y código abierto. Nombre común (p. Ej., Su nombre o el nombre de host de su servidor) []: tecmint. Dirección de correo electrónico []: [correo electrónico protegido].

Paso 2. Configuración de VSFTPD para utilizar SSL/TLS

3.. Antes de realizar cualquier configuración de VSFTPD, abramos los puertos 990. y 40000-50000. para permitir que las conexiones TLS y el rango de puertos de los puertos pasivos se definan en la configuración de VSFTPD. archivo respectivamente:

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

4.. Ahora, abra el archivo de configuración VSFTPD y especifique los detalles de SSL en él:

# vi/etc/vsftpd/vsftpd.conf

Busque la opción ssl_enable. y establezca su valor en YES para activar el uso de SSL, además, ya que TSL es más seguro que SSL, restringiremos VSFTPD para emplear TLS en su lugar, usando la opción ssl_tlsv1_2.

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

5.. Luego, agregue las líneas a continuación para definir la ubicación del certificado SSL y el archivo de clave:

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

6.. A continuación, tenemos que evitar que los usuarios anónimos utilicen SSL, luego obligar a todos los inicios de sesión no anónimos a utilizar una conexión SSL segura para la transferencia de datos y enviar la contraseña durante el inicio de sesión:

allow_anon_ssl = NO force_local_data_ssl = YES force_local_logins_ssl = YES

7.. Además, podemos agregar las siguientes opciones para aumentar la seguridad del servidor FTP. Cuando la opción require_ssl_reuse. se establece en YES, entonces, todas las conexiones de datos SSL son necesarias para exhibir la reutilización de la sesión SSL; demostrando que conocen el mismo secreto maestro que el canal de control.

Por lo tanto, tenemos que apagarlo.

require_ssl_reuse = NO

De nuevo, debemos seleccionar qué cifrados SSL VSFTPD permiso para conexiones SSL cifradas con la opción ssl_ciphers. Esto puede limitar en gran medida los esfuerzos de los atacantes que intentan forzar un cifrado en particular en el que probablemente hayan descubierto vulnerabilidades en:

ssl_ciphers = HIGH

8.. Ahora, configure el rango de puertos (puerto mínimo y máximo) de los puertos pasivos.

pasv_min_port = 40000 pasv_max_port = 50000

9.. Opcionalmente, permita la depuración SSL, lo que significa que los diagnósticos de conexión openSSL se registran en el archivo de registro VSFTPD con la opción debug_ssl.

debug_ssl = YES

Guarde todos los cambios y cierre el archivo. Luego, reiniciemos el servicio VSFTPD:

# systemctl restart vsftpd

Paso 3: Probar el servidor FTP con conexiones SSL/TLS

10.. Después de realizar todas las configuraciones anteriores, pruebe si VSFTPD está usando conexiones SSL/TLS intentando usar FTP desde la línea de comando de la siguiente manera:

# ftp 192.168.56.10 Conectado a 192.168.56.10 (192.168.56.10). 220 Bienvenido al servicio FTP de TecMint.com. Nombre (192.168.56.10:root): ravi 530 Las sesiones no anónimas deben usar cifrado. Error de inicio de sesion. 421 El servicio no está disponible, el servidor remoto ha cerrado la conexión ftp> Verificar conexión segura FTP SSL  Verificar conexión segura FTP SSL Verificar conexión segura FTP SSL

En la captura de pantalla anterior, podemos ver que hay un error que nos informa que VSFTPD solo puede permitir que el usuario inicie sesión desde clientes que admitan servicios de cifrado.

La línea de comando no ofrece servicios de cifrado, por lo que se produce el error . Entonces, para conectarse de manera segura al servidor, necesitamos un cliente FTP que admita conexiones SSL/TLS como FileZilla.

Paso 4: Instale FileZilla para conectarse de manera segura a un servidor FTP

11.. FileZilla. es un cliente FTP moderno, popular e importante entre plataformas que admite conexiones SSL/TLS de forma predeterminada.

Para instalar FileZilla en Linux, ejecute el siguiente comando:

———En CentOS/RHEL/Fedora——— # yum instalar epel-release filezilla ———En Debian/Ubuntu——— $ sudo apt-get install filezilla

12.. Cuando se complete la instalación (o si ya lo tiene instalado), ábralo y vaya a Archivo => Administrador de sitios. o (presione Ctrl + S) para obtener el Administrador del sitio. a continuación.

Haga clic en el botón Nuevo sitio. para agregar un nuevo sitio/detalles de conexión de host.

 Agregar nuevo sitio FTP en Filezilla Agregar nuevo sitio FTP en Filezilla Agregar nuevo sitio FTP en Filezilla

13.. A continuación, configure el nombre del host/sitio, agregue el Dirección IP, defina el protocolo que se utilizará, el cifrado y el tipo de inicio de sesión como se muestra en la captura de pantalla siguiente (utilice los valores que se apliquen a su escenario):

Host: 192.168.56.10. Protocolo: FTP: Protocolo de transferencia de archivos. Cifrado: Requiere FTP explícito sobre. # Tipo de inicio de sesión recomendado: Solicitar contraseña. # Usuario recomendado: nombre de usuario.  Agregar detalles del servidor FTP en Filezilla  Agregar detalles del servidor FTP en Filezilla Agregar detalles del servidor FTP en Filezilla

14.. Luego haga clic en Conectar. para ingresar la contraseña nuevamente, y luego verifique el certificado que se está utilizando para la conexión SSL/TLS y haga clic en Aceptar una vez más para conectarse al servidor FTP:

 Verify FTP SSL Certificate  Verify FTP SSL Certificate Verify FTP SSL Certificate

En esta etapa, deberíamos haber iniciado sesión correctamente en el Servidor FTP a través de una conexión TLS, consulte la sección de estado de la conexión para obtener más información de la interfaz a continuación.

Conectado al servidor FTP a través de TLS/SSL  Conectado al servidor FTP a través de TLS/SSL Conectado al servidor FTP a través de TLS/SSL

15.. Por último, pero no menos importante, intente transferir archivos desde la máquina local al servidor FTP en la carpeta de archivos, eche un vistazo al extremo inferior de la interfaz de FileZilla. para ver informes sobre transferencias de archivos.

 Transferir archivos de forma segura mediante FTP Transferir archivos de forma segura mediante FTP Transferir archivos de forma segura mediante FTP

¡Eso es todo! Siempre tenga en cuenta que FTP no es seguro por defecto, a menos que lo configuremos para usar conexiones SSL/TLS como le mostramos en este tutorial. Comparta sus pensamientos sobre este tutorial/tema a través del formulario de comentarios a continuación.