En este tutorial, describiremos cómo proteger un servidor FTP ( VSFTPD significa “ Very Secure FTP Daemon ”) 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 los fundamentos de habilitar los servicios de cifrado en un servidor FTP para que las transferencias de datos seguras sean cruciales.
Requisitos
- Debe instalar y configurar un servidor FTP en Ubuntu
Antes de continuar, asegúrese de que todos los comandos de este artículo se ejecutarán como cuenta privilegiada root o sudo.
Paso 1: Generación de certificado SSL / TLS para FTP en Ubuntu
1. Comenzaremos creando un subdirectorio en: / etc / ssl / para almacenar el certificado SSL / TLS y los archivos clave si 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 que correspondan 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 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 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 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 SÍ para activar el uso de SSL, nuevamente, debido a que TLS es más seguro que SSL, restringiremos VSFTPD para usar TLS en su lugar, habilitando la ssl_tlsv1
opción:
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 a continuación para definir la ubicación del certificado SSL y el archivo de claves:
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 obligar 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 exhibir la reutilización de la sesión SSL demostrando que conocen el mismo secreto maestro que el canal de control. Entonces, deberíamos deshabilitarlo.
require_ssl_reuse=NO
Además, podemos establecer qué cifrados SSL permitirá VSFTPD para conexiones SSL cifradas con la ssl_ciphers
opción. Esto ayudará a frustrar los esfuerzos de los atacantes que intentan forzar un cifrado específico en el que posiblemente hayan descubierto vulnerabilidades en:
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 debug_ssl
opción:
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 está usando conexiones SSL / TLS intentando usar FTP desde la línea de comando como se muestra a continuación.
En el resultado a continuación, hay un mensaje de error que nos indica que VSFTPD solo puede permitir que los 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 resulta en el error anterior. Por lo tanto, para conectarse 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, 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 que se complete la instalación, ábralo y vaya a Archivo =&gt Administrador de sitios o (presione Ctrl + S ) para obtener la interfaz del Administrador del <strong>sitio a</strong> continuación.
Administrador del sitio de Filezilla
13. Ahora, defina el nombre del host / sitio, agregue la dirección IP, defina el protocolo que se 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
Configurar un nuevo sitio FTP en Filezilla
14. Luego, haga clic en Conectar desde la interfaz anterior para ingresar la contraseña, y luego verifique el certificado que se está utilizando para la conexión SSL / TLS , y haga clic en <strong>Aceptar</strong> una vez más para conectarse al servidor FTP:
Verificar el certificado SSL de 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 de la interfaz a continuación.
Conectado al servidor FTP de Ubuntu
16. Por último, transfieramos 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.
Transferencia segura de archivos FTP usando Filezilla
¡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, use el formulario de comentarios a continuación para compartir sus problemas o pensamientos sobre este tutorial / tema.
FTP