Le File-Transfer-Protocol (FTP) fait partie des tech­niques de transfert de fichiers les plus demandées et est souvent utilisé pour le té­lé­char­ge­ment et l’envoi de fichiers sur des espaces Web. Découvrez comment con­fi­gu­rer un serveur FTP sous Debian avec un chif­fre­ment TLS.

Installer un serveur FTP sur Debian

Avant de pouvoir vous fa­mi­lia­ri­ser avec l’ins­tal­la­tion et la con­fi­gu­ra­tion, vous devez tout d’abord trouver et installer le logiciel serveur approprié. Pour Linux, il existe dif­fé­rents serveurs FTP, dont la plupart sont open source et se trouvent gé­né­ra­le­ment dans la gestion des paquets de la dis­tri­bu­tion Linux.

L’une des ap­pli­ca­tions les plus po­pu­laires est ProFTPD, sous licence GPL, qui est très ex­ten­sible grâce à sa con­cep­tion modulaire. Le fichier de con­fi­gu­ra­tion principal fonc­tionne sur la base de di­rec­tives et de groupes de di­rec­tives qui devraient sembler familiers à tout ad­mi­nis­tra­teur habitué aux serveurs Web Apache. Debian maintient aussi par défaut ProFTPD dans le ré­per­toire logiciel. L’ins­tal­la­tion s’effectue donc de manière ha­bi­tuelle via le terminal et avec la commande suivante :

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

Si vous souhaitez que le serveur FTP démarre au­to­ma­ti­que­ment au re­dé­mar­rage du système, vous devez également exécuter la commande suivante :

sudo systemctl enable proftpd
bash
Conseil

Vous souhaitez un transfert sécurisé de fichiers ? Louez un serveur Secure FTP avec IONOS. Le transfert est sécurisé grâce à SSH et SSL/TLS et des sau­ve­gardes quo­ti­diennes sont incluses.

Pour terminer l’ins­tal­la­tion, il est né­ces­saire de décider si vous voulez utiliser ProFTPD en mode serveur autonome (stan­da­lone) 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 « su­per­ser­veur » inetd/xinetd reçoit les requêtes et les transmet au serveur FTP (ce qui est in­té­res­sant uni­que­ment si peu de trafic FTP est attendu).

Serveurs virtuels (VPS)
VPS éco­no­miques sur serveurs Dell En­ter­prise
  • 1 Gbit/s de bande passante et trafic illimité
  • Dis­po­ni­bi­lité de 99,99 % et cer­ti­fi­ca­tion ISO
  • As­sis­tance 24/7 primée pour sa qualité et con­seil­ler personnel

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

Vous n’êtes pas sûr de la con­fi­gu­ra­tion ma­té­rielle et réseau dont vous avez besoin pour votre serveur FTP Debian ? Dans le tableau suivant, nous avons listé trois scénarios d’uti­li­sa­tions possibles pour un serveur FTP et proposé à chaque fois le tarif serveur de IONOS le plus adapté.

Scénario de serveur FTP Tarif IONOS adapté
Petit serveur Web VPS Linux M
Serveur Web plus grand VPS Linux XL
Serveur FTP En­tre­prise Serveur dédié AMD Ryzen XXL-128 NVMe

Serveur FTP sur Debian : tutoriel avec les étapes im­por­tantes de la con­fi­gu­ra­tion

Après l’ins­tal­la­tion, vous pouvez commencer à con­fi­gu­rer ProFTPD. Le fichier de con­fi­gu­ra­tion proftpd.conf qui est né­ces­saire, 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 :

sudo nano /etc/proftpd/proftpd.conf
bash

Dans les dif­fé­rentes lignes, vous trouverez les fonctions et pa­ra­mètres les plus im­por­tants 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é­sac­ti­vée) sont possibles. De plus, le signe # peut être placé devant une ligne pour « commenter ». Le serveur ProFTPD ignore alors com­plè­te­ment la ligne ; cela constitue donc une méthode al­ter­na­tive pour dé­sac­ti­ver certaines fonctions.

Conseil

