Comment créer un serveur FTP sécurisé sur Ubuntu avec vsftpd (Guide du débutant à l’expert)

.

目次

1. Introduction

Construire un serveur FTP sur Ubuntu est une solution très pratique pour les développeurs et les administrateurs qui souhaitent transférer des fichiers de manière efficace. En particulier lorsqu’on met en place un serveur domestique ou un environnement simple de partage de fichiers interne, le FTP (File Transfer Protocol) reste une option facile à déployer et directe.

Qu’est‑ce qu’un serveur FTP ?

Un serveur FTP est un logiciel serveur dédié utilisé pour transférer des fichiers sur Internet ou sur un réseau local. Les utilisateurs se connectent au serveur à l’aide d’une application cliente FTP pour envoyer ou télécharger des fichiers.

Bien que des alternatives sécurisées comme SFTP et SCP soient de plus en plus courantes, le FTP reste largement utilisé grâce à sa simplicité et à sa légèreté. Dans des réseaux restreints ou pour des cas d’usage basiques, le FTP continue d’être un protocole pratique et efficace.

Le rôle d’un serveur FTP sur Ubuntu

Ubuntu est l’une des distributions Linux les plus populaires et est largement employée dans les environnements serveur. En installant un serveur FTP sur Ubuntu, le partage de fichiers entre plusieurs appareils et utilisateurs devient beaucoup plus simple.

Cas d’utilisation typiques :

  • Transfert de fichiers vers un serveur web
  • Intégration avec des appareils IoT tels que le Raspberry Pi
  • Partage de documents internes à l’entreprise

L’association d’Ubuntu et d’un serveur FTP permet une gestion de fichiers flexible et efficace.

Objectif de cet article et public cible

Cet article explique comment créer un serveur FTP sur Ubuntu de façon pas à pas, compréhensible même pour les débutants. Il s’adresse aux lecteurs qui :

  • Connaissent les opérations de base d’Ubuntu mais sont novices en FTP
  • Souhaitent mettre en place un serveur FTP pour un usage local ou une petite entreprise
  • Veulent comprendre les considérations de sécurité et les problèmes tels que l’encodage des noms de fichiers

En suivant les étapes de ce guide, vous serez capable de mettre en place un environnement serveur FTP sécurisé et fonctionnel. Dans la section suivante, nous commencerons par installer l’un des serveurs FTP les plus populaires : vsftpd.

2. Installation de vsftpd

Lors de la création d’un serveur FTP sur Ubuntu, le logiciel le plus couramment utilisé est vsftpd (Very Secure FTP Daemon). Comme son nom l’indique, il a été conçu avec la sécurité à l’esprit, est léger et stable, ce qui le rend très répandu dans les milieux d’entreprise et d’enseignement.

Cette section explique comment installer vsftpd sur Ubuntu et configurer le service pour qu’il démarre automatiquement.

Installation de vsftpd

Tout d’abord, installez vsftpd à l’aide du gestionnaire de paquets d’Ubuntu (APT). Exécutez les commandes suivantes dans l’ordre :

sudo apt update
sudo apt install vsftpd
  • sudo apt update : Met à jour la liste des paquets
  • sudo apt install vsftpd : Installe le paquet vsftpd

Une fois l’installation terminée, le service vsftpd démarre automatiquement.

Vérification de l’état du service

Pour vérifier que vsftpd est installé et fonctionne correctement, utilisez la commande suivante :

sudo systemctl status vsftpd

Si vous voyez active (running), le serveur FTP fonctionne normalement.

Activation du démarrage automatique

vsftpd est généralement configuré pour démarrer automatiquement par défaut, mais il est bon de le confirmer :

sudo systemctl enable vsftpd

Cela garantit que vsftpd démarre automatiquement après les redémarrages du système.

N’oubliez pas la configuration du pare‑feu (UFW)

Si UFW (Uncomplicated Firewall) est activé sur Ubuntu, vous devez autoriser les ports FTP :

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp

Cela ouvre les ports standards du FTP : 20 (données) et 21 (commandes).

Après avoir modifié les règles du pare‑feu, rechargez UFW :

