Comprendre SFTP vs FTPS vs FTP



Le protocole FTP, ou File Transfer Protocol, est une méthode largement répandue pour le transfert de données, applicable dans de nombreux contextes.

Diverses versions sécurisées du FTP existent, notamment FTPS et SFTP. Bien que similaires, elles présentent des divergences significatives dans leur fonctionnement. Ces différences concernent principalement la manière dont les données sont échangées, le niveau de sécurité des communications et les considérations relatives aux pare-feu.

Comprendre le fonctionnement de ces protocoles et leurs distinctions peut vous guider vers le choix le plus approprié pour vos besoins.

FTP

Le FTP est un protocole de transfert de fichiers datant de plusieurs décennies, initialement décrit dans la RFC 114. Il a ensuite été mis à jour sous la RFC 959, qui constitue la norme actuelle.

Le FTP utilise deux canaux pour échanger des informations : un pour les commandes et un autre pour les données. Ainsi, deux ports sont nécessaires pour le fonctionnement du FTP, un pour le canal de commande et un pour le canal de données.

Le canal de commande fonctionne sur le port 21, où les clients se connectent pour envoyer des commandes. Ce canal reste ouvert pendant toute la session FTP, jusqu’à ce que le client envoie une commande QUIT ou que le serveur interrompe la connexion en cas d’inactivité ou pour toute autre raison.

Le canal de données, quant à lui, utilise un port temporaire alloué à la demande, soit sur le serveur (en mode passif), soit sur le client (en mode actif). Ce canal est responsable du transfert des données proprement dites, telles que les listes de répertoires et les fichiers.

Contrairement au canal de commande, le canal de données n’est ouvert que pendant la durée du transfert de fichiers. Une fois le transfert terminé, le canal est fermé. Pour transférer plusieurs fichiers ou listes simultanément, plusieurs ports de canal de données sont nécessaires.

Le FTP est intrinsèquement non sécurisé, car les canaux de commande et de données transmettent les informations en clair, les rendant vulnérables aux attaques de type « homme du milieu ».

Comme mentionné précédemment, le FTP requiert 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, autorisant les connexions entrantes. Cette configuration peut varier selon le serveur FTP utilisé. Il est conseillé de consulter la documentation spécifique. Côté client, une connexion sortante sur le port 21/tcp doit être autorisée, ainsi que 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. Le FTP peut utiliser un nom d’utilisateur et un mot de passe pour l’authentification, ou permettre une connexion anonyme, autorisant ainsi l’accès à quiconque.

Modes FTP actif et passif

Le FTP utilise les modes Actif ou Passif pour établir les connexions.

En mode actif, le client FTP se connecte au port 21/tcp du serveur et envoie une commande PORT, indiquant le port client sur lequel le serveur doit se connecter pour le canal de données.

Le serveur se connecte ensuite du port 20/tcp au port client spécifié précédemment. Ce canal de données est utilisé pour les transferts de fichiers entre le serveur et le client.

En mode passif, le client se connecte au port 21/tcp du serveur et envoie une commande PASV. Le serveur répond en indiquant un port aléatoire à utiliser pour le canal de données. Le client utilise un autre port aléatoire pour se connecter à ce port. Ce canal de données est ensuite utilisé pour les transferts de fichiers.

En résumé, 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 mode passif, les demandes de connexion initiales et les demandes de canal de données sont initiées par le client. Cette distinction affecte la manière dont un pare-feu autorise ou bloque les requêtes FTP, en raison du sens des connexions entrantes et sortantes.

FTPS

Bien que certains utilisateurs acceptent les risques associés au FTP, une transmission de données non cryptée et des vulnérabilités aux attaques, les normes du secteur exigent des alternatives plus sûres telles que FTPS et SFTP.

Au début des années 1990, Netscape a développé le protocole SSL (Secure Sockets Layer), maintenant connu sous le nom de TLS, pour sécuriser les communications sur un réseau. L’application du SSL au FTP a donné naissance au FTPS (File Transfer Protocol Secure). Le FTPS fonctionne généralement sur le port 990/tcp, mais il peut également utiliser le port 21/tcp. De même, le port 989/tcp est couramment utilisé pour le canal de données FTPS. Si le port de commande est le 21/tcp, son port de données correspondant est le 20/tcp.

Comme le FTP, le FTPS utilise deux canaux de communication : le canal de commande et le canal de données. Le canal de données peut être chiffré avec FTPS, ou bien les canaux de commande et de données peuvent l’être pour une sécurité accrue.

Le FTPS, comme le FTP, utilise plusieurs ports pour les canaux de commande et de données. Le port 21/tcp est utilisé pour la connexion initiale et la transmission des informations d’authentification. Ensuite, différents ports sont utilisés pour configurer les canaux de données pour chaque demande de transfert de fichier ou de liste de répertoires du client. Ainsi, une plage de ports doit être autorisée dans le pare-feu.

Authentification dans FTPS

L’authentification FTPS fonctionne à l’aide d’un nom d’utilisateur et d’un mot de passe, ainsi que d’un certificat serveur pour le chiffrement. Lorsque le client FTPS se connecte au serveur, il vérifie si le certificat du serveur est approuvé. Le certificat peut être demandé au client et au serveur.

SFTP

Contrairement au FTP et au FTPS, le SFTP (SSH File Transfer Protocol) est un protocole distinct basé sur SSH (Secure Shell). Le SFTP fonctionne par défaut sur le port 22/tcp, comme SSH, mais il peut être configuré pour utiliser un port libre personnalisé sur le serveur.

Le SFTP est un protocole FTP sécurisé qui utilise SSH pour envoyer et recevoir des fichiers. Grâce au chiffrement complet du SSH, le SFTP est une méthode robuste et sécurisée pour le transfert de fichiers.

Contrairement au FTP et au FTPS, le SFTP utilise un seul canal de communication pour transférer les commandes et les données, le tout étant transmis sous forme chiffrée, incluant l’authentification initiale.

Authentification dans SFTP

L’authentification dans SFTP peut être effectuée via un nom d’utilisateur et un mot de passe, mais contrairement au FTP, toutes les informations, y compris les détails d’authentification, sont transmises de manière chiffrée.

Le SFTP prend également en charge l’authentification par paires de clés SSH (clé privée et clé publique). Le client fournit la clé privée, tandis que le serveur doit posséder 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 en utilisant à la fois un mot de passe et des clés SSH si les deux méthodes sont configurées sur le serveur SFTP.

Résumé

Cet article présente les fonctionnalités de base des protocoles de transfert de fichiers les plus courants, à savoir le FTP, le FTPS et le SFTP. Il met en évidence les différences subtiles et majeures entre ces protocoles. Il aborde les ports à autoriser dans un pare-feu pour configurer un serveur FTP/FTPS/SFTP fonctionnel, tout en soulignant la nécessité de privilégier les protocoles sécurisés comme le FTPS et le SFTP.

Par FTP, je fais référence à tous les protocoles abordés dans cet article. Bien que datant de plusieurs décennies, le terme FTP est parfois utilisé pour désigner les versions sécurisées, par simplification.

Vous pourriez également être intéressé par des informations sur les meilleurs logiciels de serveur FTP et clients FTP/SFTP.