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.

Consiglio

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.

Fatto

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 esternovsftpd.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   stabilisce la velocità di trasmissione (in byte per secondo) per gli utenti anonimi; 0 indica un tasso illimitato
local_max_rate   stabilisce la velocità di trasmissione (in byte per secondo) per gli utenti locali; 0 indica un tasso illimitato
max_clients   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
Consiglio

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 servervsftpd. 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 libreriaglibc (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:

  1. 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
  1. 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

Prepara il tuo business per il successo online
Abbiamo ridotto ulteriormente i prezzi dei nostri strumenti pensati
per incrementare le tue vendite di fine anno.
Risparmia fino al 75%