Com protegir un servidor FTP mitjançant SSL/TLS per a la transferència segura de fitxers a CentOS 7


Pel seu disseny original, FTP (File Transfer Protocol) no és segur, és a dir, no xifra les dades que es transmeten entre dues màquines, juntament amb les credencials de l'usuari. Això suposa una amenaça massiva per a les dades i la seguretat del servidor.

En aquest tutorial, explicarem com habilitar manualment els serveis de xifratge de dades en un servidor FTP a CentOS/RHEL 7 i Fedora; passarem per diversos passos per assegurar els serveis VSFTPD (Dimoni FTP molt segur) mitjançant certificats SSL/TLS.

  1. Heu d'haver instal·lat i configurat un servidor FTP a CentOS 7

Abans de començar, tingueu en compte que totes les ordres d'aquest tutorial s'executaran com a root, en cas contrari, utilitzeu l'ordre sudo per obtenir privilegis de root si no controleu el servidor mitjançant el compte root.

Pas 1. Generació de certificat SSL/TLS i clau privada

1. Hem de començar creant un subdirectori sota: /etc/ssl/ on emmagatzemarem el certificat SSL/TLS i els fitxers de claus:

# mkdir /etc/ssl/private

2. A continuació, executeu l'ordre següent per crear el certificat i la clau per a vsftpd en un sol fitxer, aquí teniu l'explicació de cada indicador utilitzat.

  1. req: és una ordre per a la gestió de la sol·licitud de signatura de certificat (CSR) X.509.
  2. x509: significa gestió de dades del certificat X.509.
  3. dies: defineix el nombre de dies durant els quals el certificat és vàlid.
  4. newkey: especifica el processador de clau de certificat.
  5. rsa:2048: el processador de claus RSA, generarà una clau privada de 2048 bits.
  6. keyout: estableix el fitxer d'emmagatzematge de claus.
  7. out: estableix el fitxer d'emmagatzematge del certificat, tingueu en compte que tant el certificat com la clau s'emmagatzemen al mateix fitxer: /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

L'ordre anterior us demanarà que respongueu a les preguntes següents, recordeu utilitzar els valors que s'apliquen al vostre escenari.

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 

Pas 2. Configuració de VSFTPD per utilitzar SSL/TLS

3. Abans de realitzar qualsevol configuració de VSFTPD, obrim els ports 990 i 40000-50000 per permetre que les connexions TLS i l'interval de ports de ports passius es defineixin al fitxer de configuració VSFTPD respectivament:

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

4. Ara, obriu el fitxer de configuració VSFTPD i especifiqueu-hi els detalls SSL:

# vi /etc/vsftpd/vsftpd.conf

Busqueu l'opció ssl_enable i establiu el seu valor a YES per activar l'ús de SSL, a més, com que TSL és més segur que SSL, restringirem VSFTPD perquè utilitzi TLS, utilitzant l'opció ssl_tlsv1_2:

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

5. A continuació, afegiu les línies següents per definir la ubicació del certificat SSL i el fitxer de claus:

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

6. A continuació, hem d'evitar que els usuaris anònims utilitzin SSL i, a continuació, obligar a tots els inicis de sessió no anònims a utilitzar una connexió SSL segura per a la transferència de dades i a enviar la contrasenya durant l'inici de sessió:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. A més, podem afegir les opcions següents per augmentar la seguretat del servidor FTP. Quan l'opció require_ssl_reuse s'estableix a YES, llavors totes les connexions de dades SSL són necessàries per mostrar la reutilització de la sessió SSL; demostrant que coneixen el mateix secret mestre que el canal de control.

Per tant, l'hem d'apagar.

require_ssl_reuse=NO

De nou, hem de seleccionar quins xifratges SSL permetrà VSFTPD per a connexions SSL xifrades amb l'opció ssl_ciphers. Això pot limitar molt els esforços dels atacants que intenten forçar un xifrat en particular en el qual probablement van descobrir vulnerabilitats en:

ssl_ciphers=HIGH

8. Ara, configureu l'interval de ports (port mínim i màxim) dels ports passius.

pasv_min_port=40000
pasv_max_port=50000

9. Opcionalment, permeteu la depuració SSL, és a dir, els diagnòstics de connexió openSSL es registren al fitxer de registre VSFTPD amb l'opció debug_ssl:

debug_ssl=YES

Deseu tots els canvis i tanqueu el fitxer. Aleshores, reiniciem el servei VSFTPD:

# systemctl restart vsftpd

Pas 3: prova del servidor FTP amb connexions SSL/TLS

10. Després de fer totes les configuracions anteriors, comproveu si VSFTPD utilitza connexions SSL/TLS intentant utilitzar FTP des de la línia d'ordres de la següent manera:

# 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>

A la captura de pantalla anterior, podem veure que hi ha un error que ens informa que VSFTPD només pot permetre que l'usuari iniciï sessió des de clients que admeten serveis de xifratge.

La línia d'ordres no ofereix serveis de xifratge, produint així l'error. Per tant, per connectar-nos de manera segura al servidor, necessitem un client FTP que admeti connexions SSL/TLS com FileZilla.

Pas 4: instal·leu FileZilla per connectar-vos de manera segura a un servidor FTP

11. FileZilla és un client FTP modern, popular i multiplataforma que admet connexions SSL/TLS de manera predeterminada.

Per instal·lar FileZilla a Linux, executeu l'ordre següent:

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

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

12. Quan finalitzi la instal·lació (o si ja la teniu instal·lada), obriu-la i aneu a Fitxer=>Gestor de llocs o (premeu Ctrl+S) per obtenir la interfície Gestor de llocs a continuació.

Feu clic al botó Lloc nou per afegir un nou detall de connexió de lloc/amfitrió.

13. A continuació, configureu el nom de l'amfitrió/lloc, afegiu l'adreça IP, definiu el protocol a utilitzar, el xifratge i el tipus d'inici de sessió com a la captura de pantalla següent (utilitza els valors que s'apliquen al vostre escenari):

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. A continuació, feu clic a Connecta per tornar a introduir la contrasenya i, a continuació, verifiqueu el certificat que s'utilitza per a la connexió SSL/TLS i feu clic a D'acord una vegada més per connectar-vos al servidor FTP:

En aquesta etapa, hauríem d'haver iniciat sessió correctament al servidor FTP mitjançant una connexió TLS, comproveu la secció d'estat de la connexió per obtenir més informació a la interfície següent.

15. Per últim, però no menys important, proveu de transferir fitxers des de la màquina local al servidor FTP a la carpeta de fitxers, feu una ullada a l'extrem inferior de la interfície FileZilla per veure els informes sobre les transferències de fitxers.

Això és tot! Tingueu sempre en compte que FTP no és segur per defecte, tret que el configurem per utilitzar connexions SSL/TLS tal com us vam mostrar en aquest tutorial. Comparteix els teus pensaments sobre aquest tutorial/tema mitjançant el formulari de comentaris que hi ha a continuació.