Linux & Systèmes PDF Gratuit

Cours Installation serveur FTP (PDF)

Installation d’un serveur FTP sous Ubuntu : déploiement fiable et bonnes pratiques pour un service disponible et sécurisé.

Contenu aligné sur les recommandations Canonical pour Ubuntu Server et fondé sur des commandes Linux pour serveur FTP éprouvées.

Note : Basé initialement sur la version 12.10, ce tutoriel reste pertinent pour Ubuntu 22.04 LTS et 24.04 LTS en adaptant les chemins et paquets selon la distribution et la version ciblée.

Les concepts de configuration vsftpd restent applicables aux versions ultérieures ; adaptez les chemins et paquets selon la distribution et la version ciblée.

🎯 Ce que vous allez apprendre

  • Principes du protocole FTP : connexions de contrôle et de données, différences entre transferts ASCII et binaire.
  • Installer et configurer vsftpd : étapes d'installation sous Debian/Ubuntu et principaux réglages via le fichier /etc/vsftpd.conf.
  • Gestion des utilisateurs : utilisateurs locaux versus virtuels et gestion des permissions.
  • Modes de transfert et commandes FTP : commandes de base et choix du mode actif ou passif ; exemple de connexion : ftp 192.168.1.10.
  • Analyse réseau et sécurité : exploration des trames avec un analyseur réseau et bonnes pratiques pour la sécurisation (FTPS/SSL/TLS).

Commande d'installation rapide

sudo apt update && sudo apt install vsftpd

Pourquoi choisir vsftpd pour Ubuntu ?

vsftpd (Very Secure FTP Daemon) combine performance, faible empreinte mémoire et options de sécurité adaptées aux environnements de production. Il propose un chroot efficace pour isoler les comptes, une configuration simple via /etc/vsftpd.conf et une compatibilité directe avec les outils de supervision Linux. Pour des déploiements automatisés, vsftpd s'intègre proprement aux playbooks Ansible et aux dépôts APT d'Ubuntu, facilitant la maintenance et la conformité opérationnelle.

Comparatif rapide : FTP vs SFTP

Critère FTP / FTPS SFTP (SSH)
Chiffrement FTPS ajoute TLS/SSL au protocole FTP SFTP chiffre nativement via SSH
Ports Ports 20/21 + plage passive à ouvrir Un seul port SSH (22) ; plus simple derrière NAT
Gestion d'utilisateurs Comptes système ou virtuels selon le serveur Utilise l'authentification SSH ; clés publiques possibles
Cas d'usage Interopérabilité avec anciens clients, exigences FTPS Transferts sécurisés, automatisation via SSH

Installation de vsftpd via le terminal

Sur une machine Ubuntu/Debian, installez vsftpd depuis la ligne de commande. Après l'installation, vérifiez le statut du service, sauvegardez le fichier original /etc/vsftpd.conf avant toute modification et redémarrez le service pour appliquer les changements. Configurez la plage de ports pour le mode passif et adaptez les paramètres de bannière, d'accès anonyme et de chroot selon la politique de sécurité de votre infrastructure.

Alternative : ProFTPD

ProFTPD offre une configuration plus flexible, un style de directives proche d'Apache et des fonctionnalités avancées pour l'hébergement virtuel. Pour tester ProFTPD :

sudo apt install proftpd

Documentez toute modification de vsftpd.conf ou de la configuration ProFTPD dans votre gestion de configuration (ex. Ansible, Puppet, Git) et évaluez les implications en matière de sécurité et de maintenance.

Configuration du Pare-feu (UFW)

Ouvrir uniquement les ports nécessaires réduit la surface d'attaque. Avec UFW, autorisez le contrôle FTP, la transmission de données et la plage passive définie dans /etc/vsftpd.conf. Adaptez la plage passive à votre topologie réseau et documentez la règle dans votre politique de pare‑feu. Pour un serveur exposé, limitez l'accès par adresse IP lorsque possible et combinez les règles UFW avec des règles au niveau du routeur/NAT si le serveur est derrière un équipement NAT.

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp

Administration Réseau : l'installation et le déploiement d'un serveur FTP s'inscrivent dans la couche Application du modèle OSI. Comprendre la relation entre couche application (FTP/FTPS/SFTP), couche transport (TCP) et mécanismes NAT/PAT est essentiel pour diagnostiquer des problèmes de connexions passives et pour configurer correctement les ACL et la translation d'adresses sur les équipements réseau.

Vérifier le fonctionnement du serveur

  • Vérifier le service : sudo systemctl status vsftpd et corriger les erreurs signalées.
  • Tester en local : lancer ftp localhost, s'authentifier avec un compte valide et effectuer un ls, get et put pour valider les transferts.
  • Tester depuis un client externe : depuis une autre machine, tenter ftp IP_SERVEUR ou utiliser un client graphique pour vérifier le comportement en mode passif/actif et la permission d'accès.
  • Vérifier les règles UFW et la translation NAT si le serveur est derrière un routeur ; assurez-vous que la plage passive définie correspond aux ports ouverts.
  • Consulter les logs (voir section suivante) pour tout rejet ou erreur lors des tentatives de connexion.

