Búsqueda de sitios web

Configurar un servidor FTP seguro usando SSL/TLS en Ubuntu


En este tutorial, describiremos cómo proteger un servidor FTP (VSFTPD significa "Demonio 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: Proteger un servidor FTP usando SSL/TLS en CentOS

Después de seguir los distintos pasos de esta guía, habremos aprendido que los fundamentos para habilitar servicios de cifrado en un servidor FTP para transferencias de datos seguras son cruciales.

Requisitos

  1. Debes instalar y configurar un servidor FTP en Ubuntu

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

Paso 1: Generar 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 es así. 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 los valores aplicables 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 

Paso 2: Configurar VSFTPD para usar SSL/TLS en Ubuntu

3. Antes de realizar cualquier configuración VSFTPD, para aquellos que tienen el firewall UFW habilitado, deben abrir los puertos 990 y 40000. -50000 para permitir que las conexiones TLS y el rango de 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 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, debido a que 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 líneas siguientes 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 siguientes 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 utilicen SSL, luego forzar 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 utilizar 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 exhibir la reutilización de sesiones SSL; demostrando que conocen el mismo secreto maestro que el canal de control. Entonces, deberíamos desactivarlo.

require_ssl_reuse=NO

Además, podemos establecer qué cifrados SSL permitirá VSFTPD para 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 hayan descubierto vulnerabilidades:

ssl_ciphers=HIGH

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

pasv_min_port=40000
pasv_max_port=50000

9. Para habilitar la depuración SSL, lo que significa que los diagnósticos de conexión 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, pruebe si VSFTPD ahora usa conexiones SSL/TLS intentando usar FTP desde la línea de comando como se muestra a continuación.

En el resultado a continuación, aparece un mensaje de error que nos indica que VSFTPD solo puede permitir que usuarios (no anónimos) inicien sesión desde clientes seguros que admitan 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 comando no admite servicios de cifrado, lo que genera el error anterior. Por lo tanto, para conectarnos de forma segura a un servidor FTP con servicios de cifrado habilitados, necesitamos un cliente FTP que admita conexiones SSL/TLS de forma predeterminada, como FileZilla.

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

FileZilla es un cliente FTP multiplataforma potente y ampliamente utilizado que admite FTP sobre SSL/TLS y más. Para instalar FileZilla en una máquina cliente Linux, utilice 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 que se complete la instalación, ábrela y ve a Archivo=>Administrador de sitios o (presiona Ctrl+S) para obtener el >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 apliquen 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 utiliza para la conexión SSL/TLS. y haga clic en Aceptar una vez más para conectarse al servidor FTP:

15. Ahora, debería 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 desde la siguiente interfaz.

16. Por último, transfiramos 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 relacionados con las transferencias de archivos.

¡Eso es todo! Recuerde siempre que instalar un servidor FTP sin habilitar los servicios de cifrado 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 algún problema al configurar SSL/TLS en el servidor FTP, utilice el formulario de comentarios a continuación para compartir sus problemas o ideas sobre este tutorial/tema.