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, dont la plupart sont open source et se trouvent généralement dans la gestion des paquets de la distribution Linux.
L’une des applications les plus populaires est 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. Debian 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 :
sudo apt update
sudo apt install proftpd
sudo apt install proftpd-mod-crypto
bashSi vous souhaitez que le serveur FTP démarre automatiquement au redémarrage du système, vous devez également exécuter la commande suivante :
sudo systemctl enable proftpd
bashVous 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 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).
- Virtualisation complète avec accès root
- Trafic illimité et jusqu'à 1 Gbit/s de bande passante
- Stockage SSD NVMe rapide et édition Plesk Web Host
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é.
Scénario de serveur FTP | Tarif IONOS adapté |
---|---|
Petit serveur Web | VPS Linux M |
Serveur Web plus grand | VPS Linux XL |
Serveur FTP Entreprise | Serveur dédié AMD Ryzen XXL-128 NVMe |
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 :
sudo nano /etc/proftpd/proftpd.conf
bashDans 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.
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 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 :
# 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 :
# 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 :
sudo sh -c 'echo "/bin/false" >> /etc/shells'
bashVous pouvez ensuite créer un premier utilisateur :
sudo adduser user1 --shell /bin/false --home /home/user1
bashDans 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 :
<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 ».
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.
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 :
sudo chmod 755 -R /home/ftpdownload
bashLe 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 :
<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
bashConfiguration 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 :
sudo apt install openssl
bashÉ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 :
sudo mkdir /etc/proftpd/ssl
bashGé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 :
openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
bashCertains 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
Profitez de votre propre serveur, avec hardware dédié, intégration Cloud, facturation à la minute et processeur Intel® Xeon® ou AMD.
É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 :
<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) :
<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.
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 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, 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 :
LoadModule mod_tls.c
Pour que cette modification prenne effet, vous devez ensuite redémarrer le serveur :
sudo systemctl restart proftpd
bashLe SSH File Transfer Protocol (SFTP) 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 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 :
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.
# 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 :
- Vérifier l’exécution du serveur ProFTPD
sudo service proftpd status
bash- Tester si le serveur ProFTPD écoute sur le port TCP 21 pour enregistrer les requêtes FTP entrantes
sudo netstat -tlp|grep proftpd
bash- Vérifier les messages d’erreur dans le log ProFTPD
sudo tail -20 /var/log/proftpd/proftpd.log
bash- Vérifier les messages d’erreur dans le log TLS
sudo tail -20 /var/log/proftpd/tls.log
bash- Tester la connexion sur le port 21 avec telnet
sudo telnet [IP-Adresse] 21
bash- Tester la connexion sur le port 21 avec TLS
sudo openssl s_client -connect [IP-Adresse]:21 -starttls ftp
bash