Au lieu du fichier proftpd.conf, vous pouvez également utiliser votre propre fichier de con­fi­gu­ra­tion et le stocker dans /etc/proftpd/conf.d/. Ce ré­per­toire n’est pas affecté par les mises à jour du logiciel FTP, ce qui vous permet de réduire le risque de perdre vos pa­ra­mètres. Les spé­ci­fi­ca­tions du serveur stockées dans le dossier conf.d peuvent alors être fa­ci­le­ment incluses dans le fichier principal en utilisant la directive include, ce qui se fait au­to­ma­ti­que­ment avec la con­fi­gu­ra­tion par défaut.

Con­fi­gu­ra­tions de base : nom de serveur, ré­per­toire FTP etc.

Avant d’entrer dans le détail de la con­fi­gu­ra­tion de votre serveur FTP sous Debian, vous devez tout d’abord ajuster la con­fi­gu­ra­tion de base. Il s’agit de pa­ra­mètres élé­men­taires tels que la spé­ci­fi­ca­tion du nom d’hôte du serveur ou du ré­per­toire que vous souhaitez mettre à dis­po­si­tion pour le char­ge­ment et le té­lé­char­ge­ment des fichiers. Vous disposez aussi de diverses options de con­fi­gu­ra­tion qui se réfèrent à des uti­li­sa­teurs FTP po­ten­tiels, comme le montre l’exemple de con­fi­gu­ra­tion suivant :

# 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 con­fi­gu­ra­tion de base, les uti­li­sa­teurs ont accès à un ré­per­toire spé­ci­fique. Cela est notamment utile si les uti­li­sa­teurs sont impliqués dans la main­te­nance de sites Web et ont besoin de droits d’accès étendus. Cependant, si la fonction du serveur FTP Linux est d’offrir aux uti­li­sa­teurs un seul em­pla­ce­ment pour leurs fichiers, vous devez con­fi­gu­rer ProFTPD de sorte que l’accès au ré­per­toire d’origine soit restreint :

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

Créer un uti­li­sa­teur FTP

Lorsque vous créez un nouvel uti­li­sa­teur 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’uti­li­sa­teur 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 in­ter­faces système (Shells) au­to­ri­sées :

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

Vous pouvez ensuite créer un premier uti­li­sa­teur :

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

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

<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é­per­toire de plusieurs manières afin d’en faire un ré­fé­ren­tiel pour les fichiers de l’uti­li­sa­teur « user1 » : avec la commande Umask(022), le pro­prié­taire du ré­per­toire obtient tous les droits, tandis que les autres uti­li­sa­teurs peuvent seulement lire et exécuter les fichiers si le pro­prié­taire leur accorde l’au­to­ri­sa­tion. La directive Al­lo­wO­ver­write est dé­sac­ti­vée pour empêcher que les données exis­tantes ne soient écrasées lors du té­lé­char­ge­ment de nouveaux fichiers. Enfin, la connexion FTP (Limit LOGIN) et l’exécution des commandes FTP (Limit ALL) sont bloquées pour tous les uti­li­sa­teurs, à l’exception de « user1 ».

Conseil

Au lieu de bloquer l’exécution de toutes les commandes FTP, vous pouvez aussi empêcher des opé­ra­tions in­di­vi­duelles. De cette manière, par exemple, il est possible de créer un ré­per­toire dans lequel les uti­li­sa­teurs ne peuvent té­lé­char­ger que des fichiers. Vous trouverez un aperçu détaillé des dif­fé­rentes options de réglage dans les manuels en ligne.

Autoriser l’accès anonyme

Si vous désirez con­fi­gu­rer votre serveur FTP sur Debian pour qu’il serve de serveur de té­lé­char­ge­ment public, dans la majorité des cas, vous souhaitez alors aussi que les uti­li­sa­teurs 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é­ces­saires pour le ré­per­toire de té­lé­char­ge­ment suivant, que nous avons nommé /home/ftp­down­load pour l’exemple :

sudo chmod 755 -R /home/ftpdownload
bash

Le pro­prié­taire du ré­per­toire a tous les droits (7 = lire, écrire et exécuter). En revanche, les uti­li­sa­teurs du groupe et tous les autres uti­li­sa­teurs ne peuvent que lire et exécuter (5).Une fois les per­mis­sions définies, l’accès anonyme peut alors être configuré dans le fichier proftpd.conf :

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

