Le protocole FTP (File Transfer Protocol) est l’une des méthodes de transfert de données les plus populaires pour différents cas d’utilisation.
Il existe différentes variantes sécurisées de FTP, connues sous le nom de FTPS et SFTP, qui intègrent certaines différences subtiles et d’autres moins subtiles dans leur fonctionnement. Ces différences concernent la manière dont les données sont échangées, le niveau et le type de sécurité dans la communication, et les considérations relatives aux pare-feux.
Connaître le fonctionnement de ces protocoles et les différences entre ces mécanismes de transfert populaires peut vous aider à choisir celui qui répond le mieux à vos besoins.
FTP
FTP est un protocole de transfert de fichiers vieux de plusieurs décennies, proposé à l’origine dans le cadre de la RFC 114. Il a ensuite évolué vers la RFC 959, qui est la norme utilisée aujourd’hui.
FTP fonctionne sur deux canaux pour l’échange d’informations : l’un pour les commandes et l’autre pour les données. Deux ports sont donc nécessaires au fonctionnement de FTP : le canal de commande et le canal de données.
Le canal de commande fonctionne sur le port 21, qui accepte les connexions des clients et gère la transmission des commandes. Le canal de commande reste ouvert pendant toute la durée de la session FTP jusqu’à ce que le client envoie la commande QUIT
ou que le serveur se déconnecte de force pour cause d’inactivité ou pour toute autre raison possible.
Le canal de données utilise un port temporaire à la demande qui écoute le serveur (mode passif) ou le client (mode actif). Ce canal est responsable du partage des données réelles entre le serveur et le client sous la forme de listes de répertoires et de transferts de fichiers.
Contrairement au canal de commande, le canal de données ne reste ouvert que pendant la durée du transfert de fichiers, et dès que celui-ci est terminé, le canal de données est fermé. Pour le transfert simultané de plusieurs fichiers ou listes de répertoires, plusieurs ports de canal de données sont nécessaires.
Le FTP est un protocole intrinsèquement peu sûr, car les canaux de commande et de données transfèrent des informations sous une forme non cryptée, facilement susceptible d’être interceptée par quiconque utilisant des attaques de type “man-in-the-middle”.
Comme nous l’avons vu précédemment, le FTP nécessite une connexion entrante sur le port 21/tcp
du côté du serveur pour le canal de commande. Une plage de ports passifs est définie pour les transferts de fichiers et les listes de répertoires et autorise les connexions entrantes. Ce processus de définition peut varier en fonction du serveur FTP utilisé. Reportez-vous à sa documentation pour plus de détails. Côté client, la connexion sortante sur le port 21/tcp
doit être autorisée, de même que la plage de ports passifs définie sur le serveur.
Authentification dans FTP
Les informations d’authentification FTP sont transmises sur le canal de commande lors de l’établissement de la connexion initiale. Le protocole FTP peut utiliser un nom d’utilisateur et un mot de passe pour l’authentification, ou il peut être anonyme pour permettre à n’importe qui de se connecter et d’accéder au serveur.
Modes FTP actif et passif
FTP utilise le mode actif ou passif pour établir les connexions.
En mode actif, un utilisateur se connecte à partir d’un port aléatoire du client FTP au port FTP 21/tcp
du serveur et envoie la commande PORT, en spécifiant le port client auquel le serveur doit se connecter. Ce port sera utilisé pour le canal de données.
Le serveur se connecte alors à partir du port 20/tcp
au port client spécifié précédemment par la commande PORT
du client. Ce canal de données est alors utilisé pour les transferts de fichiers entre le serveur et le client.
En mode passif, le client se connecte à partir d’un port aléatoire du client FTP au port 21/tcp du serveur et envoie la commande PASV. Le serveur répond alors en indiquant un port aléatoire qui doit être utilisé pour le canal de données. Le client utilise alors un autre port aléatoire pour se connecter au port répondu par le serveur à l’étape précédente. Cette connexion au canal de données est ensuite utilisée pour le transfert de fichiers entre le serveur et le client.
Ainsi, en mode actif, la demande de connexion initiale est initiée par le client tandis que la demande de connexion au canal de données est initiée par le serveur.
En revanche, en mode passif, les demandes de connexion initiales et les demandes ultérieures de canal de données sont initiées par le client vers le serveur. Cette différence subtile affecte parfois la manière dont un pare-feu autorise/bloque les requêtes FTP traditionnelles en raison du sens du type de connexion entrante/sortante.
FTPS
Même si vous êtes prêt à prendre les risques associés au protocole FTP, à savoir la transmission de données non cryptées et les attaques de type “main-in-the-middle”, les exigences de l’industrie vous obligent à utiliser une alternative plus sécurisée comme FTPS et SFTP, qui sont comparativement beaucoup plus sûrs.
En 1990, face à l’évolution du paysage de la sécurité, Netscape a créé le protocole SSL ou Secure Sockets Layer (SSL, aujourd’hui connu sous le nom de TLS) pour protéger les communications sur un réseau. SSL a été appliqué à FTP, qui est devenu FTPS ou File Transfer Protocol Secure (protocole de transfert de fichiers sécurisé). FTPS ou FTP/S fonctionne généralement sur le port 990/tcp
, mais il peut également être utilisé sur le port 21/tcp. De même, pour le canal de données, le port 989/tcp
est le port couramment utilisé pour FTPS. Si le port de commande est 21/tcp
, le port de données devrait être 20/tcp
.
Comme FTP, FTPS utilise deux canaux de communication : le canal de commande et le canal de données. Le canal de données peut être crypté avec FTPS, ou les deux canaux de commande et de données peuvent être cryptés pour plus de sécurité.
FTPS, comme FTP, utilise également plusieurs ports pour les canaux de commande et de données. Ainsi, le port 21/tcp
est utilisé pour la connexion initiale et la transmission des informations d’authentification. Par la suite, d’autres ports seront nécessaires pour établir des canaux de données pour chaque transfert de fichier ou demande de liste de répertoires de la part du client. Ainsi, comme pour le protocole FTP, une série de ports doit être autorisée par votre pare-feu.
Authentification dans FTPS
L’authentification pour FTPS fonctionne à l’aide d’un nom d’utilisateur et d’un mot de passe, ainsi que d’un certificat de serveur pour le cryptage. Lorsque le client FTPS se connecte à un serveur, il vérifie si le certificat du serveur est fiable pour poursuivre la connexion. Ce certificat peut être demandé au client et au serveur.
SFTP
Contrairement à FTP et FTPS, SFTP(SSH File Transfer Protocol) est un protocole complètement différent basé sur SSH (ou Secure Shell). Par défaut, SFTP fonctionne sur le port 22/tcp, comme SSH, mais il peut être configuré pour utiliser un port libre personnalisé sur le serveur.
SFTP est un protocole FTP sécurisé qui utilise SSH en dessous pour envoyer et recevoir des fichiers. SSH étant complètement crypté, SFTP est une méthode robuste et sécurisée pour transférer des fichiers sur un réseau.
Contrairement à FTP et FTPS, SFTP utilise un seul canal de communication pour transférer les commandes et les données, qui sont toutes transmises sous forme cryptée avec l’authentification initiale.
Authentification dans SFTP
L’authentification dans SFTP peut se faire par un simple nom d’utilisateur et un mot de passe, mais contrairement à FTP, toutes les informations, y compris les détails de l’authentification, sont transmises de manière cryptée sur le réseau.
SFTP prend également en charge l’authentification à l’aide d’une paire de clés SSH, une combinaison de clés privée et publique, où le client fournit la clé privée pour l’utilisateur spécifié, et le serveur doit avoir la clé publique correspondante pour que l’authentification réussisse. Cette méthode est plus sûre que l’utilisation d’une combinaison nom d’utilisateur/mot de passe. Il est possible d’authentifier le même utilisateur à l’aide d’un mot de passe et de clés SSH si les deux méthodes sont configurées sur le serveur SFTP.
Résumé de l’article
Cet article résume les caractéristiques de base des différents protocoles de transfert de fichiers populaires, à savoir FTP, FTPS et SFTP, et met en évidence les différences subtiles et majeures entre ces protocoles. Il couvre les ports qu’il faut autoriser dans un pare-feu pour mettre en place un serveur FTP/FTPS/SFTP fonctionnel, tout en soulignant la nécessité de passer à des protocoles plus sûrs comme FTPS et SFTP.
Lorsque je parle de FTP, je fais référence à tous les protocoles abordés dans cet article. La raison en est que FTP est vieux de plusieurs décennies et que même les versions sécurisées plus récentes sont parfois appelées FTP au lieu de leur nom désigné dans l’usage quotidien.
Vous serez peut-être également intéressé par les meilleurs logiciels de serveur FTP et clients FTP/SFTP.