Ricerca nel sito web

Come proteggere un server FTP utilizzando SSL/TLS per il trasferimento sicuro di file in CentOS 7


Per la sua progettazione originale, FTP (File Transfer Protocol) non è sicuro, nel senso che non crittografa i dati trasmessi tra due macchine, insieme alle credenziali dell'utente. Ciò rappresenta una minaccia enorme per i dati e per la sicurezza del server.

In questo tutorial spiegheremo come abilitare manualmente i servizi di crittografia dei dati in un server FTP in CentOS/RHEL 7 e Fedora; eseguiremo vari passaggi per proteggere i servizi VSFTPD (Very Secure FTP Daemon) utilizzando i certificati SSL/TLS.

Prerequisiti:

  1. È necessario aver installato e configurato un server FTP in CentOS 7

Prima di iniziare, tieni presente che tutti i comandi in questo tutorial verranno eseguiti come root, altrimenti utilizza il comando sudo per ottenere i privilegi di root se non controlli il server utilizzando l'account root.

Passaggio 1. Generazione del certificato SSL/TLS e della chiave privata

1. Dobbiamo iniziare creando una sottodirectory in: /etc/ssl/ dove memorizzeremo il certificato SSL/TLS e i file chiave :

mkdir /etc/ssl/private

2. Quindi esegui il comando seguente per creare il certificato e la chiave per vsftpd in un singolo file, ecco la spiegazione di ciascun flag utilizzato.

  1. req – è un comando per la gestione della richiesta di firma del certificato X.509 (CSR).
  2. x509: significa gestione dei dati del certificato X.509.
  3. giorni: definisce il numero di giorni per i quali il certificato è valido.
  4. newkey: specifica il processore della chiave del certificato.
  5. rsa:2048: processore di chiavi RSA, genererà una chiave privata a 2048 bit.
  6. keyout: imposta il file di archiviazione della chiave.
  7. out – imposta il file di archiviazione del certificato, tieni presente che sia il certificato che la chiave sono archiviati nello stesso file: /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

Il comando precedente ti chiederà di rispondere alle domande seguenti, ricorda di utilizzare valori che si applicano al tuo scenario.

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 

Passaggio 2. Configurazione di VSFTPD per utilizzare SSL/TLS

3. Prima di eseguire qualsiasi configurazione VSFTPD, apriamo le porte 990 e 40000-50000 per consentire connessioni TLS e l'intervallo di porte passive definire nel file di configurazione VSFTPD rispettivamente:

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

4. Ora apri il file di configurazione VSFTPD e specifica i dettagli SSL al suo interno:

vi /etc/vsftpd/vsftpd.conf

Cerca l'opzione ssl_enable e imposta il suo valore su YES per attivare l'uso di SSL, inoltre, poiché TSL è più sicuro di SSL, limiteremo VSFTPD a utilizzare TLS utilizzando invece l'opzione ssl_tlsv1_2:

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

5. Quindi, aggiungi le righe seguenti per definire la posizione del certificato SSL e del file chiave:

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

6. Successivamente, dobbiamo impedire agli utenti anonimi di utilizzare SSL, quindi forzare tutti gli accessi non anonimi a utilizzare una connessione SSL sicura per il trasferimento dei dati e a inviare la password durante l'accesso:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Inoltre, possiamo aggiungere le opzioni seguenti per aumentare la sicurezza del server FTP. Quando l'opzione require_ssl_reuse è impostata su YES, tutte le connessioni dati SSL devono mostrare il riutilizzo della sessione SSL; dimostrando di conoscere lo stesso master secret del canale di controllo.

Pertanto, dobbiamo spegnerlo.

require_ssl_reuse=NO

Ancora una volta, dobbiamo selezionare quali cifrari SSL VSFTPD consentirà per le connessioni SSL crittografate con l'opzione ssl_ciphers. Ciò può limitare notevolmente gli sforzi degli aggressori che tentano di forzare un particolare codice in cui probabilmente hanno scoperto vulnerabilità in:

ssl_ciphers=HIGH

8. Ora imposta l'intervallo di porte (porta minima e massima) delle porte passive.

pasv_min_port=40000
pasv_max_port=50000

9. Facoltativamente, consenti il debug SSL, il che significa che la diagnostica della connessione openSSL viene registrata nel file di registro VSFTPD con l'opzione debug_ssl:

debug_ssl=YES

Salva tutte le modifiche e chiudi il file. Quindi riavviamo il servizio VSFTPD:

systemctl restart vsftpd

Passaggio 3: testare il server FTP con connessioni SSL/TLS

10. Dopo aver eseguito tutte le configurazioni di cui sopra, verifica se VSFTPD utilizza connessioni SSL/TLS tentando di utilizzare FTP dalla riga di comando come segue:

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>

Dalla schermata sopra, possiamo vedere che è presente un errore che ci informa che VSFTPD può consentire all'utente di accedere solo da client che supportano i servizi di crittografia.

La riga di comando non offre servizi di crittografia producendo così l'errore. Pertanto, per connetterci in modo sicuro al server, abbiamo bisogno di un client FTP che supporti le connessioni SSL/TLS come FileZilla.

Passaggio 4: installa FileZilla per connetterti in modo sicuro a un server FTP

11. FileZilla è un client FTP moderno, popolare e, soprattutto, multipiattaforma che supporta le connessioni SSL/TLS per impostazione predefinita.

Per installare FileZilla in Linux, esegui il comando seguente:

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

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

12. Una volta completata l'installazione (o se l'hai già installata), aprila e vai su File=>Gestione siti o (premi Ctrl+S ) per ottenere l'interfaccia Gestione sito di seguito.

Fai clic sul pulsante Nuovo sito per aggiungere i dettagli della connessione di un nuovo sito/host.

13. Successivamente, imposta il nome host/sito, aggiungi l'indirizzo IP, definisci il protocollo da utilizzare, la crittografia e il tipo di accesso come nella schermata seguente (utilizza i valori che si applicano al tuo scenario):

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. Quindi fare clic su Connetti per inserire nuovamente la password, quindi verificare il certificato utilizzato per la connessione SSL/TLS e fare clic una volta su OK altro per connettersi al server FTP:

A questo punto, dovremmo aver effettuato l'accesso con successo al server FTP tramite una connessione TLS, controlla la sezione sullo stato della connessione per ulteriori informazioni dall'interfaccia sottostante.

15. Ultimo ma non meno importante, prova a trasferire i file dal computer locale al server FTP nella cartella dei file, dai un'occhiata all'estremità inferiore dell'interfaccia FileZilla per visualizzarli rapporti riguardanti i trasferimenti di file.

È tutto! Tieni sempre presente che FTP non è sicuro per impostazione predefinita, a meno che non lo configuriamo per utilizzare connessioni SSL/TLS come ti abbiamo mostrato in questo tutorial. Condividi le tue opinioni su questo tutorial/argomento tramite il modulo di feedback riportato di seguito.