Demone FTP molto sicuro, o semplicemente vsFTPd è un software leggero con grande capacità di personalizzazione. In questo tutorial proteggeremo un'installazione già esistente su un sistema Debian utilizzando il nostro certificato SSL/TLS autofirmato. Nonostante sia scritto per Debian, dovrebbe funzionare sulla maggior parte delle distribuzioni Linux come Ubuntu e CentOS, ad esempio.
Installazione di vsFTPd
Su un nuovo VPS Linux devi prima installare vsFTPd. Anche se troverai i passaggi di base per installare vsFTPd in questo tutorial ti consiglio di leggere anche questi due tutorial più dettagliati:Installazione di vsFTPd su Debian/Ubuntu e Installazione di vsFTPd su CentOS. Tutti i passaggi relativi all'installazione sono spiegati più accuratamente qui.
Installazione su Debian/Ubuntu:
apt-get install vsftpd
Installazione su CentOS:
yum install epel-release
yum install vsftpd
Configurazione Apri il file di configurazione:/etc/vsftpd.conf nel tuo editor di testo preferito, in questo tutorial utilizziamo nano
.
nano /etc/vsftpd.conf
Incolla le seguenti righe nella configurazione:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
Termina riavviando il tuo demone vsFTPd:
/etc/init.d/vsftpd restart
Ora dovresti essere in grado di accedere come qualsiasi utente locale tramite FTP, ora andiamo avanti e proteggiamo questo software.
Genera un certificato autofirmato
Un certificato autofirmato viene in genere utilizzato in un protocollo di accordo di chiave pubblica, ora utilizzerai openssl
per generare una chiave pubblica e una chiave privata corrispondente. Prima di tutto dobbiamo creare una directory in cui archiviare questi due file chiave, preferibilmente in un luogo sicuro a cui i normali utenti non possono accedere.
mkdir -p /etc/vsftpd/ssl
Ora alla generazione effettiva del certificato, memorizzeremo entrambe le chiavi nello stesso file (/etc/vsftpd/ssl/vsftpd.pem ):
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/vsftpd/ssl/vsftpd.pem -out /etc/vsftpd/ssl/vsftpd.pem
Dopo aver eseguito il comando, ti verranno poste alcune domande come il codice del paese, lo stato, la città, il nome dell'organizzazione ecc. Usa le tue informazioni o quelle della tua organizzazione. Ora la riga più importante è il Nome comune che deve corrispondere all'indirizzo IP del tuo VPS, in alternativa un nome di dominio che punta ad esso.
Questo certificato avrà una validità di 365 giorni (~1 anno), utilizzerà il protocollo di accordo delle chiavi RSA con una lunghezza della chiave di 4096 bit e il file contenente entrambe le chiavi verrà archiviato nella nuova directory appena creata. Per maggiori dettagli sulla lunghezza della chiave e sulla sua relazione con la sicurezza, vedere questo:Raccomandazioni per la crittografia II.
Installa il nuovo certificato in vsFTPd
Per iniziare a utilizzare il nostro nuovo certificato e quindi fornire la crittografia, dobbiamo aprire nuovamente il file di configurazione:
nano /etc/vsftpd.conf
Dobbiamo aggiungere i percorsi al nostro nuovo certificato e ai file chiave. Poiché sono archiviati nello stesso file, dovrebbe essere lo stesso anche all'interno della configurazione.
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.pem
Dobbiamo aggiungere questa riga per assicurarci che SSL sia abilitato:
ssl_enable=YES
Facoltativamente, potremmo impedire agli utenti anonimi di utilizzare SSL, poiché la crittografia non è necessaria su un server FTP pubblico.
allow_anon_ssl=NO
Successivamente è necessario specificare quando utilizzare SSL/TLS, ciò consentirà la crittografia sia per il trasferimento dei dati che per le credenziali di accesso
force_local_data_ssl=YES
force_local_logins_ssl=YES
Possiamo anche specificare quali versioni e protocolli utilizzare. TLS è generalmente più sicuro di SSL e quindi possiamo consentire TLS e allo stesso tempo bloccare versioni precedenti di SSL.
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
Richiedere il riutilizzo di SSL e l'utilizzo di cifrature elevate contribuirà anche a migliorare la sicurezza. Dalle pagine man di vsFTPd:
richiedi_ssl_riutilizzo Se impostato su sì, tutte le connessioni dati SSL devono mostrare il riutilizzo della sessione SSL (il che dimostra che conoscono lo stesso segreto principale del canale di controllo). Sebbene questa sia un'impostazione predefinita sicura, potrebbe interrompere molti client FTP, quindi potresti voler disabilitarlo. Per una discussione sulle conseguenze, vedere http://scarybeastsecurity.blogspot.com/2009/02/vsftpd-210-released.html (aggiunto nella v2.1.0).
cifra_ssl Questa opzione può essere utilizzata per selezionare quali crittografie SSL vsftpd consentiranno connessioni SSL crittografate. Vedere la pagina man di cifrari per ulteriori dettagli. Tieni presente che limitare i codici può essere un'utile precauzione di sicurezza in quanto impedisce a parti remote malintenzionate di forzare un codice con cui hanno riscontrato problemi.
require_ssl_reuse=YES
ssl_ciphers=HIGH
Termina riavviando il vsftpd
demone
/etc/init.d/vsftpd restart
Conferma installazione
E il gioco è fatto, ora dovresti essere in grado di connetterti al tuo server e confermare che tutto funziona. Se stai usando FileZilla, una finestra di dialogo contenente le informazioni sulla tua organizzazione (o qualsiasi cosa tu abbia inserito durante la generazione del certificato in precedenza) dovrebbe aprirsi al momento della connessione. L'output dovrebbe quindi essere simile a questo:
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Per saperne di più su vsFTPd, controlla le sue pagine di manuale:
man vsftpd