Server FTP su Debian: come installare e configurare un proprio server

Chi volesse creare e aprire regolarmente dei file di grandi dimensioni su un server, dovrebbe affidarsi a una tecnica di trasmissione adeguata. Tra le possibili soluzioni più richieste rientra ancora oggi il trasferimento dei file tramite File Transfer Protocol (FTP). Il protocollo di trasferimento per le reti IP, che agisce sul livello di applicazione, oltre al trasporto di dati tramite le porte TCP 20 e 21, offre all’utente anche la possibilità di creare directory e di strutturarle a proprio piacimento. Per questo motivo sarà necessario ricorrere solo a un client sul server FTP e basterà collegare i due componenti tramite Internet, perciò la tecnica di trasmissione viene utilizzata spesso per l’upload e il download di file sullo spazio web.

Chi si appoggia a un provider per usufruire di queste risorse del sito, riceve solitamente dei dati di login specifici con cui si può instaurare una connessione al server FTP del provider. Chi gestisce il server autonomamente può anche utilizzare questa tecnica di trasmissione dei file, installando e configurando il proprio server di conseguenza. Questa guida spiega come configurare un server FTP di questo tipo su Debian (comprensivo di crittografia TLS).

Consiglio

Desiderate salvare o trasferire dati? Allora noleggiate un server secure FTP online presso 1&1 IONOS. Trasferimento sicuro grazie a SSH e SSL/TLS, sono inclusi anche backup quotidiani.

Installazione di un server FTP su Debian

Prima di cimentarvi con l’installazione e la configurazione, dovete prima di tutto installare il software adeguato per il server. Per Linux esistono diversi server FTP che sono per la maggior parte open source e si trovano solitamente nella gestione dei pacchetti della rispettiva distribuzione. Una delle applicazioni più conosciute è ProFTPD, con licenza GPL, che grazie alla sua struttura modulare è estremamente ampliabile. Il file di configurazione principale funziona sulla base di direttive e gruppi di direttive, familiari a ogni amministratore che conosce i web server Apache. Anche Debian esegue ProFTPD di default dal repository software. L’installazione avviene quindi nel modo classico dal terminale, dando il seguente comando:

sudo apt-get install proftpd

Per concludere l’installazione bisogna decidere infine se si vuole utilizzare ProFTPD nella modalità server (standalone) o come uno dei servizi controllati da inetd. Nel primo caso il server FTP si occupa autonomamente delle richieste in entrata, mentre nella seconda variante il “super server” inetd/xinetd accoglie le richieste e le inoltra al server FTP (possibilità interessante solo se si prevede di avere pochissimo traffico FTP).

Tutorial per installare un server FTP su Debian: i passaggi di configurazione più importanti

Dopo l’installazione potete quindi iniziare a configurare ProFTPD. Il file di configurazione necessario proftpd.conf si trova nella directory /etc/proftpd/. Per modificarlo, apritelo semplicemente con un editor a vostra scelta. Con il programma standard Debian nano ciò è ad esempio possibile con il seguente comando dal terminale:

sudo nano /etc/proftpd/proftpd.conf