Gestion des logs

Les logs de vsftpd se trouvent dans /var/log/vsftpd.log. Selon la configuration syslog, des événements peuvent aussi apparaître dans /var/log/auth.log or /var/log/syslog. Utilisez tail -f /var/log/vsftpd.log pour suivre les connexions en temps réel et recherchez les messages d'erreur liés à l'authentification, au chroot ou aux ports passifs pour le débogage.

Client FTP (FileZilla)

Pour un test avec FileZilla : ouvrez le Gestionnaire de sites, créez une entrée avec l'hôte (IP ou nom DNS), port 21, protocole FTP et chiffrement Require explicit FTP over TLS si le serveur propose FTPS. Renseignez le type d'authentification (Normal) et vos identifiants. Dans l'onglet Paramètres du site, choisissez Mode de transfert : Passive et, si nécessaire, précisez la plage de ports passive correspondant à la configuration du serveur. Ces réglages facilitent la connexion depuis des clients derrière NAT et accélèrent le diagnostic.

Pour les utilisateurs préférant une interface graphique côté serveur sur Ubuntu Desktop, des outils comme gproftpd peuvent offrir une gestion simplifiée de ProFTPD ; l'administration principale reste cependant plus robuste depuis la CLI pour la sécurisation et l'automatisation.

Guide de sécurisation avancée du serveur FTP

Au-delà des réglages de base, appliquez le principe du moindre privilège : comptes limités, permissions de fichiers strictes, audits réguliers et certificats TLS valides pour FTPS. Combinez les règles UFW avec une surveillance des connexions et des tentatives d'authentification. Intégrez le serveur dans votre gestion de configuration et vos procédures de sauvegarde pour assurer la traçabilité et la restauration après incident.

Sécurisation par Chroot

La directive chroot_local_user=YES dans /etc/vsftpd.conf confine les utilisateurs locaux dans leur répertoire personnel, réduisant l'exposition du système de fichiers. Pour des besoins plus granulaires, utilisez chroot_list_enable et maintenez une liste d'exceptions. Assurez-vous que les répertoires chroot ne contiennent pas de binaires non nécessaires et que les permissions empêchent l'élévation de privilèges.

Alternative sécurisée : Utiliser SFTP au lieu de FTP

SFTP (SSH File Transfer Protocol) fonctionne nativement via SSH et évite l'ouverture d'une plage de ports passive. Pour de nombreux déploiements, SFTP offre une solution plus simple à sécuriser : gestion par clés SSH, contrôle d'accès fin et journalisation centralisée via les outils SSH. Lorsqu'un chiffrement fort et une intégration rapide avec l'existant sont requis, privilégiez SFTP plutôt qu'une solution FTP/FTPS. L'utilisation de SFTP est une étape recommandée pour sécuriser transfert de fichiers dans des environnements modernes.

Dépannage courant (Troubleshooting)

  • Erreur 530 Login incorrect : vérifier l'exactitude des identifiants, l'existence du compte système, l'absence de verrouillage par PAM et les permissions du répertoire home. Consulter /var/log/auth.log et /var/log/vsftpd.log pour les indices d'authentification.
  • Erreur 500 OOPS : souvent liée à une configuration chroot incorrecte, des permissions inadéquates ou des modules PAM manquants. Vérifier chroot_local_user, la présence des bibliothèques nécessaires et tester avec un compte minimal pour isoler la cause.
  • Transferts bloqués en mode passif : confirmer que la plage passive indiquée dans /etc/vsftpd.conf est bien ouverte sur le pare-feu et traduite par le NAT. Utiliser ss -tnlp et tcpdump pour tracer les connexions.
  • Problèmes TLS/FTPS : vérifier les certificats, la compatibilité des ciphers et la configuration TLS dans /etc/vsftpd.conf. Tester la négociation TLS depuis un client et analyser les erreurs dans les logs.

👤 À qui s'adresse ce cours ?

  • Public cible : techniciens systèmes et administrateurs débutants souhaitant déployer et gérer un serveur FTP on Ubuntu.
  • Prérequis : connaissances de base en Linux (ligne de commande) et notions de réseau TCP/IP.

❓ Foire Aux Questions (FAQ)

Faut‑il privilégier le mode passif ? Le mode passif est recommandé lorsque le serveur est derrière un pare‑feu ou que les clients sont en NAT, car il évite que le serveur n'initie la connexion de données. Il nécessite l'ouverture d'une plage de ports côté serveur et l'ajustement du pare‑feu et du NAT.

Comment sécuriser les transferts ? Préférez FTPS/SSL‑TLS ou SFTP pour chiffrer identifiants et données. Activez TLS dans la configuration du serveur, fournissez des certificats valides, limitez l'accès aux comptes nécessaires et surveillez les connexions via les logs système et des outils d'analyse réseau.

Remarque : l'administration se concentre sur la ligne de commande (CLI). Des clients GUI comme FileZilla ou gFTP existent pour la connexion et le transfert de fichiers et peuvent faciliter les tests fonctionnels, mais la configuration et la sécurisation du service doivent être réalisées côté serveur via la CLI.