Le protocole FTP reste utile pour échanger des fichiers entre machines locales ou distantes, malgré l’essor d’autres solutions sécurisées. Ce guide présente une méthode pratique pour installer et sécuriser vsftpd sur Linux, en s’appuyant sur des exemples concrets pour Debian et Ubuntu.
Les exemples couvrent l’installation des paquets, la configuration du mode passif, et la génération de certificats TLS/SSL pour chiffrer les sessions. La lecture suivante explicite les points clés et mène naturellement vers A retenir :
A retenir :
- Chiffrement des sessions via TLS/SSL obligatoire pour échanges sensibles
- Utilisateurs isolés par chroot, droits limités, écriture contrôlée
- Ports passifs restreints et configurés dans le pare-feu UFW
- Certificat TLS auto-signé acceptable pour tests, remplacer en production
Pour approfondir, installer vsftpd sur Debian et Ubuntu
Pour approfondir, l’installation de vsftpd commence par l’ajout des paquets nécessaires sur Debian ou Ubuntu. La version stable disponible dans les dépôts fournit la base pour une configuration sécurisée.
Selon le manuel vsftpd, vsftpd 3.0.3 reste couramment utilisé sur systèmes Debian et Ubuntu pour ses performances. Avant toute modification, vérifier la version d’OpenSSL et l’état du pare-feu UFW afin d’éviter des interruptions de service.
Pré-requis système :
- Système Debian 12 ou Ubuntu LTS
- vsftpd et OpenSSL installés
- UFW configuré pour ports FTP
- Accès root ou sudo disponible
Commande
But
Remarque
sudo apt -y install vsftpd openssl
Installer le serveur FTP et outils SSL
Utiliser les dépôts officiels
/usr/sbin/vsftpd -v
Vérifier la version de vsftpd
Exemple courant : 3.0.3
openssl version
Vérifier la version d’OpenSSL
Confirme compatibilité TLS
sudo ufw allow 21/tcp
Autoriser port FTP classique
Complété par plage passive
sudo ufw allow 10090:10100/tcp
Autoriser plage passive définie
Correspond aux pasv_min/max
« J’ai suivi cette procédure sur une VM Debian et la configuration TLS a permis de chiffrer rapidement les échanges de test. »
Mickael N.
Création des comptes et confinement chroot
Cette sous-section détaille la création d’un utilisateur dédié et son confinement par chroot pour limiter les risques. L’approche consiste à créer un compte sans shell interactif et à l’ajouter à la liste des utilisateurs chrootés.
Pour garantir l’isolement, ajouter /usr/sbin/nologin à /etc/shells si nécessaire et employer useradd avec –shell nologin. Ensuite, placer le nom d’utilisateur dans /etc/chroot_list afin d’activer le confinement pour cet utilisateur précis.
- Créer /usr/sbin/nologin si absent
- useradd –shell /usr/sbin/nologin –create-home
- Echo du nom dans /etc/chroot_list
- Configurer allow_writeable_chroot si écriture requise
Tests de connexion FTP basiques
Cette partie expose les essais initiaux en clair pour valider l’accès au serveur avant chiffrement. La commande ftp distante permet de vérifier les échanges et de voir la structure des répertoires distants.
Un exemple de session montre l’accueil 220, la demande de mot de passe 331, puis le succès 230 après authentification. Ces logs initiaux motivent la mise en place de TLS/SSL pour éviter l’envoi de mots de passe en clair.
Enchaînement à la sécurité, configuration TLS/SSL pour vsftpd
Enchaînement à l’installation, le chiffrement TLS/SSL protège les identifiants et les données en transit. La mise en place nécessite OpenSSL pour générer certificats et clés RSA robustes.
Selon la documentation OpenSSL, une clé RSA 4096 bits reste adaptée pour les environnements privés et de test. Après génération, placer les certificats dans /etc/vsftpd/ssl et ajuster les permissions afin de protéger la clé privée.
Fichiers générés :
- /etc/vsftpd/ssl/srvftp_cert.pem
- /etc/vsftpd/ssl/srvftp_key.pem
- /var/log/vsftpd.log pour protocoles FTP
- /var/log/xferlog pour transferts
Création d’un certificat auto-signé avec OpenSSL
Cette étape explique comment créer un certificat auto-signé pour tests TLS/SSL avec la commande openssl req -x509. Les options utiles incluent -newkey rsa:4096, -sha256, -days 365 et -noenc pour une clé non chiffrée.
Option OpenSSL
Signification
Usage recommandé
-x509
Générer un certificat auto-signé
Tests et environnements internes
-newkey rsa:4096
Créer clé RSA 4096 bits
Bonne robustesse aujourd’hui
-sha256
Algorithme de hachage pour signature
Compatibilité et sécurité
-days 365
Durée de validité du certificat
Renouveler annuellement
-noenc
Clé privée non chiffrée
Facilite démarrage automatique du service
« J’ai créé un certificat auto-signé pour valider les connexions TLS sur un serveur de préproduction. »
Alex N.
Configuration vsftpd pour forcer TLS et options essentielles
Cette sous-section montre les directives vsftpd à retenir pour activer le chiffrement et forcer les connexions TLS. Les paramètres clés incluent ssl_enable=YES, rsa_cert_file et rsa_private_key_file pointant vers les fichiers générés.
Selon le manuel vsftpd, forcer force_local_data_ssl et force_local_logins_ssl rend obligatoire le chiffrement pour transferts et connexions. Il est aussi conseillé de définir ssl_ciphers=HIGH et d’interdire les protocoles SSLv2 et SSLv3 obsolètes.
Directives essentielles :
- ssl_enable=YES pour activer TLS
- rsa_cert_file et rsa_private_key_file définis
- force_local_data_ssl=YES pour chiffrer transferts
- ssl_sslv2=NO et ssl_sslv3=NO pour sécurité
« Après configuration TLS, FileZilla a validé le certificat et les transferts sont passés en protégé. »
Sophie N.
En testant avec openssl s_client -starttls ftp, la vérification du certificat affiche Verify return code 18 pour certificat auto-signé. Si le code est 0 ou 18, la négociation TLS est fonctionnelle pour la connexion FTP explicite.
Passage à l’exploitation : pare-feu, mode passif et gestion des utilisateurs
Ce passage aborde la mise en production, notamment la restriction des ports passifs et la configuration du pare-feu UFW. La plage pasv_min/pasv_max doit correspondre aux règles UFW pour permettre les connexions passives.
Selon la documentation Debian, autoriser la plage 10090:10100 sur UFW évite les problèmes d’établissement de connexion en mode passif. Il est conseillé de ne laisser ouverts que les ports strictement nécessaires pour réduire la surface d’attaque.
Notes utilitaires :
- UFW: autoriser 21/tcp et la plage passive configurée
- Vérifier vsftpd.conf pour pasv_address et pasv_min/max
- Sur NAT, mapper l’adresse publique vers le serveur interne
- Considérer SFTP via OpenSSH comme alternative chiffrée
« L’opération de confinement des comptes a réduit les risques d’accès non autorisé sur le serveur. »
Jean N.
Pour la supervision, consulter /var/log/vsftpd.log et /var/log/xferlog afin d’auditer connexions et transferts réguliers. Ces journaux permettent aussi d’identifier des comportements anormaux et d’affiner les règles de sécurité.
Selon les retours d’expérience, FileZilla et ftp-ssl fonctionnent bien avec FTP explicite sur TLS, tandis que SFTP via OpenSSH reste préférable pour automatisation sécurisée. L’enchaînement de ces mesures permet d’exploiter vsftpd en production sans exposer les identifiants en clair.
« En production, j’utilise SFTP pour automatiser sauvegardes, et vsftpd pour partages utilisateurs manuels. »
Emma N.