Nelle diverse righe trovate le funzioni e le opzioni di impostazione più importanti del server FTP su Debian. Ogni componente riceve così una propria riga e richiede dei valori predefiniti: ad esempio se si tratta di utilizzare o meno una funzione sono possibili il valore “on” (funzione attivata) o il valore “off” (funzione disattivata). In aggiunta può essere anteposta a una riga il simbolo del cancelletto(#) per “commentarla”. Il server con ProFTPD ignora quindi la riga completamente, perciò questa annotazione si presenta come un’altra opzione per disattivare le funzioni. Principalmente il simbolo del cancelletto serve per fare dei commenti alle diverse opzioni di impostazione per migliorare la leggibilità del proftpd.conf.

Consiglio

Al posto di utilizzare il file proftpd.conf potete anche creare un vostro file di configurazione nella directory /etc/proftpd/conf.d/, che rimane invariata dagli aggiornamenti del software FTP. In questo modo riducete tramite un semplice passaggio il rischio che le vostre impostazioni vadano perdute. Tramite la direttiva Include si possono integrare le specificazioni server salvate nella cartella conf.d nel file principale (nella configurazione standard avviene automaticamente).

Impostazioni di base: nome del server, directory FTP e simili

Prima di scendere nei dettagli della configurazione del vostro server FTP su Debian, dovete modificare il setup di base. In questo vi sono comprese impostazioni elementari come l’indicazione del nome host o della directory del server che volete mettere a disposizione per l’upload e il download dei file. Inoltre avete diverse possibilità di configurazione che si riferiscono a potenziali utenti FTP, come risulta chiaro dalla seguente configurazione di esempio:

# Indicazione del nome host e messaggio di benvenuto
ServerName  "nomehost/indirizzo-ip"
DisplayLogin  "Il login al server FTP su Debian è andato a buon fine!“ 

# Linee guida generali per il login
<Global>
  # Consentito solo l’accesso alle shell definite in /etc/shells
  RequireValidShell  on
  # Login di root negato 
  RootLogin  off
  # Indicazione della directory FTP alla quale gli utenti possono accedere
  DefaultRoot  Directory
</Global>

# Definire gli utenti/i gruppi di utenti autorizzati per il login FTP
<Limit LOGIN>
  # Il login è possibile solo per gli utenti del gruppo di esempio ftpuser
  # Al posto di inserire una lunga lista, viene negato l’accesso al gruppo autorizzato (!)  DenyGroup  !ftpuser
</Limit>

In questa configurazione di base viene dato agli utenti l’accesso a una specifica directory. Risulta utile se questi ad esempio sono coinvolti nella gestione di un progetto web e hanno perciò bisogno di ampi permessi di accesso. Invece, se la funzione del server FTP su Linux consiste nell’offrire agli utenti solo un luogo di memorizzazione per i loro dati, dovreste configurare ProFTPD di modo che l’accesso alla directory home sia limitato:

# Permettere l’accesso agli utenti solo alla directory home
DefaultRoot ~

Creare utenti FTP

Creando un nuovo utente ProFTPD, dovreste sempre definire /bin/false come login della shell. In questo modo vi assicurate che l’utente possa accedere al server FTP e non a tutto il sistema. Inserite quindi prima di tutto /bin/false nel file delle shell ammesse con il seguente comando del terminale:

sudo echo "/bin/false" >> /etc/shells

Infine potete creare un primo utente:

sudo adduser user1 --shell /bin/false --home /home/user1

In questo esempio create un account utente con il nome di “user1” e nello stesso passaggio create anche la sua directory home. Infine scegliete una password per il nuovo account utente e confermate il profilo. Ora per collegare davvero questo nuovo utente con il server FTP su Debian e caricare i file nella sua directory esclusiva (per poi poterli scaricare da qui), indicate la sua directory home nel proftpd.conf:

<Directory /home /user1>
  Umask 022 
  AllowOverwrite off
  <Limit LOGIN>
    AllowUser user1
    DenyAll
  </Limit>
  <Limit ALL>
    AllowUser user1
    DenyAll
  </Limit>
</Directory>

Questo esempio di codice limita la directory in diversi modi per farla diventare un luogo privato di memorizzazione per i file di user1: con il comandoUmask (022) vengono prima di tutto assegnati tutti i permessi al proprietario della directory. Gli altri utenti, invece, possono solo leggere i file, mentre per eseguirli necessitano dell’autorizzazione conferita dal proprietario. La direttiva disattivata AllowOverwrite impedisce che nell’upload dei file possano venire sovrascritti dei dati già salvati. Infine il login FTP (Limit LOGIN) e l’esecuzione di comandi FTP (Limit ALL) sono bloccati per tutti gli utenti tranne lo user1.

Consiglio

Al posto di vietare l’esecuzione di tutti i comandi FTP, potete anche impedire singole operazioni. In questo modo si può generare ad esempio anche una directory in cui l’utente può caricare solo file. Trovate un riepilogo dettagliato delle diverse opzioni di impostazione nei manuali online.

Consentire l’accesso anonimo

Se volete configurare il vostro server FTP su Debian, di modo che serva come server per i download pubblici, nella maggior parte dei casi si vuole fare in modo che gli utenti possano accedere anonimamente ai file disponibili. In questo caso, servendovi di chmod, definite prima di tutto i permessi di accesso necessari per la successiva directory di download, che qui abbiamo chiamato esemplificativamente /home/ftpdownload:

sudo chmod 755 -R /home/ftpdownload

Il proprietario della directory dispone quindi di tutti i permessi(7= lettura, scrittura ed esecuzione), mentre il gruppo di utenti e tutti gli altri utenti possono solo leggerla ed eseguirla (5). Una volta definiti i permessi, si può configurare l’accesso anonimo nel file proftpd.conf:

<Anonymous ~ftp>
User  ftp
Group  ftpgroup

# Possibili profili di login per i client
UserAlias  anonymous  ftp

# Nascondere le proprietà utente e dei gruppi e indicazione del numero massimo di client
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell  off
MaxClients  10

<Directory *>
  <Limit WRITE>
    DenyAll
  </Limit>
</Directory>
</Anonymous>

Per fare in modo che avvenga il login sul server FTP su Debian con il profilo ftp, dovete aggiungerlo al gruppo ftpuser:

sudo adduser ftp ftpgroup

Configurare la crittografia SSL/TLS

Il protocollo FTP trasmette sia le informazioni di login che i dati inviati in un testo in chiaro. Se volete configurare un server ProFTPD privato, che non debba essere accessibile a tutti, si consiglia di conseguenza di crittografare il login. La soluzione più utilizzata è la crittografia tramite SSL/TLS che potete configurare facilmente utilizzando il software libero OpenSSL. Il toolkit di crittografia è compreso di default nella gestione del pacchetto Debian ed è già installato. In alternativa si può eseguire l’installazione nel modo consueto:

apt-get install openssl

Primo passaggio: generare certificato e chiavi

Successivamente utilizzate OpenSSL per creare un certificato. Create innanzitutto la cartella destinata a contenerlo nella directory ProFTDP:

mkdir /etc/proftpd/ssl

Ora generate il certificato (proftpd.cert.pem) e la chiave (proftpd.key.pem) con la durata di un anno per il vostro server FTP su Linux indicando il luogo di memorizzazione con il seguente comando:

openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

In aggiunta è necessario indicare alcune informazioni per registrare il certificato come previsto:

  • Country Name(2 letter code): codice del paese, ad esempio “IT“ per Italia
  • State or Province Name(full name): Regione, ad esempio “Lazio
  • Locality Name (eg, city): città, ad esempio „Milano
  • Organization Name (eg, company): nome dell’azienda o il vostro nome
  • Organizational Unit Name (eg, company): indicazione del reparto (se previsto), ad esempio “IT
  • Common Name (eg, YOUR name): indicazione del dominio da proteggere, ad esempio “ftp.example.com.
  • Email Address: indirizzo e-mail.

Secondo passaggio: attivare SSL/TLS su ProFTPD

Dopo che avete creato il vostro certificato comprensivo di chiave privata, dovete attivare la tecnologia di crittografia per il server ProFTPD. A questo scopo il server FTP su Debian mette a disposizione il modulo mod_tls, che è installato di default ma disattivato. Per la prima attivazione sono necessarie diverse modifiche nel file proftpd.conf. Aprite il file di configurazione e cercate la voce seguente:

<IfModule mod_tls.c>
  TLSEngine  off
</IfModule>

Assegnate alla direttiva TLSEngine il valore “on” e ampliate la parte così:

<IfModule mod_tls.c>
  TLSEngine      on
  TLSLog        /var/log/proftpd/tls.log
  TLSProtocol      TLSv1 TLSv1.1 TLSv1.2
  TLSRSACertificateFile    /etc/proftpd/ssl/proftpd.cert.pem
  TLSRSACertificateKeyFile  /etc/proftpd/ssl/proftpd.key.pem
  TLSVerifyClient      off
  TLSRequired      on
</IfModule>

In questo modo non solo avete attivato la crittografia SSL/TLS per il vostro server FTP su Debian, ma nello stesso passaggio avete anche apportato le impostazioni più importanti. Così è ugualmente definito il file di log per le registrazioni delle connessioni FTP (TLSLog) e i percorsi al certificato (TLSRSACertificateFile) e alla chiave (TLSRSACertificateKeyFile). Inoltre sono indicate anche le possibili versioni del protocollo (TLSProtocol). Le ultime due righe fanno sì che il modulo non verifichi i certificati presentati dal client (TLSVerifyClient) e che la crittografia sia il prerequisito di base per stabilire la connessione (TLSRequired). Le nuove impostazioni saranno valide dopo il riavvio del server ProFTPD:

sudo /etc/init.d/proftpd restart

Terzo passaggio: registrarsi tramite SSL/TLS sul server ProFTPD

Se avete attivato SSL/TLS per ProFTPD, come consigliato su questo tutorial per il server FTP su Debian, gli utenti hanno bisogno di un client FTP, che supporta il tentativo di connessione crittografato. Tra questi uno dei più conosciuti è FileZilla, disponibile non solo per Debian e altre distribuzioni Linux, ma anche per macOS e Windows. In questo modo il programma open source si presenta come la soluzione ideale per voi e per tutti gli altri utenti per accedere al server FTP da diverse piattaforme.

Nel server manager di FileZilla inserite al momento di scegliere il tipo di server la variante sicura FTPS (“FTP su TLS/SSL esplicito”), invece di FTP. La prima volta che ci si connette al server è inoltre necessario accettare il certificato.

Configurazione di ProFTPD: consigli e trucchi

Le opzioni di configurazione presentate sono solo alcune delle soluzioni possibili. Lo sfaccettato software FTP permette scenari ancora più specifici e complessi per la configurazione del proprio server. Il sito ufficiale di ProFTPD offre al riguardo innumerevoli informazioni utili. La documentazione online disponibile liberamente comprende anche alcuni setup di esempio, guide dettagliate, FAQ e spiegazioni sulle singole direttive. Inoltre si trovano informazioni su diversi moduli standard e aggiuntivi.

Come configurare facilmente il server FTP su Debian: la configurazione tramite GUI

Nel tutorial vi abbiamo mostrato come configurare un server FTP con ProFTPD dalla riga di comando e come apportare modifiche manuali nel file di configurazione. Come per molti programmi Linux/Unix, ci sono anche per i software FTP diverse interfacce grafiche che consentono di configurare il server senza ricorrere al terminale.

Anche la raccolta GUI Gadmintools comprende una simile interfaccia utente che si può installare facilmente tramite la gestione dei pacchetti. L’interfaccia con il nome gadmin-proftpd vi supporta nel riavvio del vostro server FTP su Debian, nella creazione dei profili utente o nell’apportare le modifiche nel file proftpd.conf. Quest’ultimo funziona senza che dobbiate aprire il file di configurazione; le voci nuove o modificate vengono trasmesse automaticamente.

N.B.

L’utilizzo di un’interfaccia grafica non esclude la configurazione e la gestione parallela del server dalla riga di comando.

Possibili errori nella configurazione del server

In alcuni casi un riavvio del server ProFTPD può comportare la ricezione dei seguenti messaggi di errore:

„mod_tls_memcache/0.1: notice: unable to register 'memcache' SSL session cache: Memcache support not enabled“

In questo caso il problema consiste nel fatto che i moduli cache mod_tls_memcache nella compilazione di ProFTPD sono stati attivati automaticamente come componenti di SSL/TLS. Se avete configurato la crittografia SSL/TLS, il modulo in teoria si occupa (se voluto) della memorizzazione nella cache delle sessioni crittografate FTP. Dato però che non serve di default il caching della sessione, non sono state configurate le impostazioni necessarie affinché il modulo funzioni, il che porta al messaggio di errore da parte di ProFTDP. La soluzione al problema è semplice: commentate il modulo o il processo di caricamento del modulo nel file di configurazione.

# LoadModule mod_tls_memcache.c

Oltre al problema del modulo di caching, anche una connessione errata rientra tra le complicazioni che possono verificarsi dopo la configurazione del server FTP su Debian. Per verificare la presenza di questo problema, potete ricorrere a diverse opzioni di analisi:

1. Testare se funziona il server ProFTPD:

sudo service proftpd status

2. Testare se il server ProFTPD ascolta dalla porta 21 per registrare le richieste FTP in entrata:

sudo netstat -tlp|grep proftpd

3. Verificare i messaggi di errore nel log di ProFTPD:

sudo tail -20 /var/log/proftpd/proftpd.log

4. Verificare i messaggi di errore nel log TLS:

sudo tail -20 /var/log/proftpd/tls.log

5. Test di connessione sulla porta 21 con telnet:

sudo telnet 192.0.2.10 21

6. Test di connessione sulla porta 21 con TLS:

sudo openssl s_client -connect 192.0.2.10:21 -stattls ftp

Un momento! Prima di lasciarci scopri
la nostra offerta per il rientro dalle ferie:
dominio .it a 1 € per il primo anno!

Primo anno a 1 € IVA escl.,
poi 10 €/anno IVA escl.

Inserisci il dominio desiderato nella barra di ricerca per verificarne la disponibilità.