Security
Difficulte: Intermediate
5 min de lecture

FTPS : Sécuriser les transferts FTP avec SSL/TLS

Tutoriel détaillé pour installer et configurer FTPS (FTP sur SSL/TLS) avec vsftpd sur Linux pour des transferts de fichiers sécurisés.

Retour aux tutoriels
FTPS vs SFTP : Quelle est la différence ?
Ne confondez pas FTPS (FTP Secure) et SFTP (SSH File Transfer Protocol). - FTPS est le protocole FTP classique auquel on ajoute une couche de chiffrement SSL/TLS. - SFTP est un protocole de transfert de fichiers entièrement différent, qui fonctionne sur la base de SSH. Ce tutoriel traite de FTPS.

Pourquoi utiliser FTPS ?

  • Chiffrement : Protège les identifiants de connexion et les données transférées contre l'écoute sur le réseau.
  • Conformité : Requis par de nombreuses normes de sécurité (PCI-DSS, etc.) pour le transfert de données sensibles.
  • Authentification : Utilise des certificats SSL/TLS pour vérifier l'identité du serveur.

Prérequis

  • Un serveur Linux (Ubuntu/Debian, CentOS/RHEL).
  • Accès root ou privilèges sudo.
  • Un pare-feu configuré sur le serveur.

Installation de vsftpd

Nous utiliserons vsftpd (Very Secure FTP Daemon), un serveur FTP populaire et sécurisé.

# Sur Debian / Ubuntu
sudo apt-get update
sudo apt-get install -y vsftpd

# Sur CentOS / RHEL
sudo yum install -y vsftpd

Configuration de FTPS

Étape 1 : Créer un certificat SSL/TLS

Pour le chiffrement, nous avons besoin d'un certificat. Pour un environnement de production, utilisez un certificat d'une autorité de certification (comme Let's Encrypt). Pour ce guide, nous créons un certificat auto-signé valable un an.

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

Remplissez les informations demandées. Pour le "Common Name", vous pouvez utiliser le nom de domaine de votre serveur ou son adresse IP.

Étape 2 : Configurer vsftpd.conf

Sauvegardez le fichier de configuration original et modifiez-le.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
sudo nano /etc/vsftpd.conf

Assurez-vous que votre configuration ressemble à ceci, en adaptant si nécessaire :

# Désactiver les connexions anonymes
anonymous_enable=NO
# Autoriser les utilisateurs locaux à se connecter
local_enable=YES
# Permettre les commandes d'écriture (upload, delete, etc.)
write_enable=YES
# Enfermer les utilisateurs dans leur répertoire personnel (chroot)
chroot_local_user=YES
# Permettre l'écriture dans le répertoire chroot (nécessaire avec les versions récentes)
allow_writeable_chroot=YES

# --- Configuration FTPS ---
# Activer SSL
ssl_enable=YES

# Forcer les clients à utiliser SSL pour le transfert de données et la connexion
force_local_data_ssl=YES
force_local_logins_ssl=YES

# Utiliser des versions TLS sécurisées
ssl_tlsv1_2=YES
ssl_sslv3=NO
ssl_sslv2=NO

# Chemin vers notre certificat et notre clé (le même fichier pour notre certificat auto-signé)
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

# --- Configuration du mode passif ---
# Le mode passif est nécessaire pour passer les pare-feux et NAT
pasv_enable=YES
# Spécifier une plage de ports pour les connexions passives
pasv_min_port=30000
pasv_max_port=31000

Étape 3 : Configurer le pare-feu

Vous devez ouvrir les ports pour le contrôle FTP et pour la plage de ports passifs que vous avez définie.

# Pour UFW (Ubuntu/Debian)
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw status

# Pour firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload

Étape 4 : Redémarrer le service

sudo systemctl restart vsftpd
Serveur FTPS prêt !
Votre serveur est maintenant configuré pour accepter des connexions FTPS sécurisées.

Créer un utilisateur FTP

Créez un utilisateur système standard. Il sera automatiquement un utilisateur FTP.

sudo adduser mon_utilisateur_ftp
# Suivez les instructions pour définir un mot de passe

Cet utilisateur sera confiné à son répertoire /home/mon_utilisateur_ftp lors de la connexion.

Test de la connexion

Utilisez un client FTP moderne comme FileZilla ou WinSCP.

  • Protocole : FTP
  • Hôte : l'adresse IP de votre serveur
  • Chiffrement : Exiger FTP explicite sur TLS (ou "FTPES")
  • Identifiant / Mot de passe : Ceux de l'utilisateur que vous venez de créer.

Comme vous utilisez un certificat auto-signé, le client affichera un avertissement de sécurité. C'est normal. Acceptez le certificat pour continuer.

Dépannage
Si la connexion échoue, les problèmes les plus courants sont : 1. Le pare-feu bloque les ports (notamment la plage passive). 2. Problème de permissions sur les fichiers de certificat. 3. Erreur de syntaxe dans `vsftpd.conf`. Vérifiez les logs de `vsftpd` (souvent dans /var/log/vsftpd.log) et les logs d'authentification (/var/log/auth.log ou /var/log/secure).

Conclusion

La mise en place d'un serveur FTPS avec `vsftpd` est une étape cruciale pour sécuriser les transferts de fichiers. En forçant le chiffrement SSL/TLS, vous vous assurez que les données et les identifiants de vos utilisateurs sont protégés. La configuration est relativement simple et augmente considérablement le niveau de sécurité par rapport à un serveur FTP standard.