Come configurare un server FTP su Linux per il file sharing

Come configurare un server FTP su Linux per il file sharing

Come configurare un server FTP su Linux per trasformare un PC in disuso in un hub per il file sharing oppure per il backup dei dati.
Come configurare un server FTP su Linux per trasformare un PC in disuso in un hub per il file sharing oppure per il backup dei dati.

A cosa serve configurare un server FTP su un sistema Linux? Ad esempio per trasformare un PC in disuso in un hub per il file sharing oppure per il backup dei dati.

Oggi è abbastanza normale affidarsi ad un NAS (Network Attached Storage) per condividere file nella propria rete locale oppure per eseguire il backup dei dati.

Questi device non solo altro che PC, equipaggiati con Linux ed un'interfaccia user-friendly, di piccole dimensioni progettati per eseguire task di file sharing e streaming di contenuti.

Tuttavia nulla vieta agli utenti di utilizzare un normalissimo computer, magari uno vecchio che non si usa più, installarci una comune distribuzione ed usarlo come piccolo NAS fatto in casa.

Una delle tante opzioni per riciclare un PC con Linux è quella di configurarlo come server FTP (File Transfer Protocol). Tale protocollo sfrutta delle connessioni TCP (Transmission Control Protocol) per eseguire il trasferimento dei file tra diversi computer.

Con tale sistema gli utenti possono quindi accedere a delle directory condivise sulla rete LAN (Local Area Network), tramite un apposito client e le relative credenziali, dove poter caricare o scaricare documenti e altri contenuti.

Non di rado le università e le aziende sfruttano invece una particola estensione di tale protocollo definita come FTPS (FTP Secure), in buona sostanza è la medesima tecnologia che però si avvale di connessioni cifrate tramite certificati di sicurezza TLS o SSL.

In generale però non è insicuro utilizzare il protocollo FTP per il proprio server casalingo, soprattutto se tale computer non è accessibile al di fuori della nostra rete locale.

Come configurare un server FTP su Linux

Configurare un server FTP su Linux per il file sharing non è difficile ma richiede qualche step particolare, soprattutto se si desidera personalizzare a fondo il suo comportamento, che andremo a spiegare nel dettaglio in questa guida.

La scelta della distribuzione

Prima di tutto dobbiamo capire quale versione di Linux si adatta maggiormente ai nostri gusti e alle nostre esigenze. In generale il server FTP è un sistema a cui accederemo tramite shell o comunque sfruttano un client dedicato, dunque in teoria è possibile anche non selezionare alcun ambiente grafico durante l'installazione della distribuzione. Tuttavia tale opzione è più indicata per coloro che già hanno qualche esperienza con Linux.

Quindi per gli utenti meno navigati è consigliabile affidarsi a qualcosa di più intuitivo, tipo Debian o Ubuntu, in abbinamento con un desktop environment ultraleggero come LXQT o magari XFCE.

Ovviamente nulla ci vieta di utilizzare la distribuzione che preferiamo o magari quella più indicata per il computer che possediamo. Volendo fare un esempio concreto, se disponiamo di un Raspberry Pi è meglio affidarsi direttamente a Raspberry Pi OS.

L'installazione dei pacchetti necessari

screenshot vsftpd

Una volta terminato il processo di installazione della distribuzione è possibile iniziare a reperire tutti i pacchetti necessari per dare vita al nostro server FTP. Iniziamo assicurandoci di avere un sistema aggiornato, in modo tale da ottenere sempre l'ultima versione del software disponibile. Quindi apriamo il terminale e digitiamo:

sudo apt-get update && apt-get upgrade

Terminata tale verifica passiamo al download del programma che animerà il tutto, ovvero vsftpd (very secure FTP daemon). Si tratta di un progetto open source, distribuito sotto licenza GPL, che si occupa appunto di avviare un demone, cioè un processo in background nel sistema gestibile dall'utente, che attiva il server FTP.

All'interno dell'ecosistema Linux esistono decine di server FTP come vsftpd.  In questa guida ci affideremo a tale applicativo perché risulta essere molto semplice da configurare anche per i novizi. Inoltre è il demone FTP di riferimento per decine di distribuzioni, come ad esempio Ubuntu, Fedora e Slackware.

Installare vsftpd è molto semplice, si trova nei repository, quindi basta digitare nella shell questo comando:

