A quoi servent FTPS, FTPES et SFTP : Différences entre ces protocoles
Lorsque nous voulons transférer des dossiers et des fichiers sur le réseau local ou sur Internet, le protocole FTP est largement utilisé. La plupart des routeurs avec port USB, et tous les serveurs NAS, ont ce protocole pour faciliter le transfert de fichiers, cependant, FTP ne crypte pas l’authentification utilisateur/mot de passe ou les données transférées, donc n’importe qui pourrait capturer les informations transmises. FTPS, FTPES et SFTP sont des protocoles qui nous permettent de transférer des données en toute sécurité, et aujourd’hui, dans RedesZone, nous allons expliquer leurs principales caractéristiques et en quoi elles diffèrent.
Protocole FTP
Le protocole FTP (File Transfer Protocol), ou également appelé protocole de transfert de fichiers, est un protocole de couche application qui utilise le protocole TCP au niveau de la couche transport. FTP utilise une architecture client-serveur, de sorte qu’à partir d’un ou plusieurs ordinateurs clients, nous pouvons nous connecter au même serveur. Le port par défaut utilisé par FTP est TCP 21 pour le contrôle , via ce port l’établissement de la connexion est géré, mais aucune donnée n’est transférée via ce port. Selon le fonctionnement de FTP, il utilisera certains ports ou d’autres pour transmettre les informations. FTP a deux modes de fonctionnement :
- Mode actif : dans ce mode de fonctionnement le serveur FTP crée le canal de données sur le port TCP 20, tandis que côté client on choisit un port aléatoire supérieur au port TCP 1024. Dans ce mode de fonctionnement il est obligatoire que le client FTP ait des ports supérieurs à 1024 ouvert, quelque chose de dangereux si on est connecté à Internet, et qui pose aussi des problèmes si on est derrière NAT. Pour résoudre ce problème, le mode passif (PASV) a été développé, qui est actuellement le plus utilisé.
- Mode passif : dans ce mode de fonctionnement, via le port de contrôle 21, le serveur FTP indique au client FTP sur quel port externe se connecter pour transférer les informations. De cette façon, le client établira une connexion à partir du port que vous avez indiqué. Ainsi, le serveur FTP doit disposer d’un port TCP 21 pour le canal de contrôle, et d’une plage de ports TCP au choix de l’administrateur.
Dans les deux modes de fonctionnement, l’ authentification et le transfert de données se font sans aucun cryptage . Cela signifie que, s’il y a «quelqu’un» à l’écoute du canal de communication, il pourrait non seulement capturer les identifiants d’accès à notre serveur FTP, mais également les données que nous transmettons.
Protocoles FTPS et FTPES
Pour résoudre le problème de confidentialité (cryptage des données) dans l’authentification et le transfert de données, il a été décidé d’ajouter une couche de sécurité SSL/TLS au protocole FTP lui-même. FTPS et FTPES sont également connus sous le nom de FTP sur TLS / SSL et sont basés sur le protocole FTP lui-même.
FTPS est connu sous le nom de FTPS implicite , c’est une ancienne façon de fournir la sécurité et la confidentialité au protocole FTP. Dans ce protocole, le client FTP se connecte à un autre port que le port TCP 21, par défaut, le port TCP 990 est utilisé pour établir la connexion. Dans ce cas, le canal de données utilise le protocole TCP 989. Avant d’échanger des informations avec le serveur FTP, une négociation TLS / SSL est effectuée pour assurer l’ensemble du canal de communication, par conséquent, l’authentification et le transfert de fichiers sont sécurisés avec TLS. .
FTPES est connu sous le nom de FTPS explicite , et c’est le protocole actuellement utilisé lorsque nous voulons activer la sécurité dans FTP. Dans ce mode de fonctionnement, le client FTPS doit explicitement demander la sécurité sur le serveur, puis basculer vers une méthode de cryptage prise en charge par les deux. La première chose que le client FTPES fera est de se connecter au port TCP 21 du serveur FTP , si le client est configuré pour exiger la sécurité, et si le serveur FTP a le protocole FTPES activé, alors une communication cryptée avec TLS sera établie avant l’authentification et transférer des informations. Si nous sommes toujours intéressés à fournir une sécurité maximale aux clients FTPES dans toutes les connexions, nous devons activer sur le serveur FTP quiNous voulons uniquement autoriser les connexions FTP sur TLS / SSL , en rejetant toute connexion FTP normale, de cette manière, seul le protocole FTPES peut être utilisé. Le protocole FTPES ne nécessite l’ouverture d’aucun port supplémentaire sur le serveur, ni sur le client, il utilisera simplement le port TCP de contrôle 21 et un port aléatoire (entre une certaine plage de ports) pour transférer les informations.
FTPES utilise les protocoles TLS 1.0, 1.1, 1.2 et même TLS 1.3 si cela est autorisé par le serveur et le client. En raison de l’utilisation du protocole TLS/SSL, nous devons configurer un certificat RSA ou similaire sur le serveur, avec sa clé publique et sa clé privée, pour pouvoir configurer correctement le service FTP.
Dans l’image suivante, vous pouvez voir la configuration du serveur FTP dans le système d’exploitation XigmaNAS. Nous pouvons activer les connexions TLS, et nous devons indiquer un certificat ainsi que la clé privée associée. Enfin, il nous permet d’activer uniquement les connexions TLS, en rejetant les connexions FTP non cryptées «normales».
Lorsque nous nous connectons avec un client FTPES tel que FileZilla, nous pourrons voir la négociation TLS que nous avons effectuée. Nous négocions actuellement avec le dernier protocole TLS 1.3, comme vous pouvez le voir :
Selon le logiciel et la configuration du serveur FTPES, nous pourrons négocier avec différents protocoles TLS, différentes suites de chiffrement symétriques, échange de clés et même différents algorithmes de clé publique. Cela dépendra de la configuration que vous avez faite. Le plus normal aujourd’hui est d’utiliser le protocole TLS 1.2 ou TLS 1.3, qui sont les seules versions sécurisées, car TLS 1.0 et TLS 1.1 sont déjà considérés comme «obsolètes», de cette façon, nous aurons la meilleure sécurité possible pour assurer les communications .
Grâce à ce protocole FTPES, toutes les nouvelles communications avec le serveur FTP seront cryptées et authentifiées, aussi bien lors de l’authentification que lors du transfert de fichiers. L’intégrité de chaque colis échangé sera également vérifiée, nous serons donc sûrs que personne ne les a modifiés à la volée. Un détail très important des serveurs avec FTPES, c’est que nous devrons ouvrir à la fois le port de contrôle que nous configurons, ainsi que les ports FTP PASV pour éviter les problèmes avec NAT.
Protocole SFTP
Le protocole SFTP (SSH File Transfer Protocol) ou également appelé transfert de fichiers SSH, est un protocole qui n’a rien à voir avec le protocole FTP. SFTP n’est pas la version sécurisée du protocole FTP , car il est entièrement basé sur le protocole SSH. Ce protocole SFTP nous permet d’authentifier et de transférer des fichiers entre ordinateurs comme s’il s’agissait d’un serveur FTPES, mais en utilisant la cryptographie du protocole SSH que nous avons installé sur le serveur de fichiers. SFTP n’est pas non plus un protocole où FTP utilise SSH pour sécuriser la connexion, c’est un tout nouveau protocole basé sur SSH et non sur FTP.
Le protocole SFTP utilise le port TCP 22 par défaut , le même que le protocole SSH. Si dans notre serveur de fichiers, nous avons un serveur SSH pour exécuter des commandes CLI, nous aurons également la possibilité d’activer SFTP pour se connecter avec des clients SFTP comme FileZilla et commencer à transférer des fichiers. L’authentification SFTP est exactement la même que dans SSH, c’est-à-dire que si nous utilisons une clé publique dans SSH, dans SFTP, nous devons également utiliser cette cryptographie à clé publique.
Si nous entrons dans la section serveur SSH de XigmaNAS, nous pouvons voir la configuration suivante, où nous utilisons le port TCP 22 et la configuration avec authentification utilisateur/clé et n’utilisant pas de clé publique.
Dans le client FileZilla, si on met sftp: // ip dans la barre d’adresse, on peut accéder directement avec ce protocole de transfert de fichiers basé sur SSH. Nous pourrons également voir quels algorithmes d’échange de clés nous utilisons, quelle est la clé du serveur, ainsi que l’empreinte digitale, ainsi que le cryptage symétrique AES-256-GCM.
Si vous souhaitez utiliser le protocole SFTP, vous devez vous rappeler qu’il dépend du serveur SSH et non du serveur FTP, vous devez donc configurer correctement les autorisations des utilisateurs en fonction du niveau d’accès via SSH.
Quel protocole est le plus sécurisé pour transférer des fichiers ?
Actuellement, le protocole FTPS (Implicit) n’est pas utilisé dans la plupart des cas, au profit du protocole FTPES (Explicit) comme nous l’avons expliqué. Aujourd’hui, la grande majorité des connexions Internet et des routeurs utilisent le NAT pour permettre à tous les clients WiFi et filaires d’accéder à Internet, et dans ces cas, le protocole FTPS installé sur un serveur du réseau local pourrait avoir des problèmes de communication. Pour cette raison, FTPES est largement utilisé qui est la version FTP avec une couche TLS pour protéger la confidentialité, assurer l’authenticité de chaque paquet transmis et également vérifier l’intégrité des données afin que, si les données sont modifiées à la volée par un cybercriminel, peut être détecté et le transfert des fichiers est annulé.
SFTP est largement utilisé pour transférer des données vers des serveurs dédiés, des serveurs VPS et même vers notre hébergement, car, si nous avons installé le serveur SSH, nous aurons également le protocole SFTP disponible, sans avoir besoin d’installer de logiciels supplémentaires tels que ProFTPd, vsFTPd ou autres. Le client FTP populaire FileZilla prend également en charge le protocole SFTP, ainsi que d’autres programmes spécifiques pour transférer des fichiers à l’aide de ce protocole, tels que WinSCP entre autres.
En ce qui concerne la sécurité, FTPES et SFTP sont tous deux sûrs , le premier est basé sur le protocole TLS (Transport Layer Security), nous utilisons normalement le protocole TLS 1.2 ou TLS 1.3, les deux versions du protocole sont complètement sécurisées, bien qu’il soit conseillé d’utiliser de TLS 1.3 si nous allons transférer de nombreux petits fichiers, car la gestion des connexions est plus rapide et plus efficace qu’avec TLS 1.2. Concernant SFTP, il est basé sur le protocole SSH lui-même, donc, on peut s’authentifier via nom d’utilisateur/mot de passe et même en utilisant une clé SSH privée afin que l’authentification soit la plus sécurisée possible.
Dans le cas de FTPES, il faut créer une Public Key Infrastructure (PKI) intégrant le certificat de l’AC (Certification Authority) et sa clé privée correspondante, cependant, en SSH ce n’est pas nécessaire, et cela facilite grandement la configuration. Comme vous l’avez vu dans les captures d’écran du client, la principale différence entre eux est la façon dont nous établissons la connexion sécurisée, mais une fois la connexion établie, le transfert de données se fait avec AES-256-GCM dans les deux. Une autre différence entre FTPES et SFTP est qu’avec le protocole FTPES nous devrons ouvrir les ports FTP PASV pour que la communication fonctionne correctement, cependant, avec SFTP nous n’aurons qu’à ouvrir un port, celui correspondant à SSH.