Le FTP (File Transfer Protocol) est un outil incontournable pour transférer des fichiers entre des machines dans une infrastructure réseau TCP/IP. Bien qu’il existe d’autres protocoles modernes comme SFTP ou FTPS, FTP reste largement utilisé pour des environnements locaux ou éducatifs. Dans cet article, nous vous guiderons étape par étape pour configurer un serveur FTP basé sur vsftpd (Very Secure FTP Daemon) sur Debian 12. Vous apprendrez à gérer des utilisateurs, configurer leurs répertoires, tester votre configuration avec FileZilla et le terminal.
Pour simplifier la démonstration, nous ne configurerons pas SSL/TLS, mais une section en fin d’article expliquera pourquoi il est crucial de sécuriser votre serveur FTP en production.
Étape 1 : Mise à jour du système
Assurez-vous que votre système est à jour :
sudo apt update && sudo apt upgrade -y
Étape 2 : Installation de vsftpd
Installez le serveur FTP vsftpd :
sudo apt install vsftpd -y
Vérifiez l’état du service :
sudo systemctl status vsftpd
Si le service n’est pas actif, démarrez-le :
sudo systemctl start vsftpd
Activez son démarrage automatique au boot :
sudo systemctl enable vsftpd
Étape 3 : Configuration de vsftpd
Sauvegardez le fichier de configuration d’origine pour pouvoir y revenir en cas de problème :
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
Modifiez le fichier de configuration :
sudo nano /etc/vsftpd.conf
Ajoutez activez ou modifiez les lignes suivantes :
anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES pasv_enable=YES pasv_min_port=30000 pasv_max_port=31000 allow_writeable_chroot=YES
Explication:
anonymous_enable=NO – Désactive l’accès anonyme au serveur FTP, permettant uniquement aux utilisateurs authentifiés de se connecter.
local_enable=YES – Autorise les utilisateurs locaux définis sur le serveur à se connecter via FTP.
write_enable=YES – Permet aux utilisateurs de téléverser, renommer ou supprimer des fichiers sur le serveur.
chroot_local_user=YES – Restreint chaque utilisateur à son propre répertoire personnel, empêchant l’accès aux autres parties du système.
pasv_enable=YES – Active le mode passif FTP, nécessaire pour les connexions derrière des pare-feu ou NAT.
pasv_min_port=30000 – Définit le port minimum pour les connexions en mode passif.
pasv_max_port=31000 – Définit le port maximum pour les connexions en mode passif, facilitant la configuration des pare-feu.
allow_writeable_chroot=YES – Autorise l’accès en mode chroot même si le répertoire est inscriptible, évitant des erreurs dans certaines configurations.
Redémarrez le service pour appliquer les modifications :
sudo systemctl restart vsftpd
Étape 4 : Création d’utilisateurs FTP
Pour démonstration je vais créer deux utilisateurs : ftpuser1 et ftp_oleks.
Créer les utilisateurs :
sudo adduser ftpuser1 sudo adduser ftp_oleks
Suivez les instructions pour définir leurs mots de passe.
Configurer leurs répertoires personnels :
Pour ftpuser1 :
sudo mkdir -p /home/ftpuser1/ftp/files sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp/files sudo chmod -R 755 /home/ftpuser1/ftp
Pour ftp_oleks :
sudo mkdir -p /home/ftp_oleks/ftp/files sudo chown ftp_oleks:ftp_oleks /home/ftp_oleks/ftp/files sudo chmod -R 755 /home/ftp_oleks/ftp
Étape 5 : Tester la connexion FTP
Test avec FileZilla
FileZilla est un client FTP populaire et facile à utiliser. Voici comment tester votre configuration :
Téléchargez et installez FileZilla :
Pour Windows ou macOS, téléchargez le client depuis filezilla-project.org et procédez à l’installation.
Pour Linux (Debian/Ubuntu), utilisez la commande suivante:
sudo apt install filezilla -y
Configurer la connexion dans FileZilla :
Ouvrez FileZilla et allez dans Fichier > Gestionnaire de sites.
Cliquez sur Nouveau site et configurez les paramètres (je choisi celon mon configuration precedante) :
- Host : Entrez l’adresse IP de votre serveur FTP.
- Encryption: Use explicit over TLS if available.
- Protocole : FTP – File Transfer Protocol.
- Type d’authentification : Normal.
- Utilisateur : ftp_oleks.
- Mot de passe : Le mot de passe que vous avez configuré.
Cliquez sur Connexion.
Dans la fenêtre popup, confirmez que votre connexion n’est pas sécurisée (ceci est normal, car SSL/TLS n’est pas configuré dans cette démonstration).
Tester l’envoi et la réception de fichiers :
Naviguez dans le répertoire distant /ftp/files.
Transférez des fichiers en les glissant depuis votre système local vers le serveur, ou vice versa ou créer nouveau fichier pour vérifier les droits d’écriture.
Voilà, vous avez connecté à votre serveur FTP à partir de FileZilla !
Tester le serveur FTP depuis Ubuntu (CLI)
Installer le client FTP (si ce n’est pas déjà fait) :
sudo apt update sudo apt install ftp -y
Se connecter au serveur FTP : Remplacez IP_SERVEUR par l’adresse IP de votre serveur et exécutez :
ftp IP_SERVEUR
Dans mon cas:
ftp 192.168.0.254
Si votre serveur utilise un port différent de 21 (par défaut pour FTP), spécifiez-le :
ftp -p IP_SERVEUR PORT
Saisir les identifiants :
Entrez le nom d’utilisateur (par exemple, ftpuser1) lorsqu’il est demandé.
Entrez le mot de passe associé.
Tester les commandes FTP
Une fois connecté, utilisez les commandes suivantes pour tester le serveur :
Lister les fichiers sur le serveur :
ls
Les autres commandes utiles :
Télécharger un fichier spécifique :
get file.txt
Télécharger plusieurs fichiers :
mget *.txt
Envoyer un fichier au serveur :
put file.txt
Envoyer plusieurs fichiers :
mput *.sh
Quitter la session FTP
Une fois terminé, déconnectez-vous en utilisant l’une des commandes suivantes :
bye quit exit
Gestion des fichiers de configuration
Fichier des utilisateurs interdits : /etc/vsftpd/ftpusers Liste des utilisateurs qui ne peuvent pas accéder au FTP.
Liste des utilisateurs : /etc/vsftpd/user_list Configurez les utilisateurs autorisés ou interdits en fonction de userlist_deny.
Configuration principale : /etc/vsftpd/vsftpd.conf Paramètres principaux pour personnaliser le serveur FTP.
Votre serveur FTP est maintenant configuré et opérationnel avec des utilisateurs (ftpuser1 et ftp_oleks). Vous pouvez utiliser FileZilla ou le terminal pour gérer facilement vos fichiers.
Conseils pour améliorer la sécurité :
- Activez SSL/TLS pour chiffrer les connexions et protéger vos identifiants.
- Limitez les ports passifs ouverts pour réduire les risques d’attaques.
- Utilisez un pare-feu comme ufw pour restreindre l’accès au serveur.
- Désactivez les utilisateurs inutilisés ou anonymes pour réduire les surfaces d’attaque.
- Utilisez Fail2ban pour bloquer les tentatives de connexion non autorisées.
Avec ces ajustements, vous renforcez la sécurité de votre serveur FTP tout en assurant sa performance.
Bonne chance !