sudo apt-get install vsftpd

Una volta che il package manager avrà terminato il suo lavoro dovremo rivolgersi a systemd, ovvero il sistema di init e gestione dei demoni implementato nella maggior parte delle distribuzioni, per avviare vsftpd ed attivare il suo demone:

sudo systemctl start vsftpd

sudo systemctl enable vsftpd

Configurare vsftpd

vsftpd può essere completamente configurato tramite un singolo file di testo chiamato “vsftpd.conf_default“, posizionato nella directory “etc“. Prima di iniziare a modificare tale file per immettere le nostre preferenze è sempre bene fare un backup dell'originale, cosi in caso di problemi sarà possibile ripristinare tutto allo stato originale.

Dunque facciamo una semplice copia del file:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_backup

Per ripristinare il backup basterà scrivere nel terminale:

sudo cp /etc/vsftpd.conf_backup /etc/vsftpd.conf

Ora è il momento di iniziare ad impostare qualche setting per garantire il corretto funzionamento del server. Per prima cosa apriamo con un editor di testo il file di configurazione di vsftpd:

sudo nano /etc/vsftpd.conf

Nano è un editor da shell, dopo avergli impartito l'ordine di aprire il file “vsftpd.conf” ci verranno appunto mostrati i vari parametri e le opzioni disponibili. Di base quello che ci interessa sono tali impostazioni:

listen=YES
listen_ipv6=NO
connect_from_port_20=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=45000
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Assicuratevi che tutte queste voci siano identiche a quelle riportate sul file presente nel vostro sistema. Finiti i controlli, se state usando Nano, salvate le modifiche con la combinazione di tasti CTRL+S e chiudete il file con CTLR+X.

Nel dettaglio con questa configurazione stiamo dicendo a vsftpd di ascoltare sulla porta 20, quella normalmente usata dal protocollo FTP, di vietare l'accesso agli utenti anonimi e di abilitare l'accesso e la scrittura per gli utenti registrati.

Inoltre indichiamo anche al server una serie di directory e di file da tenere in considerazione, come ad esempio il file della lista degli utenti che hanno il permesso di accedere al server, ovvero “vsftpd.userlist“, e di ignorare gli indirizzi IPV6 (Internet Protocol).

Adesso passiamo alla configurazione del nostro firewall di sistema, cioè quel software che si occupa di gestire le connessioni in entrata ed in uscita dal nostro computer e che controlla anche le varie porte TCP.

Gran parte delle distribuzioni Linux adotta UFW (Uncomplicated Firewall) come firewall di riferimento. Quindi sarà necessario istruire UFW in modo tale che lasci passare i dati dalle porte utilizzate dal protocollo FTP, ovvero 20 e 21.

Iniziamo controllando se UFW è presente ed operativo:

sudo ufw status

Se non ci esce un output di errore allora possiamo procedere ed indicare al firewall di tenere aperte le porte necessarie al server FTP:

sudo ufw allow 20/tcp

sudo ufw allow 21/tcp

Adesso passiamo alla creazione dell'utente del server FTP:

sudo adduser davideFTP

Ora immettiamo la password del server subito dopo tale comando:

sudo passwd davideFTP

Ed in fine aggiungiamo il nuovo utente alla lista degli utenti autorizzati ad accedere al server FTP:

echo "davideFTP" sudo tee -a /etc/vsftpd.userlist

Abbiamo finalmente terminato le configurazioni base. Per abilitare le modifiche eseguite fino ad ora riavviamo il demone di vsftpd:

sudo systemctl restart vsftpd

Fatto questo scegliamo un client FTP e proviamo ad eseguire il login. Uno dei più gettonati è Filezilla ma molti file manager, come Dolphin o Nautilus, supportano nativamente le connessioni FTP. Filezilla si trova nei repostory di tutte le distribuzioni:

sudo apt-get install filezilla

Una volta aperto il client ci verranno richieste le nostre credenziali e l'indirizzo IP locale del server FTP. Se non si conosce l'IP reperirlo è molto semplice basta aprire bash sul PC dove abbiamo installato il server FTP e digitare questo comando:

ip a

Come output dovrebbe comparire qualcosa di simile:

