Comprendre SFTP vs FTPS vs FTP

FTP ou File Transfer Protocol est l’une des méthodes de transfert de données les plus populaires disponibles pour divers cas d’utilisation.

FTP a différentes variantes sécurisées disponibles, connues sous le nom de FTPS et SFTP, qui intègrent des différences subtiles et des différences 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 de pare-feu.

Connaître le fonctionnement de ces protocoles et les différences entre ces mécanismes de transfert populaires peut vous aider à choisir celui qui convient le mieux à vos besoins.

FTP

FTP est le protocole de transfert de fichiers vieux de plusieurs décennies proposé à l’origine sous RFC 114. Il a ensuite évolué sous le nom de RFC 959, qui est la norme utilisée aujourd’hui.

FTP fonctionne sur deux canaux pour échanger des informations : un pour les commandes et l’autre pour les données. Cela nécessite deux ports pour que FTP fonctionne – 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 en raison d’une inactivité ou de toute autre raison possible.

Le canal de données utilise un port temporaire à la demande en écoute sur 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 reste ouvert uniquement pendant la durée du transfert de fichiers, et dès qu’il se termine, 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 requis.

FTP est un protocole intrinsèquement non sécurisé, car les canaux de commande et de données transfèrent des informations sous une forme non cryptée, ce qui est facilement susceptible d’être intercepté par quiconque utilisant des attaques de type « man-in-the-middle ».

Comme indiqué précédemment, FTP nécessite une connexion entrante sur le port 21/tcp côté 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 avec la plage de ports passifs définie sur le serveur.

Authentification en FTP

Les informations d’authentification FTP sont transmises sur le canal de commande lors de l’établissement de la connexion initiale. FTP peut utiliser un nom d’utilisateur et un mot de passe pour l’authentification, ou il peut être anonyme pour permettre à quiconque de se connecter et d’accéder au serveur.

Modes FTP actif et passif

FTP utilise le mode Actif ou Passif pour configurer les connexions.

En mode actif, un utilisateur se connecte à partir d’un port aléatoire sur le client FTP au port FTP 21/tcp sur le 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 ensuite du port 20/tcp au port client précédemment spécifié avec la commande PORT par le client. Ce canal de données est ensuite 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 sur le serveur et envoie la commande PASV. Le serveur répond alors avec un port aléatoire qui doit être utilisé pour le canal de données. Le client utilise ensuite un autre port aléatoire pour se connecter au port répondu par un serveur à l’étape précédente. Cette connexion de 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.

D’autre part, en mode passif, les demandes de connexion initiales et les demandes de canal de données ultérieures sont initiées par le client vers le serveur. Cette différence subtile affecte parfois la façon dont un pare-feu autorise/bloque les requêtes FTP traditionnelles en raison de la direction du type de connexion entrante/sortante.

FTPS

Même si vous êtes prêt à prendre les risques associés à FTP avec une transmission de données non cryptée et des attaques principales, les exigences de l’industrie vous obligent à utiliser une alternative plus sécurisée comme FTPS et SFTP, qui sont comparativement beaucoup plus sécurisés.

En 1990, avec l’évolution du paysage de la sécurité, Netscape a créé le protocole SSL ou Secure Sockets Layer (SSL, maintenant connu sous le nom de TLS) pour protéger les communications sur un réseau. SSL a été appliqué au FTP qui est devenu FTPS ou File Transfer Protocol Secure. FTPS ou FTP/S s’exécute généralement sur le port 990/tcp, mais il peut également être vu sur le port 21/tcp. De même, pour le canal de données, le port 989/tcp est le port commun utilisé pour FTPS. Si le port de commande est 21/tcp, son 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. Soit le canal de données peut être crypté avec FTPS, soit les 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. Plus tard, différents ports seront nécessaires pour configurer les canaux de données pour chaque demande de transfert de fichier ou de liste de répertoire du client. Ainsi, comme FTP, il a besoin d’une gamme de ports à autoriser dans 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 approuvé 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). SFTP, par défaut, fonctionne sur le port 22/tcp, comme SSH bien qu’il puisse ê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 entièrement crypté, SFTP est une méthode robuste et sécurisée pour transférer des fichiers sur un réseau.

SFTP, contrairement à FTP et FTPS, utilise un seul canal de communication pour transférer les commandes et le trafic de données, qui sont tous transmis sous forme cryptée avec l’authentification initiale.

Authentification dans SFTP

L’authentification dans SFTP peut être effectuée via un simple nom d’utilisateur et un mot de passe, mais contrairement à FTP, toutes les informations, y compris les détails d’authentification, sont transmises cryptées sur le réseau.

SFTP prend également en charge l’authentification à l’aide d’une paire de clés SSH, d’une combinaison de clés privées et publiques, où le client fournit la clé privée pour l’utilisateur spécifié, et le serveur doit disposer de la clé publique correspondante pour que l’authentification réussisse. C’est plus sûr que d’utiliser 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.

Sommaire

Cet article résume les fonctionnalités 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 configurer un serveur FTP/FTPS/SFTP fonctionnel tout en soulignant la nécessité de passer à des protocoles plus sécurisés comme FTPS et SFTP.

Quand je dis FTP ici, je fais référence à tous les protocoles discutés dans cet article. La raison pour laquelle FTP est vieux de plusieurs décennies, et même les versions sécurisées les plus récentes sont parfois appelées FTP au lieu de leur nom désigné pour une utilisation quotidienne.

Vous pouvez également être intéressé à connaître les meilleurs logiciels de serveur FTP et clients FTP/SFTP.