File Transfer Protocol (FTP) è una delle tecnologie più diffuse per il trasferimento di file ed è spesso usato per caricare e scaricare file su spazi web. Qui ti spieghiamo come configurare un server FTP con crittografia TLS su Debian.

Installazione di un server FTP su Debian

Prima di cimentarti con l’installazione e la configurazione, devi 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 Linux.

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 e a ogni amministratrice che conosce i server web Apache. Anche Debian esegue ProFTPD per impostazione predefinita dal repository software. L’installazione avviene quindi nel modo classico dal terminale, dando il seguente comando:

sudo apt update
sudo apt install proftpd
sudo apt install proftpd-mod-crypto
bash

Se vorresti che il server FTP si avvii automaticamente al riavvio del sistema, dovresti eseguire anche il seguente comando:

sudo systemctl enable proftpd
bash
Consiglio

Desideri archiviare o trasferire dati? Allora noleggia subito un Server secure FTP su IONOS. In questo modo beneficerai di un trasferimento sicuro grazie a SSH e SSL/TLS con backup giornalieri inclusi.

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

Server virtuali (VPS)
Virtualizzazione totale con accesso root completo
  • Traffico illimitato e fino a 1 Gbit/s di larghezza di banda
  • Storage SSD NVMe veloce
  • Plesk Web Host Edition incluso

Server FTP su Debian: 3 scenari abbinati alla tariffa giusta di server IONOS

Non sai ancora con certezza quale sia la configurazione hardware e di rete necessaria per il tuo server FTP su Debian? Nella tabella seguente abbiamo elencato tre possibili scenari di implementazione per un server FTP e suggerito la tariffa server IONOS più adatta per ciascun caso.

Scenario del server FTP Tariffa IONOS più adatta
Server web di piccole dimensioni VPS Linux M
Server web più grande VPS Linux XL
Server FTP aziendale Server dedicato AMD Ryzen XXL-128 NVMe

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

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

sudo nano /etc/proftpd/proftpd.conf
bash

Nelle diverse righe trovi 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.

Consiglio

Al posto di utilizzare il file proftpd.conf puoi anche creare un tuo file di configurazione nella directory /etc/proftpd/conf.d/, che rimane invariata dagli aggiornamenti del software FTP. In questo modo riduci tramite un semplice passaggio il rischio che le tue 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 tuo server FTP su Debian, devi modificare la configurazione di base. In questo vi sono comprese impostazioni elementari come l’indicazione del nome host o della directory del server che desideri mettere a disposizione per l’upload e il download dei file. Inoltre, hai 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    Percorso-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, dovresti 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 nuovi utenti ProFTPD, dovresti sempre definire /bin/false come login della shell. In questo modo ti assicuri che l’utente possa accedere al server FTP e non a tutto il sistema. Inserisci quindi prima di tutto /bin/false nel file delle shell ammesse con il seguente comando del terminale:

sudo sh -c 'echo "/bin/false" >> /etc/shells'
bash

Infine, puoi creare un primo account utente:

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

In questo esempio crei un account utente con il nome di “user1” e nello stesso passaggio crei anche la sua directory home. Infine, scegli una password per il nuovo account e conferma il profilo. Ora per collegare davvero questo nuovo utente con il server FTP su Debian e caricare o scaricare i file nella sua directory esclusiva, indica la sua directory home nel file 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 comando Umask (022) vengono assegnati tutti i permessi all’account proprietario. Gli altri account, invece, possono solo leggere i file, mentre per eseguirli necessitano dell’autorizzazione conferita dall’account 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, puoi anche impedire singole operazioni. In questo modo si può generare ad esempio anche una directory in cui l’utente può caricare solo file. Trovi un riepilogo dettagliato delle diverse opzioni di impostazione nei manuali online.

Consentire l’accesso anonimo

Se desideri configurare il tuo 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, servendoti di chmod, definisci 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
bash

L’account 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, devi aggiungerlo al gruppo ftpuser:

sudo adduser ftp ftpgroup
bash

Configurare la crittografia SSL/TLS

Il protocollo FTP trasmette sia le informazioni di login che i dati inviati in un testo in chiaro. Se desideri configurare un server ProFTPD privato, che non debba essere accessibile a tutti, si consiglia di conseguenza di crittografare il login. Per farlo, ti basterà impostare il software libero OpenSSL. Il toolkit di crittografia è compreso per impostazione predefinita nella gestione del pacchetto Debian ed è già installato. In alternativa si può eseguire l’installazione nel modo consueto:

sudo apt install openssl
bash

Primo passaggio: generare certificato e chiavi

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

sudo mkdir /etc/proftpd/ssl
bash

Ora genera il certificato (proftpd.cert.pem) e la chiave (proftpd.key.pem) con la durata di un anno per il tuo 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
bash

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 tuo 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.
Server dedicati
Performance e innovazione
  • Hardware dedicato al 100%
  • Fatturazione al minuto
  • Potenziato dai processori Intel® Xeon® e AMD

Secondo passaggio: attivare SSL/TLS su ProFTPD

Dopo che hai creato il tuo certificato comprensivo di chiave privata, devi attivare la tecnologia di crittografia per il server ProFTPD. A questo scopo il server FTP su Debian mette a disposizione il modulo mod_tls. Per l’attivazione sono necessarie diverse modifiche nel file tls.conf. Apri il file di configurazione e cerca la voce seguente:

<IfModule mod_tls.c>
    TLSEngine    off

Assegna alla direttiva TLSEngine il valore “on” e amplia la parte così (ad esempio eliminando il commento con il cancelletto):

<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 hai attivato la crittografia SSL/TLS per il tuo server FTP su Debian, ma nello stesso passaggio hai 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
bash

Terzo passaggio: registrarsi tramite SSL/TLS sul server ProFTPD

Se hai 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 accedere al server FTP da diverse piattaforme.

Nel server manager di FileZilla inserisci 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.

Se la connessione TLS non può essere stabilita in FileZilla, potrebbe essere necessario caricare manualmente il modulo mod_tls. A questo scopo, inserisci la seguente riga all’inizio di proftpd.conf:

LoadModule mod_tls.c

Per applicare questa modifica, devi riavviare il server:

sudo systemctl restart proftpd
bash
Consiglio

L’SSH File Transfer Protocol utilizza SSH invece di TLS/SSL e rappresenta un’alternativa leggera e di facile utilizzo a FTPS.

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.

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 hai configurato la crittografia SSL/TLS, il modulo in teoria si occupa (se lo si desidera) della memorizzazione nella cache delle sessioni crittografate FTP. Dato però che non serve per impostazione predefinita 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 ProFTPD. La soluzione al problema è semplice: commenta 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, puoi ricorrere a diverse opzioni di analisi:

1. Testare se funziona il server ProFTPD:

sudo service proftpd status
bash

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

sudo netstat -tlp|grep proftpd
bash

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

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

4. Verificare i messaggi di errore nel log TLS:

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

5. Test di connessione sulla porta 21 con telnet:

sudo telnet [Indirizzo IP] 21
bash

6. Test di connessione sulla porta 21 con TLS:

sudo openssl s_client -connect  [Indirizzo IP]:21 -starttls ftp
bash
Hai trovato questo articolo utile?
Vai al menu principale