sudo ufw reload

3. Configuration de base

Après l’installation de vsftpd, l’étape suivante consiste à personnaliser son comportement en éditant le fichier de configuration. Bien que vsftpd offre un contrôle très fin, de nombreuses fonctionnalités sont désactivées par défaut, il faut donc activer explicitement celles dont vous avez besoin.

Cette section explique les options de configuration les plus courantes et essentielles.

Emplacement du fichier de configuration

Le fichier de configuration principal de vsftpd se trouve à :

/etc/vsftpd.conf

Modifiez le fichier en utilisant la commande suivante :

sudo nano /etc/vsftpd.conf

Après avoir effectué les modifications, redémarrez vsftpd pour les appliquer :

sudo systemctl restart vsftpd

Autoriser les opérations d’écriture (téléversements, suppressions, modifications)

Par défaut, vsftpd n’autorise pas les téléversements ou les modifications de fichiers. Pour activer l’accès en écriture, décommentez ou ajoutez la ligne suivante :

write_enable=YES

Cela permet aux utilisateurs de téléverser, supprimer et modifier des fichiers dans leurs répertoires personnels.

Activer la connexion des utilisateurs locaux

Pour permettre aux utilisateurs du système Ubuntu de se connecter via FTP, activez l’option suivante :

local_enable=YES

Cela permet aux utilisateurs répertoriés dans /etc/passwd de se connecter via FTP.

Activer l’affichage du listing des répertoires

Si l’affichage du listing des répertoires échoue dans les clients FTP, vérifiez les paramètres suivants :

listen=YES
listen_ipv6=NO

Si IPv6 est désactivé sur votre système mais que listen_ipv6=YES reste activé, des problèmes de connexion peuvent survenir.

Définir une bannière de connexion (optionnel)

Vous pouvez afficher un message personnalisé lorsque les utilisateurs se connectent au serveur FTP :

ftpd_banner=Welcome to your custom Ubuntu FTP server!

Ceci est utile pour afficher des avis opérationnels ou des informations de contact.

Activer les transferts en mode ASCII (si nécessaire)

Si vous devez transférer correctement des fichiers texte avec différents formats de fin de ligne, activez le mode ASCII :

ascii_upload_enable=YES
ascii_download_enable=YES

Le mode binaire suffit dans la plupart des cas, mais le mode ASCII peut être utile dans des environnements spécifiques.

vsftpd nécessite une permission explicite pour chaque fonctionnalité, rendant la configuration transparente et sécurisée. Redémarrez toujours le service après avoir modifié le fichier de configuration.

4. Renforcer la sécurité

Bien que le FTP soit pratique, il ne chiffre pas le trafic par défaut, ce qui soulève des problèmes de sécurité—surtout lorsqu’il est utilisé sur Internet. Une configuration de sécurité appropriée est essentielle.

Cette section présente les principales mesures de sécurité disponibles dans vsftpd.

Restreindre l’accès des utilisateurs avec chroot

Permettre aux utilisateurs FTP d’accéder à des répertoires en dehors de leur répertoire personnel est dangereux. Utilisez chroot pour confiner les utilisateurs à leurs répertoires personnels.

chroot_local_user=YES
allow_writeable_chroot=YES
  • chroot_local_user=YES empêche les utilisateurs d’accéder aux répertoires au-dessus de leur répertoire personnel.
  • allow_writeable_chroot=YES est requis lorsque le répertoire personnel possède des permissions d’écriture.

Sans ce paramètre, l’erreur suivante se produit :

500 OOPS: vsftpd: refusing to run with writable root inside chroot

Restreindre les utilisateurs de connexion (liste blanche)

Autoriser tous les utilisateurs du système à se connecter via FTP augmente le risque de sécurité. À la place, restreignez l’accès à l’aide d’une liste blanche.

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Ajoutez les utilisateurs autorisés à la liste :

sudo nano /etc/vsftpd.userlist
ftpuser1
ftpuser2

Seuls les utilisateurs explicitement listés peuvent se connecter.

Activer la communication chiffrée avec FTPS (SSL/TLS)