eth0: <BROADCAST,MULTICAST,UP> mtu 1500 group default qlen 1
link/ether 44:8a:5b:a5:c1:dc
inet 192.168.0.114/24 brd 192.168.0.255 scope global dynamic

Le cifre evidenziate sono appunto l'IP locale che è necessario immettere in Filezilla. Se tutto è andato bene ora sarà possibile accedere alla home directory del server direttamente dai client FTP installati sui vari PC connessi alla rete locale.

Crittografare il traffico dati sul server FTP

In genere non è necessario crittografare il traffico dati di un server FTP casalingo, questo perché solitamente non si tratta di sistemi accessibili direttamente da internet o ad utenti sconosciuti.

Tuttavia nel caso si volesse è sempre possibile sfruttare un certificato SSL ed FTPS. Tale opzione però, a causa delle procedure di crittografia, rallenterà la velocità di scambio dati, dunque valutate questa impostazione solo se è strettamente necessaria.

Partiamo creano un nuovo certificato con il pacchetto OpenSSL. Apriamo la shell e scriviamo:

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

Durante tale procedura OpenSSL ci chiederà se vogliamo abilitare dei parametri particolari, possiamo immettere quelli che preferiamo oppure mantenere quelli di default premendo il tasto Invio.

Finito il processo è necessario istruire vsftpd affinché adoperi la nuova chiave SSL.

Apriamo quindi nuovamente il suo file di configurazione:

sudo nano /etc/vsftpd.conf

e modifichiamo la stringa di testo “ssl_enable” in modo che riporti la dicitura “YES”:

ssl_enable=YES

sotto di essa aggiungiamo anche queste impostazioni:

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
pasv_min_port=40000
pasv_max_port=50000

Nel dettaglio con questi settaggi stiamo indicando al server dove trovare la chiave SSL e di utilizzare la crittografia per lo scambio di dati in locale. Per abilitare le modifica basta riavviare il demone di vsftpd:

sudo systemctl restart vsftpd

Eseguire dei backup sul server FTP

Una volta configurato il nostro server FTP possiamo iniziare ad utilizzarlo non solo per scambiare dati ma anche come punto di backup.

Per questo genere di operazioni possiamo affidarci al client FTP e ad un tool di compressione come ad esempio Tar, che si trova già preinstallato in molte distribuzioni.

Per prima cosa scegliamo quale directory comprimere e generiamo il file che successivamente sarà caricato nel server:

tar -cjvf backup_15072021.tar.gz ~/Backup

Con tale comando abbiamo generato un archivio compresso della cartella chiamata Backup posizionato nella home directory. Ovviamente in base alle nostre esigenze possiamo selezionare un'altra cartella.

Ora con un semplice drag & drop su Filezilla si potrà eseguire l'upload dell'archivio appena creato sul server FTP e recuperarlo al volo nel caso sia necessario.

In alternativa possiamo impostare un utility di backup tipo Déjà Dup per eseguire backup periodici automatizzati. Questo comodo tool si trova preinstallato in Ubuntu, ed in diverse distribuzioni che adottano GNOME Shell come ambiente grafico predefinito, ma è comunque  reperibile tramite i repository:

sudo apt-get install deja-dup

Una volta installato avviamolo e rechiamoci sulla voce “Storage Location”, selezioniamo l'opzione “Network Server” ed immettiamo l'indirizzo IP locale del server preceduto dalla dicitura “ftp://“. Sul campo di testo sottostante digitiamo invece la directory dove vogliamo posizionare il backup.

Una volta fatto questo spostiamoci su “Folder To Save” e selezioniamo le cartelle da salvare ed in fine andiamo su “Overview” e clicchiamo sull'opzione “Back up Now” per avviare il backup.

Ci verranno richieste le credenziali d'accesso e se desideriamo impostare una password per accedere ai backup.

Se vogliamo che tale operazione venga  eseguita in automatico con cadenza regolare basterà recarsi nella sezione “Scheduling”, abilitare l'opzione “Automatic backup” ed in fine impostare la cadenza del backup e la durante temporale dei salvataggi.

In conclusione

Configurare un server FTP su Linux è dunque alla portata di tutti gli utenti. Le distribuzioni offrono tutti gli strumenti necessari per trasformare il proprio PC in un hub per il file sharing oppure per il backup dei dati.

Link copiato negli appunti

Ti potrebbe interessare

25 08 2021
Link copiato negli appunti