Configuración de un servidor FTP seguro utilizando SSL / TLS en Ubuntu


En este tutorial, describiremos cómo asegurar un servidor FTP ( VSFTPD significa “ Daemon FTP muy seguro ”) usando SSL/TLS en Ubuntu 16.04/16.10 .

Si está buscando configurar un servidor FTP seguro para distribuciones basadas en CentOS, puede leer - Asegurar un servidor FTP usando SSL/TLS en CentOS

Después de seguir los diversos pasos de esta guía, habremos aprendido que los fundamentos de habilitar los servicios de encriptación en un servidor FTP para la transferencia segura de datos es crucial.

  1. You must Install and Configure a FTP Server in Ubuntu

Antes de continuar, asegúrese de que todos los comandos de este artículo se ejecutarán como cuenta privilegiada de root o sudo.

Paso 1: Generar un certificado SSL / TLS para FTP en Ubuntu

1. Comenzaremos creando un subdirectorio en: /etc/ssl/ para almacenar el certificado SSL/TLS y los archivos de claves, si no no existe

$ sudo mkdir /etc/ssl/private

2. Ahora generemos el certificado y la clave en un solo archivo, ejecutando el siguiente comando.

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

El comando anterior le pedirá que responda las preguntas a continuación, no olvide ingresar 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: Configuración de VSFTPD para usar SSL / TLS en Ubuntu

3. Antes de realizar cualquier configuración de VSFTPD , para aquellos que tienen habilitado el firewall UFW, debe abrir los puertos 990 y 40000 -50000 para permitir que las conexiones TLS y el rango de puertos de los puertos pasivos se establezcan en el archivo de configuración VSFTPD, respectivamente:

$ sudo ufw allow 990/tcp
$ sudo ufw allow 40000:50000/tcp
$ sudo ufw status

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

$ sudo vi /etc/vsftpd/vsftpd.conf
OR
$ sudo nano /etc/vsftpd/vsftpd.conf

Luego, agregue o ubique la opción ssl_enable y establezca su valor en YES para activar el uso de SSL, nuevamente, porque TLS es más seguro que SSL, restringiremos VSFTPD a use TLS en su lugar, habilitando la opción ssl_tlsv1 :

ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. A continuación, comente las siguientes líneas utilizando el carácter # de la siguiente manera:

#rsa_cert_file=/etc/ssl/private/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

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. Ahora, también tenemos que evitar que los usuarios anónimos usen SSL, luego forzar a todos los inicios de sesión no anónimos a usar 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 usar las siguientes opciones para agregar más funciones de seguridad en el servidor FTP. Con la opción require_ssl_reuse = YES , todas las conexiones de datos SSL deben mostrar la reutilización de la sesión SSL; demostrando que conocen el mismo secreto maestro que el canal de control. Por lo tanto, debemos deshabilitarlo.

require_ssl_reuse=NO

Además, podemos establecer qué cifrados SSL VSFTPD permitirá para las conexiones SSL cifradas con la opción ssl_ciphers . Esto ayudará a frustrar cualquier esfuerzo de los atacantes que intenten forzar un cifrado específico en el que posiblemente descubrieron vulnerabilidades en:

ssl_ciphers=HIGH

8. Luego, definamos el rango de puertos (mínimo y máximo) de los puertos pasivos.

pasv_min_port=40000
pasv_max_port=50000

9. Para habilitar la depuración de SSL, lo que significa que los diagnósticos de conexión de openSSL se registran en el archivo de registro VSFTPD, podemos usar la opción debug_ssl :

debug_ssl=YES

Finalmente guarde el archivo y ciérrelo. Luego reinicie el servicio VSFTPD:

$ systemctl restart vsftpd

Paso 3: Verificar FTP con conexiones SSL / TLS en Ubuntu

10. Después de realizar todas las configuraciones anteriores, compruebe si VSFTPD ahora está utilizando conexiones SSL/TLS al intentar usar FTP desde la línea de comandos como se muestra a continuación.

Desde la salida a continuación, hay un mensaje de error que nos indica que VSFTPD solo puede permitir a los usuarios (no anónimos) iniciar sesión desde clientes seguros que admiten servicios de cifrado.

$ ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

La línea de comandos no admite servicios de encriptación, por lo que se produce el error anterior. Por lo tanto, para conectarse de forma segura a un servidor FTP con los servicios de cifrado habilitados, necesitamos un cliente FTP que admita las conexiones SSL/TLS de forma predeterminada, como FileZilla .

Paso 4: Instale FileZilla en clientes para conectarse FTP de forma segura

FileZilla es un potente cliente FTP multiplataforma ampliamente utilizado que admite FTP sobre SSL/TLS y más. Para instalar FileZilla en una máquina cliente de Linux, use el siguiente comando.

--------- On Debian/Ubuntu ---------
$ sudo apt-get install filezilla   

--------- On CentOS/RHEL/Fedora --------- 
# yum install epel-release filezilla

--------- On Fedora 22+ --------- 
$ sudo dnf install filezilla

12. Una vez completada la instalación, ábrala y vaya a Archivo = & gt; Administrador de sitios o (presione Ctrl + S ) para obtener < fuerte> la interfaz del Administrador del sitio a continuación.

13. Ahora, defina el nombre del host/sitio, agregue la dirección IP, defina el protocolo a usar, el cifrado y el tipo de inicio de sesión como se muestra en la siguiente captura de pantalla (use los valores que se aplican a su escenario):

Haga clic en el botón Nuevo sitio para configurar una nueva conexión de sitio/host.

Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password	        #recommended 
User: username

14. Luego, haga clic en Conectar en la interfaz de arriba para ingresar la contraseña 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:

15. Ahora, debe haber iniciado sesión correctamente en el servidor de 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 en la interfaz a continuación.

16. Por último, transfiramos archivos desde la máquina local al servidor FTP en la carpeta de archivos, echemos un vistazo al extremo inferior de la interfaz de FileZilla para ver los informes relacionados con las transferencias de archivos.

¡Eso es todo! Recuerde siempre que instalar un servidor FTP sin habilitar los servicios de encriptación tiene ciertas implicaciones de seguridad. Como explicamos en este tutorial, puede configurar un servidor FTP para usar conexiones SSL/TLS para implementar la seguridad en Ubuntu 16.04/16.10.

Si tiene problemas para configurar SSL/TLS en el servidor FTP, use el formulario de comentarios a continuación para compartir sus problemas o pensamientos con respecto a este tutorial/tema.