proFTPd
Installazione e configurazione di base con Webmin
Per molti amministratori di Linux, l'unico modo di procedere è via command line, configurando tutto a manina. Per quelli più pigri come me, a volte è più comodo e conveniente avere una interfaccia centrale un po' più grafica che predispone molti moduli e opzioni, secondo delle linee guida comuni.
Per i server senza GUI, questa interfaccia è Webmin, che guarda caso, dispone anche del modulo proFTPd nella sezione 'Server'.
Se non è installato, cercate nella lista dei moduli non utilizzati, premete il tasto "Installa modulo" e Webmin si preoccuperà dell'installazione e dell'attivazione del server, mettendolo tra i servizi avviati al boot.
Non è detto che le vostre esigenze siano proprio le stesse del creatore del modulo Webmin. Infatti ho scoperto che molte delle configurazioni descritte sotto le ho dovute configurare comunque da terminale, o dalla sezione 'Configurazione manuale dei file' del modulo Webmin.
Infatti, se avete dimestichezza con l'inglese, o se vi fidate dei traduttori automatici, vi consiglio la lettura della documentazione scritta dall'autore del modulo Webmin. Tra le decine di opzioni e di configurazioni possibili, ha reso in forma grafica e 'assistita' quelli più utili ai suoi scopi e alle sue preferenze. Le altre dovrete smanettarle voi in qualche altro modo. Questo è uno dei motivi per scrivere la paginetta di blog con i miei appunti.
Opzionale: server virtuali
Opzionale: utenti virtuali
<IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol TLSv1.2
Per aggiungere gli utenti è necessario usare un programmino accessorio chiamato ftpasswd, nel quale indicheremo tutti i parametri che caratterizzano l'utente.
# ftpasswd --passwd --file /etc/proftpd/virtual_users.passwd --sha512 --gid 99 --uid 99 --shell /sbin/nologin --name pincopallo --home /vhosts/example.net/site1/public_html
Chi può fare cosa
- cartelle in sola lettura
- cartelle in sola scrittura
- cartelle 'cieche' dove si può scrivere ma non vedere il contenuto caricato dagli altri
- Server con determinati utenti e non altri, o restrizioni sugli IP di provenienza
- cartelle con uno scrittore e scaricatori anonimi
Opzionale: NAT e collegamento PASV
Se, come nel mio caso, il server FTP si trova dietro un firewall e senza un IP pubblico, dovrete configurare anche il NAT, ossia la mappatura tra IP pubblico e IP privato del server, e con questo, spesso anche il collegamento dati PASV, cioè la modalità di trasferimento per cui le porte vengono fornite dal server e non dal client.
Il collegamento passivo consente di semplificare la configurazione del firewall. Infatti sarà il server ad aprire le porte di trasferimento dati e a comunicarle al client. Sul firewall sarà necessario solo indicare un range di porte, tipicamente tra la 50000 e la 60000, su cui consentire traffico FTP Dati.
Trovate qui la documentazione ufficiale per configurare le opzioni NAT e firewall.
Opzionale: connessione crittografata e TLS
Come saprete, l'FTP viene visto un po' male da chi si occupa di sicurezza. Infatti, nella sua versione orginale (e ormai arcaica) l'autenticazione FTP viene inviata in chiaro.
Per ovviare a questa evidente falla di sicurezza che ci espone ad orecchie indiscrete, gli esperti del settore hanno pensato a due soluzioni diverse: SFTP, ossia FTP Sicuro, e FTP su TLS (Transport Layer Security).
FTP su TLS fa lo stesso percorso dell'HTTPS, ossia stabilisce prima una connessione crittografata e certificata, e poi prosegue con i comandi standard ma su un canale protetto.
Anche questa opzione è stata trascurata dal creatore del modulo Webmin, infatti per abilitarla dobbiamo andare a modificare a manina i file di configurazione, ad esempio dall'ultima paginetta del moduo.
Nel file di configurazione principale, proftpd.conf attiviamo l'inclusione del modulo, e poi andiamo nel file di configurazione specifico ad impostare tutte le nostre preferenze.
Qui trovate la documentazione ufficiale proFTPd del modulo TFS (in inglese).
Le prime voci sono autoesplicative:
<IfModule mod_tls.c> TLSEngine on TLSLog var/log/proftpd/tls.log TLSProtocol TLSv1.2
Negli esempi trovate abilitati anche SSLv.2 e v.3. Carissimi, sto scrivendo nel 2021, sconsiglio vivamente di attivare qualunque protocollo più antico di TLSv.1.2, pubblicato nel 2008, ormai più di dieci anni fa!
Ma chi ci assicura?
Per utilizzare il TLS serve un certificato. Trovate in circolazione le istruzioni per generare un certificato da command line, ma, dato che stiamo utilizzando Webmin, possiamo anche sfruttare le sue potenzialità in questo ambito.
Dalla pagina di configurazione principale di Webmin, tra gli ultimi sottomoduli, troviamo 'SSL Encryption', come mostrato nella sua documentazione.
Da questo modulo è possibile vedere il certificato auto-firmato di Webmin, richiedere nuovi certificati auto-firmati, configurare la propria centrale di autorità (CA), e anche chiedere certificati esterni a Let's Encrypt.
Nel mio caso, ho semplicemente copiato il percorso del certificato auto-firmato di Webmin, e l'ho riutilizzato pari pari in proFTPd.
TLSRSACertificateFile /etc/webmin/miniserv.pem TLSRSACertificateKeyFile /etc/webmin/miniserv.pem
E' chiaro che, lato client, questo certificato viene segnalato come autentico ma non verificabile, e può richiedere un consenso esplicito da parte dell'utente per considerarlo attendibile. E' sicuramente più professionale chiedere un certificato Let's Encrypt per il nostro dominio, purché ci organizziamo anche per il suo rinnovo periodico.
Alziamo l'asticella, o forse no
Purtroppo non tutti i client, e tanto più i loro operatori, sono in grado di operare o di configurare un canale protetto. Per questo motivo, è possibile lasciare opzionale sia il collegamento sicuro TLS del canale dei comandi FTP, che quello dei dati. Nel nostro caso, abbiamo lasciato commentato l'istruzione di configurazione che obbliga i client ad usare il TLS.
# Are clients required to use FTP over TLS when talking to this server? # #TLSRequired on
Non bisogna dimenticare che se abbiamo scelto e configurato un trasferimento di tipo passivo o PASV, i collegamenti da proteggere sono due, quello dei comandi FTP e quello del trasferimento dei blocchi di dati. Sarebbe opportuno proteggere anche la seconda connessione, ma, ancora, non tutti i client hanno questo livello di sofisticazione.
Bisticci con FileZilla
Ho collaudato il server FTP usando FileZilla da Windows, ma non tutto è filato liscio, in particolare da quando ho attivato il TLS.
Come documentato su StackOverflow e in altri blog non sempre il TLS risolve tutti i problemi, anzi a volte ne crea di nuovi.
Stato: Connessione stabilita, in attesa del messaggio di benvenuto... Stato: Inizializzazione TLS... Stato: Verifica del certificato in corso... Stato: Connessione TLS stabilita. Stato: Accesso effettuato Stato: Recupero elenco cartella di "/"... Comando: CWD / Risposta: 250 comando CWD eseguito con successo Comando: TYPE I Risposta: 200 Tipo impostato a I Comando: PASV Risposta: 227 Entering Passive Mode (2,116,27,205,217,118). Comando: MLSD Risposta: 150 Apertura della connessione dati in modalità BINARY per MLSD Risposta: 425 Impossibile aprire la connessione dati: Operazione non permessa Errore: Non è stato possibile leggere il contenuto della cartella Stato: Recupero elenco cartella di "/"... Comando: CDUP Risposta: 250 comando CDUP eseguito con successo
Come vedete dal tracciato, il comando MLSD fallisce. Lato proFTPd troverete l'errore corrispondente nel log TLS.
Una possibile soluzione sta nel rilassare le richieste che facciamo ai client TLS, esattamente come indicato nei commenti del file tls.conf
# ... or the same with relaxed session use for some clients (e.g. FireFtp) TLSOptions NoCertRequest EnableDiags NoSessionReuseRequired
Nessun commento:
Posta un commento