Installer un serveur FTP sur VPS avec vsftpd

Vous cherchez à installer vsftpd VPS pour disposer d'un serveur FTP fiable, léger et sécurisé sur votre machine Linux ? vsftpd (Very Secure FTP Daemon) reste une référence pour le transfert de fichiers en environnement de production. Ce tutoriel 2026 couvre l'installation, la configuration TLS, le durcissement sécurité et la gestion des utilisateurs, avec des commandes réelles prêtes à l'emploi.
Pourquoi installer vsftpd sur un VPS en 2026
vsftpd est un démon FTP réputé pour sa légèreté et sa robustesse. Écrit en C, il consomme très peu de ressources, ce qui le rend idéal sur un VPS Linux OmegaCloud même avec une configuration modeste. Il supporte le chiffrement TLS explicite (FTPS), le chrooting des utilisateurs et une isolation fine des accès. Pour du partage de fichiers avec interface web, synchronisation et droits par utilisateur, un VPS Nextcloud répond mieux au besoin que FTP.
Cas d'usage typiques
- Dépôt de fichiers pour une équipe ou des prestataires externes.
- Transfert automatisé de sauvegardes vers un serveur distant.
- Livraison de builds ou d'assets dans un pipeline manuel.
- Accès contrôlé à des répertoires web avec chroot par utilisateur.
FTP, FTPS ou SFTP : clarifions
Attention à ne pas confondre les protocoles :
| Protocole | Chiffrement | Port par défaut | Serveur |
|---|---|---|---|
| FTP | Aucun (clair) | 21 | vsftpd |
| FTPS (FTP over TLS) | TLS explicite/implicite | 21 + plage passive | vsftpd |
| SFTP | SSH | 22 | OpenSSH |
vsftpd gère FTP et FTPS. Le SFTP, lui, transite par SSH et ne relève pas de vsftpd. Dans ce guide, nous configurons FTPS pour éviter tout transfert d'identifiants en clair.
Installer vsftpd VPS : préparation et installation
Cette section détaille comment installer vsftpd VPS étape par étape sur Debian/Ubuntu et sur les distributions RHEL-like (Rocky, Alma). Les exemples utilisent une base Debian/Ubuntu, largement répandue sur les VPS.
Prérequis
- Un VPS avec accès root ou un utilisateur sudo.
- Un système à jour.
- Un nom de domaine ou une IP publique fixe.
Commencez par mettre le système à jour :
sudo apt update
sudo apt upgrade -y
Installation du paquet
Sur Debian ou Ubuntu :
sudo apt install vsftpd -y
Sur Rocky Linux ou AlmaLinux :
sudo dnf install vsftpd -y
Sauvegardez immédiatement la configuration d'origine avant toute modification :
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
Activez et démarrez le service :
sudo systemctl enable vsftpd
sudo systemctl start vsftpd
sudo systemctl status vsftpd
Le statut doit indiquer active (running). Si ce n'est pas le cas, consultez les journaux :
sudo journalctl -u vsftpd -n 50 --no-pager
Configuration de vsftpd : durcissement et TLS
La configuration par défaut n'est pas adaptée à la production. Nous allons la restreindre et activer le chiffrement. Éditez le fichier :
sudo nano /etc/vsftpd.conf
Paramètres de base recommandés
Ajustez ou décommentez les directives suivantes :
# Désactiver l'accès anonyme
anonymous_enable=NO
# Autoriser les utilisateurs locaux
local_enable=YES
# Autoriser l'écriture
write_enable=YES
# Masque de permissions
local_umask=022
# Isoler chaque utilisateur dans son répertoire home
chroot_local_user=YES
allow_writeable_chroot=YES
# Messages de bienvenue
dirmessage_enable=YES
# Horodatage en heure locale
use_localtime=YES
# Journalisation des transferts
xferlog_enable=YES
xferlog_std_format=YES
Restreindre l'accès à une liste d'utilisateurs
Pour n'autoriser que des comptes explicitement listés, ajoutez :
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
Puis créez le fichier avec les utilisateurs autorisés :
echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist
Configurer le mode passif
Le mode passif est indispensable derrière un pare-feu. Définissez une plage de ports dédiée :
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
pasv_address=VOTRE_IP_PUBLIQUE
Remplacez VOTRE_IP_PUBLIQUE par l'adresse IP visible depuis Internet, disponible dans le dashboard de votre panel OmegaCloud.
Activer TLS (FTPS)
Le FTP en clair expose les identifiants. Générez un certificat auto-signé (ou utilisez un certificat Let's Encrypt existant) :
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.pem \
-out /etc/ssl/private/vsftpd.pem
Ajoutez ensuite le bloc TLS dans vsftpd.conf :
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
Redémarrez le service pour appliquer :
sudo systemctl restart vsftpd
Créer un utilisateur FTP et ouvrir le pare-feu
Il est déconseillé d'utiliser un compte système existant. Créez un utilisateur dédié au FTP.
Création d'un utilisateur dédié
sudo adduser ftpuser
sudo mkdir -p /home/ftpuser/files
sudo chown ftpuser:ftpuser /home/ftpuser/files
Si vous utilisez le chroot strict, le répertoire home ne doit pas être inscriptible par l'utilisateur. Créez un sous-dossier dédié aux fichiers comme ci-dessus, ou utilisez allow_writeable_chroot=YES pour plus de souplesse.
Ajoutez l'utilisateur à la liste autorisée :
echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist
Configurer le pare-feu UFW
Ouvrez le port de commande FTP et la plage passive :
sudo ufw allow 21/tcp
sudo ufw allow 40000:40100/tcp
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verbose
Alternative avec nftables
Si vous préférez nftables, un exemple minimal :
sudo nft add rule inet filter input tcp dport 21 accept
sudo nft add rule inet filter input tcp dport 40000-40100 accept
Anti-DDoS et couche réseau
La protection contre les attaques volumétriques n'est pas du ressort de vsftpd. Sur l'infrastructure OmegaCloud, la mitigation anti-DDoS kernel-level est incluse par défaut et transparente : elle filtre les floods réseau avant qu'ils n'atteignent votre démon FTP. Vous restez responsable du durcissement applicatif (limitation des tentatives, chiffrement, comptes dédiés).
Sécurisation avancée et tests
Une fois vsftpd fonctionnel, quelques mesures complémentaires renforcent la surface d'attaque.
Protéger contre le brute-force avec fail2ban
Installez fail2ban et activez la protection vsftpd :
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
Créez un fichier /etc/fail2ban/jail.d/vsftpd.local :
[vsftpd]
enabled = true
port = ftp,ftp-data,40000:40100
logpath = /var/log/vsftpd.log
maxretry = 4
bantime = 3600
Rechargez fail2ban :
sudo systemctl restart fail2ban
sudo fail2ban-client status vsftpd
Bonnes pratiques complémentaires
- Privilégiez toujours FTPS ou SFTP plutôt que le FTP en clair.
- Activez l'authentification 2FA sur votre panel de gestion.
- Utilisez des clés SSH uniquement pour l'accès administrateur, jamais de mot de passe SSH.
- Limitez la plage passive au strict nécessaire.
- Surveillez régulièrement
/var/log/vsftpd.log. - Désactivez l'accès anonyme (déjà fait via
anonymous_enable=NO).
Consultez la documentation officielle de la commande et des services pour approfondir : Source.
Tester la connexion
Depuis un poste client, testez la connexion FTPS avec un client compatible (en ligne de commande avec lftp) :
lftp -u ftpuser -e "set ftp:ssl-force true; set ssl:verify-certificate no; ls; quit" VOTRE_IP_PUBLIQUE
Si vous obtenez un listing du répertoire, la configuration est opérationnelle. En cas d'erreur de connexion passive, vérifiez que la plage 40000-40100 est bien ouverte et que pasv_address pointe vers l'IP publique correcte.
Diagnostic rapide
| Symptôme | Cause probable | Action |
|---|---|---|
| Connexion refusée port 21 | Service arrêté ou pare-feu | Vérifier systemctl status et UFW |
| Login OK, listing bloqué | Mode passif mal configuré | Ouvrir la plage passive et pasv_address |
| 500 OOPS chroot | Home inscriptible | Ajouter allow_writeable_chroot=YES |
| Refus TLS | Certificat introuvable | Vérifier les chemins rsa_cert_file |
Pour aller plus loin sur l'automatisation du provisioning et l'intégration à vos pipelines, explorez les Integrations & API OmegaCloud.
vsftpd reste une solution éprouvée pour exposer un service de transfert de fichiers sécurisé sur un serveur Linux. En combinant chroot, TLS, fail2ban et un pare-feu strict, vous obtenez un FTPS robuste. Pensez toujours à privilégier le chiffrement et à surveiller les journaux pour garder la maîtrise de vos accès.
FAQ
Faut-il préférer vsftpd ou SFTP pour transférer des fichiers ?
SFTP (via OpenSSH) est souvent plus simple à sécuriser car il réutilise le port SSH et le chiffrement existant. vsftpd en mode FTPS reste pertinent si vous avez besoin de comptes FTP dédiés, d'un chroot fin par utilisateur ou d'une compatibilité avec des clients FTP historiques. Évitez toujours le FTP en clair.
Pourquoi le listing des fichiers échoue-t-il en mode passif ?
C'est généralement dû à la plage de ports passifs non ouverte dans le pare-feu ou à une valeur pasv_address incorrecte. Vérifiez que la plage définie dans vsftpd.conf (ex. 40000-40100) est autorisée dans UFW ou nftables, et que l'IP publique renseignée correspond bien à celle vue depuis Internet.
Comment protéger vsftpd contre les attaques par force brute ?
Installez fail2ban et activez une jail vsftpd surveillant /var/log/vsftpd.log, avec un bannissement après quelques tentatives échouées. Ajoutez le chiffrement TLS obligatoire, désactivez l'accès anonyme et limitez les comptes autorisés via userlist_file. Les attaques volumétriques réseau sont, elles, filtrées par l'anti-DDoS de l'infrastructure.
Prêt à mettre en pratique ce que vous venez de lire ?
Découvrir nos offres

