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

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](https://www.ionos.it/digitalguide/server/know-how/file-transfer-protocol/) che sono per la maggior parte **[open source](https://www.ionos.it/digitalguide/server/know-how/il-concetto-di-open-source/)** e si trovano solitamente nella gestione dei pacchetti della rispettiva [distribuzione Linux](https://www.ionos.it/digitalguide/server/configurazione/distribuzioni-linux/).

Una delle applicazioni più conosciute è [ProFTPD](http://www.proftpd.org "Pagina iniziale del progetto"), 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](https://www.ionos.it/digitalguide/server/know-how/cose-apache/). Anche [Debian](https://www.ionos.it/digitalguide/server/know-how/debian-il-sistema-operativo-universale/) esegue **ProFTPD per impostazione predefinita dal repository software**. L’installazione avviene quindi nel modo classico dal terminale, dando il seguente comando:

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

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

```bash
sudo systemctl enable proftpd
```

Consiglio Desideri archiviare o trasferire dati? Allora noleggia subito un [Server secure FTP](https://www.ionos.it/hosting/server-ftp "Server secure FTP di IONOS") su IONOS. In questo modo beneficerai di un trasferimento sicuro grazie a [SSH](https://www.ionos.it/aiuto/hosting/impostazione-e-gestione-degli-accessi-ssh/che-cose-ssh/ "Che cos’è SSH? – IONOS Aiuto") e SSL/[TLS](https://www.ionos.it/digitalguide/server/sicurezza/tls-transport-layer-security/) 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 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.

<table>
  <thead>
    <tr>
      <th>Scenario del server FTP</th>
      <th>Tariffa IONOS più adatta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Server web di piccole dimensioni</td>
      <td>VPS Linux M</td>
    </tr>
    <tr>
      <td>Server web più grande</td>
      <td>VPS Linux XL</td>
    </tr>
    <tr>
      <td>Server FTP aziendale</td>
      <td>Server dedicato AMD Ryzen XXL-128 NVMe</td>
    </tr>
  </tbody>
</table>

## 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:

```bash
sudo nano /etc/proftpd/proftpd.conf
```

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](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/hostname/) 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:

```none
# 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:

```none
# 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:

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

Infine, puoi creare un primo account utente:

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

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**:

```none
<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](http://www.proftpd.org/docs/howto/Limit.html "Manuale di ProFTPD: configurazione di “Limits”").

### 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:

```bash
sudo chmod 755 -R /home/ftpdownload
```

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:

```none
<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:

```bash
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 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:

```bash
sudo apt install openssl
```

#### Primo passaggio: generare certificato e chiavi

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

```bash
sudo mkdir /etc/proftpd/ssl
```

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:

```bash
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 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.

#### 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:

```none
<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):

```none
<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:

```bash
sudo /etc/init.d/proftpd restart
```

#### 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](https://www.ionos.it/digitalguide/server/configurazione/tutorial-sul-programma-ftp-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:

```none
LoadModule mod_tls.c
```

Per applicare questa modifica, devi riavviare il server:

```bash
sudo systemctl restart proftpd
```

Consiglio L’[SSH File Transfer Protocol](https://www.ionos.it/digitalguide/server/know-how/sftp-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](http://proftpd.org/docs/ "proftpd.org: manuali 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:

```none
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.

```none
# 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:**

```bash
sudo service proftpd status
```

**2. Testare se il server ProFTPD ascolta dalla [porta TCP](https://www.ionos.it/digitalguide/server/know-how/porte-tcp-porte-udp/) 21 per registrare le richieste FTP in entrata:**

```bash
sudo netstat -tlp|grep proftpd
```

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

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

**4. Verificare i messaggi di errore nel log TLS:**

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

**5. Test di connessione sulla porta 21 con telnet:**

```bash
sudo telnet [Indirizzo IP] 21
```

**6. Test di connessione sulla porta 21 con TLS:**

```bash
sudo openssl s_client -connect  [Indirizzo IP]:21 -starttls ftp
```


This is a markdown version of: [https://www.ionos.it/digitalguide/server/configurazione/configurare-un-server-ftp-su-debian-con-proftpd/](https://www.ionos.it/digitalguide/server/configurazione/configurare-un-server-ftp-su-debian-con-proftpd/) for AI/LLM consumption.