Server FTP su Ubuntu: come funziona la configurazione
Nel 1985 è stato specificato nell’RFC 959 il protocollo di trasferimento FTP (File Transfer Protocol) basato su TCP/IP, con lo scopo di salvare i file sul server e poterli richiamare. Il protocollo che opera sul livello di applicazione consente da una parte di trasportare i dati tramite le porte 20 (client) e 21 (server), dall’altra di salvare, elaborare ed estrapolare le directory. Per l’utilizzo di una simile struttura client-server gli utenti hanno solo bisogno di loggarsi con un client FTP e uno speciale account utente sul server.
In particolare nel web hosting acquista sempre più popolarità l’FTP (sicuro): grazie all’aiuto del protocollo di trasporto e del client adatto i contenuti del proprio progetto sono caricati facilmente nello spazio web e salvati nelle strutture di directory. Se gestite il vostro sito presso un provider, questo mette a disposizione solitamente un’applicazione server apposita, comprensiva dei dati di accesso necessari. In questa guida scoprite come configurare il vostro server FTP su Ubuntu e a cosa dovreste assolutamente prestare attenzione.
Desiderate salvare o trasferire dati? Allora noleggiate un server secure FTP online presso IONOS. Trasferimento sicuro grazie a SSH e SSL/TLS, sono inclusi anche backup quotidiani.
Installazione di un server FTP su Ubuntu
Prima di poter cominciare con la configurazione del vostro server FTP, dovete trovare il software adatto. I sistemi Ubuntu hanno già una propria soluzione a disposizione con vsftpd nel gestore di pacchetti, che dovete solo installare. L’applicazione open source per i sistemi compatibili con Unix si basa su moduli e componenti che si contraddistinguono per una programmazione particolarmente compatta. In questo modo i server vsftpd garantiscono uno standard di sicurezza eccellente e una prestazione stabile, nel caso di un numero elevato di accessi client. Per installare l’applicazione, aprite semplicemente il terminale e date il seguente comando:
sudo apt-get install vsftpd
Tutorial del server FTP su Ubuntu: configurazione
Dopo il breve processo di installazione potete chiudere di nuovo il terminale e cominciare con la configurazione del server FTP su Ubuntu. Qui aprite il file di configurazione vsftpd.conf, che si trova di default nella cartella “etc“.
Per poter aprire e modificare il file di configurazione del server FTP, avete bisogno di un semplice editor di testo. Di standard su Ubuntu trovate già installato il programma gedit (editor di GNOME), che vi evita di dover cercare una soluzione adatta. Il contenuto testuale si può suddividere in due ambiti: le righe che cominciano con il simbolo del cancelletto (#) e quelle che non cominciano con questo simbolo. Le prime sono commentate e vengono perciò ignorate dal server vsftpd. Si tratta di righe con commenti riguardo alle diverse opzioni di impostazione o di funzioni disattivate. Le seconde comprendono invece quelle informazioni che vengono interpretate successivamente dal server.
Per l’ulteriore configurazione del server FTP non ci sono direttive generali, infatti il setup varia a seconda di quali requisiti imponete come utenti al server FTP. In questo caso è importante che vi cimentiate con le diverse opzioni. Nei seguenti paragrafi di questa guida per il server FTP su Ubuntu trovate perciò informazioni sulle diverse opzioni di impostazioni e le loro funzioni.
Per salvare le modifiche al file vsftpd.conf, avete bisogno di permessi di root, altrimenti potete solo leggere il file di configurazione.
Consentire l’accesso anonimo
Per impostazione standard vsftpd è configurato di modo che gli utenti si possano registrare sul server FTP solo con un account specifico. Il File Transfer Protocol consente però anche una procedura di login, in cui gli utenti si registrano anonimamente senza dover fornire dati personali. Per attivare questo tipo di accesso non specifico, cercate la voce “anonymous_enable=NO“ e sostituite il parametro “NO” con “YES”:
anonymous_enable=YES
Ampliare i permessi degli utenti anonimi
I permessi sono di default molto limitati se l’utente si registra anonimamente su un server FTP Ubuntu. Così è ad esempio possibile solo scaricare i file che sono leggibili per tutti gli utenti (anon_world_readable_only=YES). Se negate questa direttiva, sarà consentito anche il download degli altri file. Inoltre sono disponibili le seguenti opzioni:
- anon_mkdir_write_enable: gli utenti anonimi possono creare nuove directory se inseriscono qui il valore “YES“. Un requisito aggiuntivo è che sia attivato write_enable (v. il paragrafo “Consentire le modifiche al file system“). Valore standard: “No”, con “YES” viene disattivato (#).
- anon_other_write_enable: se questa riga è attiva, potete rinominare ed eliminare i file e le directory sul server FTP anche nel caso di un accesso non autorizzato. Valore standard: “No”, con “YES” viene disattivato (#).
- anon_upload_enable: con questa riga di testo viene attivato l’upload anonimo di file. Per questo i prerequisiti sono che attiviate write_enable e che creiate una directory di upload separata, visto che gli utenti anonimi non possono scrivere direttamente nella cartella home. Valore standard: “No”, con “YES” viene disattivato (#).
Se il server FTP è connesso a Internet, non è comunque consigliato di ampliare in questo modo i permessi di un utente anonimo. Altrimenti rischiate che terzi prendano il controllo del vostro server.
Limitare l’accesso agli utenti locali
Se volete garantire l’accesso alla propria directory home /home/username solo agli utenti locali, potete definirlo nel vsftpd.conf. Il parametro di markup responsabile in questo caso è “chroot_local_user“, a cui viene assegnato di default il valore “NO”. Se modificate la direttiva come segue, viene vietato l’accesso agli utenti locali di tutte le altre directory:
chroot_local_user=YES
Disattivare il login degli utenti locali
Per garantire agli utenti locali l’accesso al server FTP, la voce “local-enable=YES“ deve essere impostata (in genere è così da impostazione standard). Se volete negare l’accesso agli utenti locali al vostro server FTP su Ubuntu, dovete commentare solo la riga relativa, anteponendo il simbolo del cancelletto:
#local_enable=YES
Consentire le modifiche al file system
Nella configurazione standard è definito che possono utilizzare i comandi FTP sia gli utenti locali che quelli anonimi. La riga corrispondente per la scrittura globale “#write_enable=YES“ è ovviamente disattivata. Se deve essere data la possibilità agli utenti loggati di modificare il file system del server vsftpd, è di conseguenza necessario commentare la direttiva:
write_enable=YES
Limitare l’accesso FTP a determinati utenti
In particolari situazioni può essere utile vietare a determinati utenti l’accesso al server FTP o definire chiaramente quali utenti si possono registrare. Per la prima soluzione è necessario aggiungere alla fine del file di configurazione le seguenti righe:
userlist_deny=YES
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
Questo parametro indica al server vsftpd che è vietato l’accesso a tutti gli utenti che sono inseriti nel file esterno vsftpd.user_list. Tutti gli altri utenti possono in questo caso registrarsi come di consueto.
Per il secondo scenario in cui si possono registrare esclusivamente gli utenti inseriti nel file vsftpd.user_list, deve essere risposto negativamente con il parametro “userlist_deny“:
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
In entrambi i casi è necessario creare i file di testo esterni e inserire gli utenti interessati manualmente.
Altre opzioni in una tabella di riepilogo
Opzione | Valore standard | Descrizione |
download_enable | YES | indica se sono possibili i download dal server FTP su Ubuntu |
ssl_enable | NO | dà la possibilità di abilitare la crittografia SSL per l’accesso FTP |
anon_max_rate | 0 | stabilisce la velocità di trasmissione (in byte per secondo) per gli utenti anonimi; 0 indica un tasso illimitato |
local_max_rate | 0 | stabilisce la velocità di trasmissione (in byte per secondo) per gli utenti locali; 0 indica un tasso illimitato |
max_clients | 0 | indica il valore massimo per il numero di client che sono loggati allo stesso tempo sul server FTP; 0 significa che non ci sono limitazioni |
anon_root | /home/ftp | directory in cui si rimanda automaticamente agli utenti anonimi |
log_ftp_protocol | NO | protocolla tutte le richieste e risposte FTP |
connect_timeout | 60 | definisce l’intervallo di tempo in secondi in base al quale viene interrotta la connessione tra server e client nel caso non vi sia comunicazione |
ftpd_banner | testo di benvenuto | |
guest_enable | NO | consente l’attivazione del profilo di accesso anonimo, che è definito in guest_username |
guest_username | ftp | nome utente per il login anonimo |
Potete aprire una lista completa di tutte le opzioni servendovi del seguente comando dato dal terminale:
man vsftpd.conf
Come utilizzare il server FTP su Ubuntu
Dopo aver configurato il file di configurazione secondo le vostre preferenze, non dovreste dimenticare di salvarlo. Per fare in modo che l’applicazione server apporti tutte le modifiche, è necessario anche un riavvio, eseguibile con il seguente comando:
sudo etc/init.d/vsftpd restart
Se non avete ancora riavviato il server FTP, lo potete fare con il comando dal terminale:
sudo etc/init.d/vsftpd start
Se volete di nuovo terminare il server FTP su Ubuntu, sostituite nel comando antecedente semplicemente il parametro “start” con “stop”.
Dopo che avete impostato e avviato il vostro server FTP su Ubuntu, avete bisogno di un account utente per potervi loggare. Ad esempio a questo punto creiamo l’utente con il nome “user” e la password “password”.
sudo useradd -m user -s/usr/sbin/nologin
sudo passwd user
Successivamente consentite l’accesso alla shell nologin, inserendo alla fine del file /etc/shells la riga seguente:
/usr/sbin/nologin
L’account utente creato potete utilizzarlo per instaurare la connessione con un client FTP al server vsftpd. Una famosa soluzione già presente su Ubuntu è l’applicazione open source multipiattaforma FileZilla. L’installazione avviene quindi come di consueto dal terminale:
sudo apt-get install filezilla
Aprite FileZilla e aggiungete una nuova connessione con i dati richiesti: alla voce host inserite l’indirizzo IP del vostro server FTP su Ubuntu, che ascolta le richieste sulla porta 21 (se non avete modificato le impostazioni standard). Scegliete il File Transfer Protocol e se possibile SFTP (Secure FTP) o FTP over TLS, visto che una semplice connessione FTP tramite la porta 21 rappresenta davvero un elevato rischio per la sicurezza. Nel campo “Logon Type“ scegliete la voce “Normal“. Per “User“ e “Password“ avete bisogno dei dati di login generati prima. Con un click su “Connect” vi collegate con il server.
500 OOPS: una funzione di sicurezza che causa problemi
Se avete configurato un server FTP su Ubuntu e delle determinate impostazioni non funzionano, ciò può dipendere da diversi motivi: quindi è pensabile che abbiate dimenticato di riavviare il server FTP o di proteggere il file di configurazione. Altrettanto velocemente si intrufolano degli errori di sintassi nel file vsftpd.conf, quando ad esempio viene inserito uno spazio al posto sbagliato. Un messaggio di errore frequente che ha tutta un’altra causa è il seguente:
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
In questo messaggio che può verificarsi durante il tentativo di connessione non si tratta però di un messaggio di errore in senso stretto, ma di una funzione di sicurezza. Alla base vi è una possibile vulnerabilità della libreria glibc (la libreria standard di Ubuntu del linguaggio di programmazione C), che gli utenti potrebbero sfruttare con i permessi di scrittura per la loro directory root. Per aggirare questo blocco di sicurezza, esistono due soluzioni:
- Rimuovere i permessi di scrittura nella root dell’utente: revocate agli utenti locali i permessi di scrittura per la propria directory root, di modo che possano ancora scrivere nelle sottocartelle. Questa limitazione risolve il problema “500 OOPS”, si dimostra però poco vantaggiosa se i file devono essere scritti forzatamente nella root. Il comando dal terminale per questa soluzione si presenta così:
chmod a-w /home/user
- Consentire i permessi di scrittura per la root nel file vsftpd.conf: se non temete alcuna violazione dei permessi di scrittura, potete anche comunicare al server FTP su Ubuntu che la funzione è richiesta esplicitamente. A questo scopo è necessaria solamente un’altra voce nel file di configurazione:
allow_writeable_chroot=YES
Prova il nostro VPS. I primi 30 giorni sono in omaggio e se allo scadere del periodo di prova non sarai convinto, ti rimborseremo tutte le spese sostenute.