Le FTP standard transmet les identifiants et les données en texte clair. Pour éviter l’interception, activez FTPS (FTP sur SSL/TLS).

Créez un certificat SSL :

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Ajoutez ce qui suit à vsftpd.conf :

ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Les clients peuvent désormais se connecter en utilisant le FTPS explicite.

Désactiver les fonctionnalités inutiles

Désactivez les fonctionnalités inutilisées pour réduire la surface d’attaque :

anonymous_enable=NO

Cela désactive explicitement la connexion anonyme.

5. Prise en charge des noms de fichiers japonais

Lors du transfert de fichiers via FTP, les noms de fichiers japonais peuvent devenir illisibles en raison de problèmes d’encodage—surtout entre Windows et Ubuntu.

.### Causes courantes des problèmes d’encodage de noms de fichiers

  1. La locale Ubuntu n’est pas définie sur UTF-8
  2. L’encodage du client FTP ne correspond pas
  3. vsftpd n’opère pas en mode UTF-8

Vérifier et configurer la locale Ubuntu

locale
LANG=ja_JP.UTF-8

Si UTF-8 n’est pas activé :

sudo update-locale LANG=ja_JP.UTF-8
source /etc/default/locale
sudo locale-gen ja_JP.UTF-8

Vérifier la prise en charge de l’UTF-8 par vsftpd

utf8_filesystem=YES

Cette option peut ne pas exister dans toutes les versions, mais les locales système UTF-8 suffisent généralement.

Paramètres du client FTP (exemple FileZilla)

  1. Ouvrir le gestionnaire de sites
  2. Sélectionner le serveur
  3. Ouvrir l’onglet Jeu de caractères
  4. Activer le jeu de caractères personnalisé et le définir sur UTF-8

6. Mode passif et configuration du pare-feu

Les problèmes FTP tels que les listes de répertoires échouées ou les transferts bloqués sont souvent causés par un mode passif incorrect ou des paramètres de pare-feu.

Qu’est-ce que le mode passif ?

  • Mode actif : Le serveur initie la connexion de données
  • Mode passif : Le client initie toutes les connexions

Le mode passif est fortement recommandé pour les réseaux modernes.

Activer le mode passif dans vsftpd

pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000

Spécifier l’adresse IP externe (environnements NAT)

pasv_address=203.0.113.45

Ouvrir les ports requis dans UFW

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

7. Configuration par utilisateur

Dans les environnements de production, il est courant d’attribuer des permissions et des répertoires différents à chaque utilisateur.

Créer des utilisateurs FTP dédiés

sudo adduser ftpuser1
sudo useradd -m -s /usr/sbin/nologin ftpuser2

Structure de répertoires recommandée

/home/ftpuser1/
└── files/
sudo mkdir /home/ftpuser1/files
sudo chown ftpuser1:ftpuser1 /home/ftpuser1/files
sudo chmod 755 /home/ftpuser1

Fichiers de configuration spécifiques à l’utilisateur

user_config_dir=/etc/vsftpd_user_conf
sudo mkdir /etc/vsftpd_user_conf
sudo nano /etc/vsftpd_user_conf/ftpuser1
local_root=/home/ftpuser1/files
write_enable=YES

8. Vérification du fonctionnement

Après avoir terminé toutes les étapes de configuration, vérifiez que le serveur FTP fonctionne correctement.

Test en ligne de commande

ftp localhost
ls
cd files
put test.txt
get test.txt

Test du client GUI (FileZilla)

Vérifiez la connexion, la liste des répertoires, les téléchargements et les envois.

9. Dépannage

Les problèmes FTP courants et leurs solutions incluent les échecs de connexion, les erreurs de permission, la mauvaise configuration du mode passif et les problèmes d’encodage.

10. Conclusion

Cet article explique comment créer un serveur FTP sécurisé et pratique sur Ubuntu en utilisant vsftpd, couvrant l’installation, la configuration, la sécurité, l’encodage, le mode passif, la gestion des utilisateurs, la vérification et le dépannage.

FAQ

Questions fréquemment posées sur la configuration et le fonctionnement d’un serveur FTP sur Ubuntu.