sudo adduser ftp ftpgroup
bash

Con­fi­gu­ra­tion du chif­fre­ment SSL/TLS

Le protocole FTP transfère à la fois les in­for­ma­tions de connexion et les données envoyées en texte clair. Si vous souhaitez con­fi­gu­rer un serveur ProFTPD privé qui ne doit pas être ac­ces­sible à tous, il est donc re­com­mandé de chiffrer la connexion. Vous pouvez le faire en utilisant le logiciel libre OpenSSL. La boîte à outils de chif­fre­ment 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 ha­bi­tuelle :

sudo apt install openssl
bash

Étape 1 : générer le cer­ti­fi­cat et la clé

Utilisez ensuite OpenSSL pour créer un cer­ti­fi­cat. Comme vous devez le stocker quelque part, créez le dossier approprié dans le ré­per­toire ProFTPD :

sudo mkdir /etc/proftpd/ssl
bash

Générez main­te­nant le cer­ti­fi­cat (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é­ci­fiant cet em­pla­ce­ment et en utilisant la commande suivante :

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

Certains ren­seig­ne­ments com­plé­men­taires sont né­ces­saires pour en­re­gis­trer cor­rec­te­ment le cer­ti­fi­cat :

  • Country Name (2 letter code) : code de pays, par exemple « FR » pour la France
  • State or Province Name (full name) : Région/Dé­par­te­ment, par exemple « Alsace »
  • Locality Name (eg, city) : ville, par exemple « Stras­bourg »
  • Or­ga­ni­za­tion Name (eg, company) : nom de l’en­tre­prise ou votre nom
  • Or­ga­ni­za­tio­nal Unit Name (eg, company) : in­di­ca­tion du dé­par­te­ment (si dis­po­nible), par exemple « IT »
  • Common Name (eg, YOUR name) : in­di­ca­tion du domaine à protéger, par exemple « ftp.example.com »
  • Email Address : adresse email
Serveurs dédiés
Per­for­mance et in­no­va­tion
  • Pro­ces­seurs dernière gé­né­ra­tion
  • Hardware dédié haute per­for­mance
  • Data centers certifiés ISO

Étape 2 : activer SSL/TLS dans ProFTPD

Après avoir créé votre propre cer­ti­fi­cat et votre clef privée, vous devez activer la tech­no­lo­gie de chif­fre­ment pour le serveur ProFTPD. Pour cela, le logiciel du serveur FTP sur Debian fournit le module mod_tls. Pour l’ac­ti­va­tion, des ajus­te­ments sup­plé­men­taires dans le fichier tls.conf sont né­ces­saires. Ouvrez le fichier de con­fi­gu­ra­tion et re­cher­chez l’entrée suivante :

<IfModule mod_tls.c>
    TLSEngine    off

Assignez la valeur on à la directive TLS Engine, puis étendez la section comme suit (par exemple, en sup­pri­mant les dièses des com­men­taires) :

<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 chif­fre­ment SSL/TLS pour votre serveur FTP sur Debian, mais vous avez également configuré les pa­ra­mètres les plus im­por­tants en une seule étape. Le fichier log pour l’en­re­gis­tre­ment des con­nexions FTP (TLSLog) est défini de manière similaire aux chemins d’accès au cer­ti­fi­cat (TLSRSACertificateFile) et à la clé (TLSRSACertificateKeyFile). Les versions du protocole (TLSProtocol) sont également spé­ci­fiées. Les deux dernières lignes indiquent que le module ne vérifie pas les cer­ti­fi­cats présentés par le client (TLSVerifyClient) et que le chif­fre­ment est requis pour établir une connexion (TLSRequired). Après avoir redémarré le serveur ProFTPD, les nouveaux pa­ra­mètres prendront effet.

sudo /etc/init.d/proftpd restart
bash

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

Si vous avez activé SSL/TLS pour ProFTPD (comme re­com­mandé dans ce tutoriel sur le serveur FTP sous Debian), les uti­li­sa­teurs ont besoin d’un client FTP qui supporte les con­nexions chiffrées. L’un des re­pré­sen­tants les plus im­por­tants est FileZilla, qui n’est pas seulement dis­po­nible pour Debian et d’autres dis­tri­bu­tions Linux, mais aussi pour macOS et Windows. Ainsi, le programme open source est la solution optimale pour accéder au serveur FTP à partir de dif­fé­rentes pla­te­formes.

Dans le ges­tion­naire de serveur de FileZilla, sé­lec­tion­nez la variante FTPS (« FTP via TLS/SSL explicite ») au lieu de FTP pour la connexion sécurisée. Il est également né­ces­saire d’accepter le cer­ti­fi­cat la première fois que vous vous connectez alors au serveur.

Si la connexion TLS ne peut pas être établie dans FileZilla, il pourrait éven­tuel­le­ment être né­ces­saire de charger ma­nuel­le­ment le module mod_tls. Pour cela, inscrivez la ligne suivante au début de proftpd.conf :

LoadModule mod_tls.c

Pour que cette mo­di­fi­ca­tion prenne effet, vous devez ensuite re­dé­mar­rer le serveur :

sudo systemctl restart proftpd
bash
Conseil

Le SSH File Transfer Protocol (SFTP) utilise SSH au lieu de TLS/SSL et constitue une al­ter­na­tive légère et con­vi­viale au FTPS.

Con­fi­gu­ra­tion ProFTPD, astuces et conseils

Les options de con­fi­gu­ra­tion pré­sen­tées ici ne sont qu’une petite sélection. Le logiciel FTP mul­ti­fonc­tions permet des scénarios encore plus spé­ci­fiques et complexes pour la con­fi­gu­ra­tion de votre propre serveur. Le site officiel du ProFTPD offre de nom­breuses in­for­ma­tions utiles à ce sujet. La do­cu­men­ta­tion en ligne dis­po­nible gra­tui­te­ment comprend des exemples de con­fi­gu­ra­tion, des modes d’emploi détaillés, des FAQ et des ex­pli­ca­tions sur les dif­fé­rentes di­rec­tives. Elle contient aussi des in­for­ma­tions sur les dif­fé­rentes di­rec­tives et sur les dif­fé­rents modules standards et com­plé­men­taires.

Erreurs possibles de con­fi­gu­ra­tion de serveur

Dans certains cas, le re­dé­mar­rage du serveur ProFTPD peut entraîner le message d’erreur suivant :

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é au­to­ma­ti­que­ment activé en tant que composant SSL/TLS lors de la com­pi­la­tion de ProFTPD. Une fois que vous avez configuré le chif­fre­ment SSL/TLS, le module met théo­ri­que­ment (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é­ces­saires pour faire fonc­tion­ner 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é­sac­ti­ver le module ou le processus de char­ge­ment du module dans le fichier de con­fi­gu­ra­tion en le com­men­tant.

# LoadModule mod_tls_memcache.c

En plus du problème du module de mise en cache, les com­pli­ca­tions qui peuvent survenir après la con­fi­gu­ra­tion du serveur FTP sur Debian com­por­tent une mauvaise con­fi­gu­ra­tion de la connexion. Pour résoudre ce problème, vous pouvez utiliser dif­fé­rentes options d’analyse :

  1. Vérifier l’exécution du serveur ProFTPD
sudo service proftpd status
bash
  1. Tester si le serveur ProFTPD écoute sur le port TCP 21 pour en­re­gis­trer les requêtes FTP entrantes
sudo netstat -tlp|grep proftpd
bash
  1. Vérifier les messages d’erreur dans le log ProFTPD
sudo tail -20 /var/log/proftpd/proftpd.log
bash
  1. Vérifier les messages d’erreur dans le log TLS
sudo tail -20 /var/log/proftpd/tls.log
bash
  1. Tester la connexion sur le port 21 avec telnet
sudo telnet [IP-Adresse] 21
bash
  1. Tester la connexion sur le port 21 avec TLS
sudo openssl s_client -connect  [IP-Adresse]:21 -starttls ftp
bash
Aller au menu principal