Les spécificités du FTPS (modes actif/passif ; TLS implicite/explicite)
Introduction
Le FTPS (FTP over SSL/TLS) est l'extension sécurisée du protocole FTP qui utilise les protocoles SSL ou TLS pour chiffrer la communication entre le client et le serveur.
Comme FTP, FTPS utilise deux canaux pour fonctionner :
- Le canal de commande (pour les commandes et la négociation de la session)
- Le canal de données (pour le transfert effectif des fichiers)
Dans ce contexte, il existe deux axes de configuration importants :
- Le mode de transfert de données : actif vs passif
- La méthode de sécurisation de la connexion : TLS implicite vs TLS explicite
Nous allons détailler chacun de ces axes.
I. Modes de transfert de données : Actif vs Passif
1. Le fonctionnement général de FTP/FTPS
- Canal de commande : Établi en premier pour échanger les commandes entre client et serveur (généralement sur le port 21 en FTP ou en TLS explicite FTPS).
- Canal de données : Utilisé pour le transfert effectif des fichiers. Sa mise en place diffère selon le mode choisi.
2. Mode Actif
Principe :
- Connexion initiale : Le client ouvre une connexion sur le port 21 du serveur pour le canal de commande.
- Établissement du canal de données :
- Le client ouvre un port local (généralement un port éphémère) et envoie au serveur, via la commande PORT, l'adresse IP et le numéro de port sur lequel il écoute.
- Le serveur, depuis son port dédié aux transferts (traditionnellement le port 20), initie alors une connexion vers le client pour établir le canal de données.
Avantages :
- Mise en œuvre simple du côté serveur, puisque c'est lui qui utilise un port fixe (souvent le port 20) pour initier la connexion de données.
Inconvénients :
- Problèmes avec les firewalls/NAT :
- Le client doit être en mesure d'accepter des connexions entrantes depuis le serveur, ce qui est souvent bloqué par des firewalls ou des dispositifs NAT, rendant le mode actif difficile à utiliser dans des environnements sécurisés.
3. Mode Passif
Principe :
- Connexion initiale : Le client se connecte sur le port 21 du serveur pour établir le canal de commande.
- Établissement du canal de données :
- Le client envoie la commande PASV au serveur.
- Le serveur ouvre alors un port aléatoire (dans une plage prédéfinie) pour le transfert de données et communique ce numéro de port au client.
- Le client initie ensuite la connexion de données en se connectant à ce port sur le serveur.
Avantages :
- Compatibilité avec les firewalls/NAT :
- Le client initie toutes les connexions (tant le canal de commande que celui de données), ce qui contourne les restrictions de firewalls qui bloquent les connexions entrantes.
Inconvénients :
- Configuration serveur :
- Le serveur doit être configuré pour ouvrir et gérer une plage de ports pour les connexions passives.
- Sécurité et FTPS :
- En FTPS, le numéro de port communiqué dans la commande PASV est chiffré. Ainsi, certains dispositifs de sécurité (firewalls, systèmes de détection d'intrusion) qui inspectent les contenus des paquets peuvent rencontrer des difficultés pour ajuster leurs règles, ce qui peut entraîner des blocages si ces dispositifs ne sont pas correctement configurés pour FTPS.
II. Modes de sécurisation TLS : Implicite vs Explicite
1. TLS Explicite (aussi appelé FTPES)
Principe :
- Connexion initiale en clair :
- Le client se connecte sur le port standard 21 du serveur, et la session commence en mode non sécurisé.
- Mise à niveau vers TLS :
- Le client envoie la commande AUTH TLS (ou parfois AUTH SSL) pour demander au serveur de passer en mode sécurisé.
- Après la négociation TLS (handshake) et la validation des certificats, le canal de commande (et par extension le canal de données) est chiffré.
Avantages :
- Flexibilité :
- Permet aux serveurs de proposer une connexion sécurisée si le client le demande, tout en offrant la possibilité de retomber sur une connexion en clair si nécessaire (même si, en pratique, l'utilisation de FTPS vise à assurer la sécurité).
- Compatibilité ascendante :
- Peut être utilisé sur des infrastructures existantes sans avoir à réserver un port spécifique pour la connexion chiffrée.
Inconvénients :
- Exposition initiale :
- La connexion débute en clair. Même si la négociation TLS intervient rapidement, il y a un court instant où les informations échangées (notamment la commande d'authentification) ne sont pas protégées.
2. TLS Implicite
Principe :
- Connexion sécurisée dès le départ :
- Le client se connecte sur un port différent du port FTP standard, généralement le port 990.
- La connexion est immédiatement chiffrée par TLS, sans négociation explicite via une commande telle que AUTH TLS.
Avantages :
- Sécurité renforcée :
- Aucune partie de la communication n'est transmise en clair, éliminant ainsi le risque d'exposition lors de la phase initiale.
- Simplicité :
- Le fait que toute la communication soit sécurisée dès l'établissement de la connexion peut simplifier la gestion de la sécurité.
Inconvénients :
- Moins de flexibilité :
- La connexion doit être sécurisée dès le départ, ce qui peut poser des problèmes de compatibilité avec certains anciens clients ou environnements qui n'ont pas prévu l'usage d'un port différent (990).
- Normes moins universelles :
- Bien que le mode implicite ait été largement utilisé dans le passé, le mode explicite est devenu plus courant dans de nombreux déploiements FTPS.
3. Comparaison entre TLS Explicite et TLS Implicite
| Caractéristique |
TLS Explicite |
TLS Implicite |
| Port de connexion |
Port standard 21 (puis passage en TLS) |
Port dédié (typiquement 990) dès l'établissement |
| Mécanisme de sécurisation |
Commande AUTH TLS pour négocier le chiffrement |
La connexion est immédiatement chiffrée, sans commande |
| Flexibilité |
Permet de basculer entre une session chiffrée et non chiffrée (théoriquement) |
Oblige à utiliser le chiffrement pour toute la session |
| Compatibilité |
Généralement mieux accepté sur des infrastructures existantes |
Peut poser des problèmes avec des clients ou des pare-feux non configurés pour le port 990 |
Que choisir ??
- Mode Actif vs Passif :
- Actif : Le serveur initie la connexion de données vers le client, ce qui peut être problématique pour le client (surtout derrière un NAT ou un firewall).
- Passif : Le client initie toutes les connexions, ce qui améliore la compatibilité avec des environnements protégés, mais nécessite une configuration adéquate du serveur (plage de ports ouverte) et des règles de firewall adaptées, surtout dans le contexte de FTPS où les numéros de port sont chiffrés.
- TLS Implicite vs TLS Explicite :
- TLS Explicite : La sécurisation est négociée au sein d'une session commencée en clair (via la commande AUTH TLS), ce qui offre une certaine flexibilité et une meilleure compatibilité avec des configurations existantes.
- TLS Implicite : La connexion est sécurisée dès le départ sur un port dédié, garantissant qu'aucune information n'est échangée en clair, mais cela peut poser des contraintes de compatibilité.
Le choix entre ces modes dépendra donc des contraintes réseau (pare-feux, NAT), des exigences de sécurité et de la compatibilité avec les clients et serveurs utilisés dans votre environnement.