GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come configurare vsftpd per utilizzare SSL/TLS (FTPS) su CentOS/Ubuntu

Protezione FTP

Vsftpd è un server ftp ampiamente utilizzato e se lo stai configurando sul tuo server per il trasferimento di file, tieni presente i problemi di sicurezza che si presentano. Il protocollo ftp ha una sicurezza debole inerente al suo design. Trasferisce tutti i dati in testo normale (non crittografato) e su una rete pubblica/non sicura questo è qualcosa di troppo rischioso.

Per risolvere il problema abbiamo FTPS. Protegge la comunicazione FTP crittografandola con SSL/TLS. E questo post mostra come configurare la crittografia SSL con vsftpd.

Installa vsftpd

Vsftpd è disponibile nei repository predefiniti di tutte le principali distribuzioni inclusi debian, Ubuntu, centos e fedora e può essere installato senza problemi. C'è un solo file di configurazione chiamato vsftpd.conf che risiede nella directory /etc.

# ubuntu/debian
$ sudo apt-get install vsftpd
# centos/fedora
# sudo yum install vsftpd

Il resto è configurare vsftpd per utilizzare la crittografia SSL per la comunicazione ftp. È solo un processo in 2 fasi.

Genera un certificato SSL

Il primo passo è creare un certificato SSL e un file chiave che vsftpd utilizzerà per la crittografia. Il parametro di configurazione "rsa_cert_file" conterrà il percorso del file del certificato. Ha un valore predefinito che può essere trovato nella pagina man.

$ man vsftpd.conf | grep rsa_cert_file -A 5
       rsa_cert_file
              This option specifies the location of the RSA certificate to
              use for SSL encrypted connections.
              Default: /usr/share/ssl/certs/vsftpd.pem

È diverso su Ubuntu e CentOS. Possiamo archiviarlo in qualsiasi posizione desideriamo.
Crea un certificato SSL con il comando openssl. Stiamo mettendo insieme il certificato e la chiave in un unico file.

# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Rispondi alle domande che seguono e in pochi secondi il file del certificato dovrebbe essere pronto. L'output sarebbe simile a questo

# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Generating a 1024 bit RSA private key
.............++++++
....++++++
writing new private key to '/etc/ssl/private/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:NY
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:

Configura Vsftpd per SSL

L'attività successiva consiste nel configurare vsftpd per utilizzare questo certificato SSL per la crittografia. Il file vsftpd.conf può essere trovato nel seguente percorso

# Ubuntu/Debian
/etc/vsftpd.conf 

# CentOS/Fedora
/etc/vsftpd/vsftpd.conf

Apri il file vsftpd.conf e modificalo come mostrato di seguito

Quanto segue indicherà a vsftpd la posizione del certificato/file chiave da utilizzare.

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

Aggiungi le seguenti opzioni per attivare SSL. Abilita SSL e forzerà la crittografia per i trasferimenti di dati e gli accessi.

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

Le righe seguenti diranno a vsftpd di utilizzare TLS quando applicabile, che è più sicuro del suo predecessore SSL.

ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES

Sono state aggiunte tutte le direttive di configurazione necessarie. Salva il file e riavvia vsftpd

# service vsftpd restart
# or
# sudo /etc/init.d/vsftpd restart

Test SSL su vsftpd

Ora che la nostra configurazione è completa, è tempo di testarla.

Per prima cosa prova a connetterti usando il semplice comando ftp e dovrebbe non riuscire a chiedere la crittografia.

$ ftp 192.168.1.5
Connected to 192.168.1.5.
220 (vsFTPd 2.2.2)
Name (192.168.1.5:enlightened): pal
530 Non-anonymous sessions must use encryption.
Login failed.
ftp>

Quindi verifica che la crittografia SSL funzioni correttamente. I client ftp Gui come FileZilla possono usare FTPS, ma per comodità, ricorreremo allo strumento da riga di comando chiamato curl, ed ecco il comando molto semplice che dovrebbe connettersi al server FTPS ed elencare i file

$ curl --ftp-ssl --insecure --ftp-port 192.168.1.2:6003 --user pal:pal ftp://192.168.1.5
-rw-r--r--    1 0        0               0 Jan 03 06:10 abcd.txt
-rw-r--r--    1 0        0               0 Jan 03 06:10 cdefg.txt

Questi file si trovano nella directory home dell'utente pal sul server ftp. Assicurati di avere alcuni file nella home del server per elencarli e verificarli. Altrimenti curl ritornerebbe semplicemente vuoto.
Ecco una rapida spiegazione delle opzioni di curl che abbiamo usato.

ftp-ssl : Tells curl to use ftps

insecure : Tells curl not to use any ssl certificate to authenticate and just connect right away.

ftp-port : Tells curl that we are in ACTIVE mode. In ACTIVE mode the client has to tell the server the hostname and port number to connect back to. If you have configured passive mode ftp, then do not use this.

user : Specifies the username and password joined with a colon.

The last thing is the ftp url.

Se non specifichi la porta ftp sulle connessioni ftp in modalità ATTIVA, visualizzerai l'errore "Nessun percorso verso l'host
".

Se ricevi "bind() non riuscito, abbiamo finito le porte!" errore, quindi cambia semplicemente il numero di porta.

Puoi anche utilizzare un URL come questo

$ curl ftps://192.168.1.5 ...

Ma poi curl proverebbe a connettersi alla porta 990 e, a meno che tu non abbia configurato vsftpd per servire su quella porta, non funzionerà.

Se curl non riesce a connettersi a vsftpd o elenca correttamente i file, usa l'opzione dettagliata (-v) e guarda ulteriori dettagli su cosa è andato storto, quindi correggilo.

Note aggiuntive

FTPS protegge FTP aggiungendo la crittografia SSL al canale di comunicazione. Un altro modo consigliato per stabilire connessioni sicure è utilizzare SFTP (SSH File Transfer Protocol). Il popolare pacchetto OpenSSH che fornisce il servizio ssh, fornisce anche SFTP senza la necessità di alcuna configurazione o configurazione aggiuntiva. Tuttavia, non tutti i client FTP e gli strumenti di sviluppo Web supportano SFTP.


Cent OS
  1. Come installare e configurare un server FTP (vsftpd) con SSL/TLS su Ubuntu 20.04

  2. Come configurare PureFTPd per accettare sessioni TLS su CentOS 6.2

  3. Come configurare Autofs su CentOS 7 / Ubuntu 16.04 / Debian 9 / Fedora 27/26

  4. Come proteggere vsFTPd con SSL/TLS

  5. Come configurare VSFTPD con connessione crittografata SSL/TLS?

Installa Vsftpd con SSL/TLS su Ubuntu 20.04

Come impostare e configurare il server FTP su CentOS

Come installare e configurare Apache con Let's Encrypt TLS/SSL su Ubuntu 20.04

Come installare e configurare VSFTPD su Ubuntu 14.04

Come configurare vsftpd per utilizzare SSL/TLS su Ubuntu 20.04

Come configurare VSFTPD per utilizzare SSL/TLS su un VPS CentOS