Le serveur (S)FTP(S)
Qu'est-ce qu'un serveur FTP ?
Le FTP (File Transfer Protocol) est l'un des plus anciens protocoles de transfert de fichiers sur un réseau.
Il permet d'envoyer, de télécharger, de supprimer ou de lister des fichiers sur un serveur distant.
Cependant, FTP en clair (non sécurisé) envoie toutes les informations, y compris les mots de passe, sans chiffrement. Aujourd'hui, pour des raisons de sécurité, on lui préfère des variantes sécurisées :
- SFTP (SSH File Transfer Protocol) : Tunnelisé via SSH, il offre une communication chiffrée et ne nécessite généralement pas de ports additionnels, puisqu'il utilise le port 22 par défaut.
- FTPS (FTP over SSL/TLS) : Ajoute une couche de chiffrement (SSL/TLS) aux connexions FTP classiques. Il utilise le protocole FTP mais sécurise le transport des données.
Pourquoi installer un serveur SFTP/FTPS ?
- Sécurité :
Les entreprises ou les particuliers cherchent à sécuriser le transfert de données.
SFTP et FTPS chiffrent les identifiants et les données, évitant l'interception malveillante.
- Interopérabilité et compatibilité :
De nombreux clients et systèmes de gestion de fichiers supportent SFTP et FTPS.
Sur Debian (Linux en général), il est facile d'activer un serveur SFTP ou d'installer un serveur FTPS.
- Gestion des accès et permissions :
Un serveur dédié permet de mieux séparer les accès SFTP/FTPS des accès SSH, et de définir clairement les répertoires et permissions pour chaque utilisateur.
Les logiciels les plus utilisés sous Debian
- ProFTPD :
Serveur FTP/FTPS populaire, modulaire, réputé pour sa flexibilité. Il permet de configurer le chiffrement TLS, la gestion fine des permissions, des accès virtuels, etc.
- VsFTPd (Very Secure FTP Daemon) :
Considéré comme l'un des serveurs FTP les plus sûrs et stables. vsftpd supporte FTPS, possède une configuration simple, et est souvent utilisé en environnement de production. C'est celui que nous allons configurer.
- Pure-FTPd :
Léger, simple, sécurisé, prend en charge SSL/TLS et offre des fonctionnalités avancées (authentification virtuelle, quotas, etc.).
- OpenSSH (SFTP) :
Le serveur OpenSSH inclut un sous-système SFTP. Cela permet d'offrir du SFTP sans installer de logiciel supplémentaire, simplement en activant la fonctionnalité. Cependant, ce n'est pas un serveur FTP au sens strict, mais un mode de transfert de fichiers via SSH. Il ne sera pas aussi performant que les autres logiciels en cas de forte charge.
Pourquoi installer un serveur spécialisé plutôt que d'utiliser OpenSSH pour SFTP ?
- Isolation et sécurité renforcée :
Utiliser OpenSSH pour SFTP suppose d'accorder à l'utilisateur un accès SSH (même si limité).
Un serveur FTP/FTPS dédié ou une configuration SFTP chrootée via un outil spécialisé peut mieux isoler les utilisateurs dans leurs répertoires respectifs, limitant l'impact en cas de compromission.
- Contrôle granulaire des fonctionnalités FTP/FTPS :
Les serveurs dédiés (vsftpd, ProFTPD) offrent de nombreuses options spécifiques au protocole FTP/FTPS : gestion fine de la bande passante, logs spécifiques, quotas, règles de mot de passe, authentification via une base SQL, etc.
OpenSSH est avant tout un serveur d'accès distant sécurisé et ne fournit pas nativement toutes les options d'un vrai serveur FTP/FTPS.
- Performance et optimisation :
Un serveur FTP/FTPS dédié peut être plus performant dans certains contextes, car il est conçu pour le transfert de fichiers et peut gérer un grand nombre de connexions simultanées de manière plus adaptée qu'un serveur SSH générique.
Différences entre SFTP et FTPS
SFTP (SSH File Transfer Protocol) :
- Protégé par SSH (port 22 par défaut).
- Nativement intégré au serveur SSH (donc pas besoin d'ouvrir de ports supplémentaires).
- Le chiffrement et l'authentification sont fournis par SSH.
- Il ne s'agit pas de FTP standard, mais d'un protocole différent, plus proche de scp. De nombreux clients FTP comprennent SFTP.
FTPS (FTP over SSL/TLS) :
- S'appuie sur le protocole FTP classique (ports 21 pour le contrôle, et ports data dynamiques) et ajoute une couche SSL/TLS pour chiffrer la connexion.
- Requiert généralement l'ouverture de plusieurs ports (la négociation dynamique des ports pour la session data est plus complexe).
- Certificats SSL/TLS nécessaires, similaires à HTTPS.
- Les clients doivent supporter explicitement FTPS (souvent nommé "FTP sur TLS").
Soyons tout de suite clair, la mise en place d'un FTPS dans un environnement exposé à internet est plus complexe qu'un SFTP.
Installation et configuration basique
- Installer vsftpd (par exemple) sous Debian :
apt update
apt install vsftpd
Le fichier de configuration principal se situe en général dans /etc/vsftpd.conf.
Pour activer FTPS, vous devrez fournir des certificats TLS/SSL et ajuster les paramètres (e.g., rsa_cert_file, rsa_private_key_file, ssl_enable=YES).
Ensuite, configurer /etc/proftpd/proftpd.conf pour activer TLS, définir les répertoires, modes chroot, etc.
- Activer le sous-système SFTP dans OpenSSH (déjà installé par défaut) : Le fichier /etc/ssh/sshd_config contient une ligne semblable à :
Subsystem sftp /usr/lib/openssh/sftp-server
- Pour restreindre les utilisateurs, on peut utiliser des directives Match User et ChrootDirectory, afin de permettre uniquement le SFTP dans un répertoire défini, sans accès shell.
Cas d'usage courants
- Hébergement mutualisé : Offrir des comptes FTP/FTPS/SFTP séparés aux clients pour qu'ils uploadent leurs sites web, chacun dans un répertoire isolé.
- Transferts automatisés : Exchange de fichiers entre serveurs et partenaires externes, souvent requis par des scripts ou des systèmes tiers.
- Mise à disposition de fichiers internes : Partager des données au sein d'une entreprise sans donner d'accès shell, en contrôlant précisément les autorisations et en chiffrant les transferts.
En résumé
Sous Linux, installer et configurer un serveur SFTP ou FTPS est une tâche relativement simple, grâce aux paquets fournis par la distribution. Le choix entre un serveur dédié (vsftpd, ProFTPD, Pure-FTPd) et la simple activation du SFTP via OpenSSH dépend des besoins en termes de fonctionnalité, de performance, de gestion des accès et de granularité de configuration.
SFTP et FTPS offrent tous deux un chiffrement du trafic, améliorant considérablement la sécurité par rapport au FTP classique. SFTP, basé sur SSH, est souvent plus simple à déployer et plus compatible avec des politiques de sécurité strictes, tandis que FTPS reste plus proche du protocole FTP traditionnel et peut s'intégrer sans trop de changements dans des environnements et des outils hérités.
La configuration d'un serveur (S)FTP(S) demande néanmoins un peu de patience et de tests !
Je vous laisse le soin d'essayer vsftp.
Vous devez obtenir une configuration :
- limitant l'accès sur la seule interface réseau du serveur
- chrootant les utilisateurs dans leur espace personnel
- limitant le nombre de connexion (3) à l'espace de stockage d'un utilisateur