Configurer un serveur FTPS avec VsFTPd sous Debian

Introduction

VsFTPd (Very Secure FTP Daemon) est un serveur FTP open source, principalement utilisé sous Unix/Linux, qui se distingue par :

Nous allons ici nous attacher à configurer un simple serveur FTPS (over SSL) sur Debian.
Il devra permettre la connexion (chrootée) des utilisateurs Linux dans leur répertoire de base.
Ces utilisateurs ne devront pas pouvoir remonter à la racine du système ni se rendre dans un quelconque autre dossier.


Installation et Configuration

Se loguer en root

su -

Faire la mise à jour du catalogue de paquets

apt update

Installer VsFTPd

apt install vsftpd -y

Générer un certificat SSL

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.pem \
-out /etc/ssl/certs/vsftpd.pem \
  -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Pau/O=Afpa/OU=IT/CN=ftp.monserveur.fr/emailAddress=admin@monserveur.fr"

Configurer le fichier /etc/vsftpd.conf
Voici une configuration complète :

# Activer l'écoute sur IPv4
listen=YES
listen_ipv6=NO

# Désactiver l'accès anonyme
anonymous_enable=NO

# Autoriser les utilisateurs locaux (comptes Linux)
local_enable=YES
write_enable=YES

# Masque de création de fichier
local_umask=022

# Activer l'affichage des messages dans les répertoires
dirmessage_enable=YES
use_localtime=YES

# Forcer le serveur FTP à utiliser le port 20 comme port source pour établir les connexions de transfert de données en mode actif.
connect_from_port_20=YES

# Sécuriser l'environnement des utilisateurs en les enfermant dans leur répertoire personnel
chroot_local_user=YES
allow_writeable_chroot=YES

#######################
# Configuration SSL/TLS
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

# Autoriser TLS (désactiver SSLv2 et SSLv3, considérés comme obsolètes)
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

# Chemins vers le certificat et la clé
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

# Chiffrement fort
ssl_ciphers=HIGH

#######################
# Configuration du mode passif (si DNAT avec pare-feu)
#pasv_enable=YES
#pasv_min_port=10000
#pasv_max_port=10100
#pasv_address=12.23.34.45

#######################
# Logs
# Journalisation des transferts
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
dual_log_enable=YES

# Journalisation du protocole FTP (commandes/réponses)
log_ftp_protocol=YES
vsftpd_log_file=/var/log/vsftpd.log

Relancer VsFTPd

systemctl restart vsftpd

Vérifier le statut

systemctl status vsftpd

Connexion depuis un client FTP

Sur un client FTP (type FileZilla)
- initier une connexion en mode explicite avec :

Hôte : ftpes://IP-SERVEUR
Nom d'utilisateur : votre-utilisateur-linux
Mot de passe : son-mot-de-passe
Ne pas préciser de port.. Par défaut FileZilla se connectera au port 21.


⬆️ Retour en haut de la page