# Serveur FTP sous Debian : installer et configurer votre serveur

Le *File-Transfer-Protocol* (FTP) fait partie des techniques de transfert de fichiers les plus demandées et est souvent utilisé pour le téléchargement et l’envoi de fichiers sur des espaces Web. Découvrez comment configurer un serveur FTP sous Debian avec un chiffrement TLS.

## Installer un serveur FTP sur Debian

Avant de pouvoir vous familiariser avec l’installation et la configuration, vous devez tout d’abord trouver et installer le logiciel serveur approprié. Pour Linux, il existe différents serveurs [FTP](https://www.ionos.fr/digitalguide/serveur/know-how/file-transfer-protocol/), dont la plupart sont **[open source](https://www.ionos.fr/digitalguide/serveur/know-how/quest-ce-que-lopen-source/)** et se trouvent généralement dans la gestion des paquets de la [distribution Linux](https://www.ionos.fr/digitalguide/serveur/configuration/les-distributions-linux/).

L’une des applications les plus populaires est [ProFTPD](http://www.proftpd.org/ "Site Internet du projet ProFTPD"), sous licence GPL, qui est très extensible grâce à sa conception modulaire. Le fichier de configuration principal fonctionne sur la base de directives et de groupes de directives qui devraient sembler familiers à tout administrateur habitué aux [serveurs Web Apache](https://www.ionos.fr/digitalguide/serveur/know-how/quest-ce-quapache/). [Debian](https://www.ionos.fr/digitalguide/serveur/know-how/debian-le-logiciel-systeme-universel/) maintient aussi par défaut ProFTPD dans le répertoire logiciel. L’installation s’effectue donc de manière habituelle via le terminal et avec la commande suivante :

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

Si vous souhaitez que le serveur FTP démarre automatiquement au redémarrage du système, vous devez également exécuter la commande suivante :

```bash
sudo systemctl enable proftpd
```

Conseil Vous souhaitez un transfert sécurisé de fichiers ? Louez un [serveur Secure FTP](https://www.ionos.fr/hebergement/serveur-ftp "Serveur secure FTP gratuit | Hébergement avec SFTP en ligne") avec IONOS. Le transfert est sécurisé grâce à [SSH](https://www.ionos.fr/assistance/hebergement/configurer-et-gerer-les-acces-ssh/quest-ce-que-ssh/ "Qu’est-ce que SSH ?") et SSL/[TLS](https://www.ionos.fr/digitalguide/serveur/securite/tls-transport-layer-security/) et des sauvegardes quotidiennes sont incluses.

Pour terminer l’installation, il est nécessaire de décider si vous voulez utiliser ProFTPD en **mode serveur autonome** (*standalone*) ou en tant que service contrôlé par *inetd*. Dans le premier cas, le serveur FTP se charge lui-même des requêtes entrantes. Dans la deuxième variante, le « **superserveur** » *inetd/xinetd* reçoit les requêtes et les transmet au serveur FTP (ce qui est intéressant uniquement si peu de trafic FTP est attendu).

## Serveur FTP sur Debian : 5 scénarios avec leur tarif de serveur IONOS

Vous n’êtes pas sûr de la configuration matérielle et réseau dont vous avez besoin pour votre serveur FTP Debian ? Dans le tableau suivant, nous avons listé trois scénarios d’utilisations possibles pour un serveur FTP et proposé à chaque fois le tarif serveur de IONOS le plus adapté.

<table>
  <thead>
    <tr>
      <th>Scénario de serveur FTP</th>
      <th>Tarif IONOS adapté</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Petit serveur Web</td>
      <td>[VPS Linux M](https://my.ionos.fr/server-configuration/?skipContractSelection=true&amp;skipDomainCheck=true&amp;cmsIdentifier=tariff-core-vps-linux-m&amp;datacenter=fr/nbz&amp;pageName=serveurs/vps "Configuration du serveur VPS Linux M - IONOS")</td>
    </tr>
    <tr>
      <td>Serveur Web plus grand</td>
      <td>[VPS Linux XL](https://my.ionos.fr/server-configuration/?skipContractSelection=true&amp;skipDomainCheck=true&amp;cmsIdentifier=tariff-core-vps-linux-xl&amp;datacenter=fr/nbz&amp;pageName=serveurs/vps "Configuration du serveur VPS Linux XL - IONOS")</td>
    </tr>
    <tr>
      <td>Serveur FTP Entreprise</td>
      <td>[Serveur dédié AMD Ryzen XXL-128 NVMe](https://my.ionos.fr/server-configuration/?skipContractSelection=true&amp;skipDomainCheck=true&amp;cmsIdentifier=tariff-bmpp-ar12-128-nvme&amp;datacenter=22820&amp;pageName=serveurs/serveurs-amd "Configuration du serveur dédié AMD Ryzen XXL-128 NVMe - IONOS")</td>
    </tr>
  </tbody>
</table>

## Serveur FTP sur Debian : tutoriel avec les étapes importantes de la configuration

Après l’installation, vous pouvez commencer à **configurer ProFTPD**. Le fichier de configuration *proftpd.conf* qui est nécessaire, se trouve dans */etc/proftpd/*. Pour l’éditer, il suffit de l’ouvrir avec **l’éditeur de votre choix**. Avec le programme standard Debian *nano*, cela peut être fait par exemple en utilisant la commande de terminal suivante :

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

Dans les différentes lignes, vous trouverez les fonctions et paramètres les plus importants du serveur FTP sous Debian. **Chaque composant reçoit une ligne séparée et nécessite des valeurs fixes** : par exemple, si une fonction doit être utilisée, la valeur `on` (fonction activée) ou la valeur `off` (fonction désactivée) sont possibles. De plus, le **signe `#`** peut être placé devant une ligne pour « commenter ». **Le serveur ProFTPD ignore alors complètement la ligne** ; cela constitue donc une méthode alternative pour **désactiver certaines fonctions**.

Conseil Au lieu du fichier *proftpd.conf*, vous pouvez également utiliser **votre propre fichier de configuration** et le stocker dans */etc/proftpd/conf.d/*. Ce répertoire n’est pas affecté par les mises à jour du logiciel FTP, ce qui vous permet de réduire le risque de perdre vos paramètres. Les spécifications du serveur stockées dans le dossier *conf.d* peuvent alors être facilement incluses dans le fichier principal en utilisant la **directive `include`**, ce qui se fait automatiquement avec la configuration par défaut.

### Configurations de base : nom de serveur, répertoire FTP etc.

Avant d’entrer dans le détail de la configuration de votre serveur FTP sous Debian, vous devez tout d’abord ajuster la configuration de base. Il s’agit de paramètres élémentaires tels que la **spécification du [nom d’hôte du serveur](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/nom-hote/) ou du répertoire** que vous souhaitez mettre à disposition pour **le chargement et le téléchargement** des fichiers. Vous disposez aussi de diverses options de configuration qui se réfèrent à des utilisateurs FTP potentiels, comme le montre l’exemple de configuration suivant :

```none
# Spécification du nom d’hôte et du message de bienvenue
ServerName "nom d’hôte/adresse IP"
DisplayLogin "La connexion au serveur FTP sous Debian s’est effectuée avec succès !"
# Instructions générales de connexion
<Global>
    # Autoriser l’accès uniquement avec les interfaces systèmes, qui sont définies dans /etc/shells
    RequireValidShell on
    # Refuser la connexion root
    RootLogin off
    # Spécifie le répertoire FTP auquel l’utilisateur est autorisé à accéder
    DefaultRoot /chemin/du/répertoire  # Remplacez par le répertoire souhaité
</Global>
# Définir les utilisateurs/groupes d’utilisateurs autorisés pour la connexion FTP
<Limit LOGIN>
    # L’enregistrement n’est possible que pour les utilisateurs du groupe de référence ftpuser
    # Au lieu d’une longue liste, le groupe autorisé est simplement nié (!) 
    DenyGroup !ftpuser
</Limit>
```

Dans cette configuration de base, les utilisateurs ont accès à un répertoire spécifique. Cela est notamment utile si les utilisateurs sont impliqués dans la maintenance de sites Web et ont besoin de **droits d’accès étendus**. Cependant, si la fonction du serveur FTP Linux est d’offrir aux utilisateurs un seul emplacement pour leurs fichiers, vous devez configurer ProFTPD de sorte que l’accès au **répertoire d’origine** soit restreint :

```none
# Autoriser uniquement les utilisateurs à accéder à leur répertoire d’origine
DefaultRoot ~
```

### Créer un utilisateur FTP

Lorsque vous créez un nouvel utilisateur ProFTPD, vous devez toujours définir `/bin/false` comme l’interface système (Shell) de connexion. De cette façon, vous êtes assurés que l’utilisateur ne peut accéder qu’au serveur FTP et non à l’ensemble du système. Utilisez la commande de terminal suivante pour ajouter `/bin/false` dans le fichier des interfaces système (Shells) autorisées :

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

Vous pouvez ensuite créer un premier utilisateur :

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

Dans cet exemple, vous créez un compte utilisateur avec le nom « user1 » et attribuez son répertoire d’origine dans la même étape. Enfin, attribuez un **mot de passe** pour le nouveau compte utilisateur et confirmez le profil. Pour que cet utilisateur nouvellement créé puisse se connecter au serveur FTP de Debian et (télé)charger des fichiers dans son répertoire exclusif, spécifiez enfin son **répertoire d’origine** dans le fichier *proftpd.conf* :

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

Cet exemple de code restreint l’accès au répertoire de plusieurs manières afin d’en faire un référentiel pour les fichiers de l’utilisateur « user1 » : avec la commande `Umask(022)`, le propriétaire du répertoire obtient tous les droits, tandis que les autres utilisateurs peuvent seulement lire et exécuter les fichiers si le propriétaire leur accorde l’autorisation. La directive *AllowOverwrite* est désactivée pour empêcher que les données existantes ne soient écrasées lors du téléchargement de nouveaux fichiers. Enfin, la **connexion FTP** (`Limit LOGIN`) et l’**exécution des commandes FTP** (`Limit ALL`) sont **bloquées** pour tous les utilisateurs, à l’exception de « user1 ».

Conseil Au lieu de bloquer l’exécution de toutes les commandes FTP, vous pouvez aussi empêcher des opérations individuelles. De cette manière, par exemple, il est possible de créer un répertoire dans lequel les utilisateurs ne peuvent télécharger que des fichiers. Vous trouverez un aperçu détaillé des différentes options de réglage dans les [manuels en ligne](http://www.proftpd.org/docs/howto/Limit.html "ProFTPD-How-tos : configuration de « Limits »").

### Autoriser l’accès anonyme

Si vous désirez configurer votre serveur FTP sur Debian pour qu’il serve de serveur de téléchargement public, dans la majorité des cas, vous souhaitez alors aussi que **les utilisateurs puissent accéder aux fichiers hébergés de manière anonyme**. Pour cela, utilisez tout d’abord `chmod` pour définir les droits d’accès nécessaires pour le **répertoire de téléchargement** suivant, que nous avons nommé */home/ftpdownload* pour l’exemple :

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

Le propriétaire du répertoire a **tous les droits (7 = lire, écrire et exécuter)**. En revanche, les utilisateurs du groupe et tous les autres utilisateurs ne peuvent que **lire et exécuter (5)**.Une fois les permissions définies, l’accès anonyme peut alors être configuré dans le fichier *proftpd.conf* :

```none
<Anonymous ~ftp> 
    User ftp 
    Group ftpgroup 
     
    # Profils de connexion possibles pour Clients 
    UserAlias anonymous ftp 
     
    # Masquer les propriétés des utilisateurs et des groupes, maximiser le nombre de Clients  
    DirFakeUser on ftp 
    DirFakeGroup on ftp 
    RequireValidShell off 
    MaxClients 10 
     
    <Directory *> 
        <Limit WRITE> 
            DenyAll 
        </Limit> 
    </Directory> 
</Anonymous>
```

Pour se **connecter au serveur FTP sous Debian** avec le profil *ftp*, vous devez l’ajouter au groupe `ftpuser` :

```bash
sudo adduser ftp ftpgroup
```

### Configuration du chiffrement SSL/TLS

Le protocole FTP transfère à la fois les informations de connexion et les données envoyées en **texte clair**. Si vous souhaitez configurer un serveur ProFTPD privé qui ne doit pas être accessible à tous, il est donc recommandé de **chiffrer la connexion**. Vous pouvez le faire en utilisant **le logiciel libre OpenSSL**. La boîte à outils de chiffrement est incluse et déjà installée par défaut dans la gestion des paquets Debian. Vous pouvez sinon l’installer de la manière habituelle :

```bash
sudo apt install openssl
```

#### Étape 1 : générer le certificat et la clé

Utilisez ensuite OpenSSL pour créer un certificat. Comme vous devez le stocker quelque part, créez le dossier approprié dans le **répertoire ProFTPD** :

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

Générez maintenant le **certificat** (`proftpd.cert.pem`) et la **clé** (`proftpd.key.pem`) avec une durée de vie d’un an pour votre serveur FTP Linux en spécifiant cet emplacement et en utilisant la commande suivante :

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

Certains renseignements complémentaires sont nécessaires pour enregistrer correctement le certificat :

- **Country Name (2 letter code)** : code de pays, par exemple « *FR* » pour la France
- **State or Province Name (full name)** : Région/Département, par exemple « *Alsace* »
- **Locality Name (eg, city)** : ville, par exemple « *Strasbourg* »
- **Organization Name (eg, company)** : nom de l’entreprise ou votre nom
- **Organizational Unit Name (eg, company)** : indication du département (si disponible), par exemple « *IT* »
- **Common Name (eg, YOUR name)** : indication du domaine à protéger, par exemple « *ftp.example.com* »
- **Email Address** : adresse email

#### Étape 2 : activer SSL/TLS dans ProFTPD

Après avoir créé votre propre certificat et votre clef privée, vous devez activer la **technologie de chiffrement** pour le serveur ProFTPD. Pour cela, le logiciel du serveur FTP sur Debian fournit le module `mod_tls`. Pour l’activation, des ajustements supplémentaires dans le fichier *tls.conf* sont nécessaires. Ouvrez le fichier de configuration et recherchez l’entrée suivante :

```none
<IfModule mod_tls.c>
    TLSEngine    off
```

Assignez la valeur `on` à la directive `TLS Engine`, puis étendez la section comme suit (par exemple, en supprimant les dièses des commentaires) :

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

De cette manière, vous avez non seulement activé le chiffrement SSL/TLS pour votre serveur FTP sur Debian, mais vous avez également configuré les paramètres les plus importants en une seule étape. Le **fichier log pour l’enregistrement des connexions FTP** (`TLSLog`) est défini de manière similaire aux chemins d’accès au certificat (`TLSRSACertificateFile`) et à la clé (`TLSRSACertificateKeyFile`). Les versions du protocole (`TLSProtocol`) sont également spécifiées. Les deux dernières lignes indiquent que le module ne vérifie pas les certificats présentés par le client (`TLSVerifyClient`) et que le **chiffrement est requis** pour établir une connexion (`TLSRequired`). Après avoir redémarré le serveur ProFTPD, les nouveaux paramètres prendront effet.

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

#### Étape 3 : se connecter au serveur ProFTPD via SSL/TLS

Si vous avez activé SSL/TLS pour ProFTPD (comme recommandé dans ce tutoriel sur le serveur FTP sous Debian), les utilisateurs ont besoin d’un **client FTP qui supporte les connexions chiffrées**. L’un des représentants les plus importants est [FileZilla](https://www.ionos.fr/digitalguide/serveur/configuration/filezilla-tutoriel-du-logiciel-client-ftp/), qui n’est pas seulement disponible pour Debian et d’autres distributions Linux, mais aussi pour macOS et Windows. Ainsi, le programme open source est la solution optimale pour **accéder au serveur FTP à partir de différentes plateformes**.

Dans le gestionnaire de serveur de FileZilla, sélectionnez la variante **FTPS** (« FTP via TLS/SSL explicite ») au lieu de FTP pour la connexion sécurisée. Il est également nécessaire d’accepter le certificat la première fois que vous vous connectez alors au serveur.

Si la connexion TLS ne peut pas être établie dans FileZilla, il pourrait éventuellement être nécessaire de charger manuellement le module `mod_tls`. Pour cela, inscrivez la ligne suivante au début de *proftpd.conf* :

```none
LoadModule mod_tls.c
```

Pour que cette modification prenne effet, vous devez ensuite redémarrer le serveur :

```bash
sudo systemctl restart proftpd
```

Conseil Le [SSH *File Transfer Protocol* (SFTP)](https://www.ionos.fr/digitalguide/serveur/know-how/sftp-ssh-file-transfer-protocol/) utilise SSH au lieu de TLS/SSL et constitue une alternative légère et conviviale au FTPS.

### Configuration ProFTPD, astuces et conseils

Les options de configuration présentées ici ne sont qu’une petite sélection. Le logiciel FTP multifonctions permet des **scénarios encore plus spécifiques et complexes** pour la configuration de votre propre serveur. Le site officiel du ProFTPD offre de nombreuses informations utiles à ce sujet. La [documentation en ligne](http://proftpd.org/docs "proftpd.org : manuel en ligne") disponible gratuitement comprend des exemples de configuration, des modes d’emploi détaillés, des FAQ et des explications sur les différentes directives. Elle contient aussi des informations sur les différentes directives et sur les différents modules standards et complémentaires.

## Erreurs possibles de configuration de serveur

Dans certains cas, le redémarrage du serveur ProFTPD peut entraîner le message d’erreur suivant :

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

Dans ce cas, le problème est que le module de cache `mod_tls_memcache` a été automatiquement activé en tant que composant SSL/TLS lors de la compilation de ProFTPD. Une fois que vous avez configuré le chiffrement SSL/TLS, le module met théoriquement (et si vous le souhaitez) en cache les **sessions FTP chiffrées**. Cependant, comme vous n’avez pas besoin de la mise en cache de session par défaut, vous n’avez pas effectué les réglages nécessaires pour faire fonctionner le module, ce qui conduit à son tour au **message d’erreur du ProFTPD**. La solution à ce problème est simple : il vous suffit de **désactiver** le module ou le processus de chargement du module dans le fichier de configuration **en le commentant**.

```none
# LoadModule mod_tls_memcache.c
```

En plus du problème du module de mise en cache, les complications qui peuvent survenir après la configuration du serveur FTP sur Debian comportent une **mauvaise configuration de la connexion**. Pour résoudre ce problème, vous pouvez utiliser **différentes options d’analyse** :

1. **Vérifier l’exécution du serveur ProFTPD**

```bash
sudo service proftpd status
```

2. **Tester si le serveur ProFTPD écoute sur le [port TCP](https://www.ionos.fr/digitalguide/serveur/know-how/ports-tcpet-udp/) 21 pour enregistrer les requêtes FTP entrantes**

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

3. **Vérifier les messages d’erreur dans le log ProFTPD**

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

4. **Vérifier les messages d’erreur dans le log TLS**

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

5. **Tester la connexion sur le port 21 avec telnet**

```bash
sudo telnet [IP-Adresse] 21
```

6. **Tester la connexion sur le port 21 avec TLS**

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


This is a markdown version of: [https://www.ionos.fr/digitalguide/serveur/configuration/configurer-un-serveur-ftp-sous-debian-avec-proftpd/](https://www.ionos.fr/digitalguide/serveur/configuration/configurer-un-serveur-ftp-sous-debian-avec-proftpd/) for AI/LLM consumption.