Salta al contenuto principale

Configurare un server FTP sicuro con vsftpd su Linux

Profile picture for user luca77king

Nel panorama digitale odierno, in continua evoluzione e sempre più esposto a rischi di sicurezza, garantire l’integrità e la riservatezza dei dati è una responsabilità che ogni amministratore di sistema non può ignorare. In ambienti Linux, una delle soluzioni più affidabili per la gestione sicura dei file tramite FTP è senza dubbio vsftpd, acronimo che sta per Very Secure FTP Daemon. Si tratta di un server FTP open source, progettato per essere estremamente leggero e, soprattutto, focalizzato sulla sicurezza.

Vsftpd si distingue per l’alta configurabilità e per il supporto nativo a protocolli cifrati come SSL e TLS. Questo lo rende perfetto sia per piccole configurazioni locali, sia per ambienti di produzione che richiedono solidità e rigore nelle policy di accesso. Il suo comportamento può essere modellato con precisione attraverso il file di configurazione /etc/vsftpd.conf, dove è possibile definire ogni aspetto del server: dagli utenti ammessi, alla modalità di connessione, fino al livello di cifratura.

L’installazione varia in base alla distribuzione utilizzata. Su un sistema basato su Debian, come Ubuntu, è sufficiente eseguire il comando

sudo apt install vsftpd

Mentre su sistemi basati su Red Hat, come CentOS o Fedora, si utilizza

sudo yum install vsftpd

Dopo l’installazione, il servizio può essere avviato con

sudo systemctl start vsftpd

ed eventualmente abilitato all’avvio automatico con

sudo systemctl enable vsftpd

A questo punto si entra nel vivo della configurazione. Aprendo il file principale con

sudo nano /etc/vsftpd.conf

si può iniziare a definire il comportamento del server. Il primo passo è limitare l’accesso agli utenti autorizzati, evitando connessioni anonime o inutili aperture. È possibile farlo impostando:

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

In questo modo, solo gli utenti specificati nel file /etc/vsftpd.userlist potranno accedere. Per esempio, per autorizzare un utente chiamato lucadev, basta aggiungerlo al file:

echo "lucadev" | sudo tee -a /etc/vsftpd.userlist

La cifratura della connessione è il passo cruciale successivo. Vsftpd supporta SSL/TLS e consente quindi di evitare che i dati viaggino in chiaro. Prima di tutto, bisogna generare un certificato, per esempio con OpenSSL:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.crt

Una volta creato il certificato, si abilita l’uso di SSL nel file di configurazione:

ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key

Per rafforzare la sicurezza, è opportuno vietare l’accesso anonimo e disabilitare i protocolli obsoleti:

anonymous_enable=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
allow_anon_ssl=NO

In questo modo si autorizza soltanto l’uso di TLS v1 (o superiori se supportati) e si impedisce ogni accesso non cifrato e anonimo. Inoltre, per evitare che gli utenti possano navigare fuori dalla loro home directory, è consigliato abilitare il chroot:

chroot_local_user=YES

E infine, per mantenere un livello minimo di log utile per il monitoraggio, attivare il logging dettagliato:

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES

Una volta completate tutte le modifiche, è importante riavviare il servizio per applicarle:

sudo systemctl restart vsftpd

A questo punto, il server FTP è operativo e protetto. Per verificare che tutto funzioni come previsto, è possibile connettersi con un client FTP che supporti FTPS, come FileZilla, specificando l’host, il nome utente e selezionando “FTP su TLS esplicito” come protocollo. Se la connessione avviene con successo e il certificato viene riconosciuto, significa che la configurazione è corretta.

Configurare vsftpd in modo sicuro richiede precisione, ma il risultato è un’infrastruttura robusta e protetta, in grado di gestire trasferimenti di file in modo affidabile anche in ambienti potenzialmente esposti. Non si tratta solo di attivare un servizio, ma di adottare un approccio consapevole alla gestione dei dati, che tiene conto della riservatezza, dell’autenticazione e della cifratura. In un mondo dove ogni byte può essere intercettato, proteggere i propri server è un dovere, non un’opzione.

Assistente virtuale (BETA)