Protocoles SFTP et FTPS

Préface

Il y a littéralement une semaine, j'ai écrit un article sur le sujet mentionné dans le titre et je me suis rendu compte qu'il n'y avait pas tant d'informations utiles sur le net. Principalement des faits secs et des instructions de configuration. C'est pourquoi j'ai décidé d'ajuster un peu le texte et de le publier sous forme d'article.

Qu'est-ce que le FTP

Le FTP (File Transfer Protocol) est un protocole de transfert de fichiers sur un réseau. C'est l'un des protocoles de base de l'Ethernet. Il a été créé en 1971 et fonctionnait à l'origine sur les réseaux DARPA. À l'heure actuelle, tout comme HTTP, le transfert de fichiers repose sur un modèle constitué d'une combinaison de protocoles TCP/IP (Transmission Control Protocol/Internet Protocol). Défini dans le RFC 959.

Le protocole définit ce qui suit :

  • Comment le contrôle d'erreur sera effectué
  • La méthode d'emballage des données (si un emballage est utilisé)
  • Comment l'appareil émetteur informe qu'il a terminé le message
  • Comment l'appareil récepteur informe qu'il a reçu le message

L'interaction entre le client et le serveur

Examinons plus en détail les processus impliqués dans le fonctionnement du FTP. La connexion est initialisée par l'interpréteur de protocole de l'utilisateur. La gestion des échanges se fait par un canal de contrôle au standard TELNET. Les commandes FTP sont générées par l'interpréteur de protocole de l'utilisateur et transmises au serveur. Les réponses du serveur sont également envoyées à l'utilisateur par le canal de contrôle. En général, l'utilisateur a la possibilité d'établir un contact avec l'interpréteur de protocole du serveur par des moyens différents de ceux de l'interpréteur de l'utilisateur.

La principale caractéristique du FTP est qu'il utilise une double connexion. L'une est utilisée pour transmettre des commandes au serveur et se fait par défaut via le port TCP 21, qui peut être changé. La connexion de contrôle existe tout le temps que le client communique avec le serveur. Le canal de contrôle doit être ouvert lors du transfert de données entre les machines. En cas de fermeture, le transfert de données s'arrête. Le second est utilisé pour le transfert direct de données. Il s'ouvre chaque fois qu'un fichier est transféré entre le client et le serveur. Si plusieurs fichiers sont transférés simultanément, un canal de transfert est ouvert pour chacun d'eux.

Le FTP peut fonctionner en mode actif ou passif, le choix de l'un ou l'autre déterminant le mode de connexion. En mode actif, le client établit une connexion TCP de contrôle avec le serveur et envoie à celui-ci son adresse IP ainsi qu'un numéro de port client aléatoire, puis attend que le serveur lance la connexion TCP vers cette adresse et ce numéro de port. Si le client est derrière un pare-feu et ne peut pas accepter de connexion TCP entrante, le mode passif peut être utilisé. Dans ce mode, le client utilise le canal de contrôle pour envoyer une commande PASV au serveur, qui renvoie alors son adresse IP et son numéro de port, qui seront ensuite utilisés par le client pour ouvrir un canal de données depuis son port aléatoire.

Il peut arriver que les données soient transférées vers une troisième machine. Dans ce cas, l'utilisateur établit un canal de contrôle avec deux serveurs et met en place un canal de données direct entre eux. Les commandes de contrôle passent par l'utilisateur, tandis que les données circulent directement entre les serveurs.

Lors du transfert de données sur le réseau, quatre représentations de données peuvent être utilisées :

  • ASCII – utilisé pour le texte. Les données, si nécessaire, sont converties avant le transfert de la représentation de caractères de l'hôte émetteur en « ASCII à huit bits », et (encore une fois, si nécessaire) en représentation de caractères de l'hôte recevant. En particulier, les caractères de retour à la ligne sont modifiés. Par conséquent, ce mode n'est pas adapté aux fichiers contenant autre chose que du texte ordinaire.
  • Mode binaire – l'émetteur envoie chaque fichier octet par octet, et le destinataire conserve le flux d'octets à la réception. Le support de ce mode a été recommandé pour toutes les implémentations de FTP.
  • EBCDIC – utilisé pour le transfert de texte ordinaire entre hôtes en utilisant le codage EBCDIC. Par ailleurs, ce mode est similaire au mode ASCII.
  • Mode local – permet à deux ordinateurs ayant des configurations identiques d'envoyer des données dans leur propre format sans conversion en ASCII.

Le transfert de données peut se faire dans l'un des trois modes :

  • Mode flux – les données sont envoyées sous forme d'un flux continu, ce qui évite au FTP d'effectuer un quelconque traitement. Au lieu de cela, tout le traitement est effectué par TCP. Un indicateur de fin de fichier n'est pas nécessaire, sauf pour séparer les données en enregistrements.
  • Le mode bloc – le FTP divise les données en plusieurs blocs (bloc d’en-tête, nombre de bytes, champ de données) puis les transmet via TCP.
  • Mode de compression – les données sont compressées avec un algorithme unique (généralement par codage des longueurs de séries).

Un serveur FTP – est un serveur qui permet l'utilisation du protocole de transfert de fichiers. Il a des caractéristiques spécifiques qui le distinguent des serveurs web ordinaires :

  • L'authentification des utilisateurs est nécessaire
  • Toutes les opérations sont effectuées dans le cadre de la session actuelle
  • Possibilité d'effectuer diverses actions sur le système de fichiers
  • Un canal séparé est utilisé pour chaque connexion

Un client FTP – est un programme qui permet de se connecter à un serveur distant via FTP et d'effectuer les actions nécessaires sur les éléments du système de fichiers. Le client peut tout à fait être un navigateur, dans la barre d'adresse duquel il faut entrer l'adresse représentant le chemin vers un répertoire ou un fichier sur le serveur distant, conformément au schéma généralement accepté des URL :

ftp://user:pass@address:port/directory/file

Cependant, l'utilisation d'un navigateur web dans ce contexte ne permettra que de visualiser ou de télécharger les fichiers intéressants. Pour tirer pleinement parti des avantages du FTP, il est conseillé d'utiliser un logiciel spécialisé en tant que client.

L'authentification FTP utilise un schéma nom d'utilisateur/mot de passe pour fournir l'accès. Le nom d'utilisateur est envoyé au serveur par la commande USER, et le mot de passe par la commande PASS. Si les informations fournies par le client sont acceptées par le serveur, celui-ci enverra une invitation au client et la session commence. Les utilisateurs peuvent, si le serveur prend en charge cette fonctionnalité, se connecter sans fournir d'informations d'identification, mais le serveur peut uniquement offrir un accès limité pour ces sessions.

L'hôte fournissant le service FTP peut offrir un accès anonyme au FTP. Les utilisateurs se connectent généralement en tant que « anonymous » (peut être sensible à la casse sur certains serveurs FTP) comme nom d'utilisateur. Bien qu'il soit habituel de demander aux utilisateurs d'envoyer leur adresse e-mail à la place d'un mot de passe, aucune vérification n'est réellement effectuée. De nombreux hôtes FTP qui fournissent des mises à jour de logiciels prennent en charge l'accès anonyme.

Schéma du protocole

L'interaction «client-serveur» lors d'une connexion FTP peut être illustrée de la manière suivante :

Protocoles SFTP et FTPS

FTP sécurisé

À l'origine, le FTP n'était pas conçu comme un protocole sécurisé, car il était destiné à la communication entre plusieurs installations et objets militaires. Cependant, avec le développement et la diffusion d'Internet, le risque d'accès non autorisé a considérablement augmenté. Il est devenu impératif de protéger les serveurs contre divers types d'attaques. En mai 1999, les auteurs de la RFC 2577 ont répertorié les vulnérabilités dans la liste suivante :

  • Attaques cachées (bounce attacks)
  • Attaques par usurpation (spoof attacks)
  • Attaques par force brute (brute force attacks)
  • Interception de paquets, sniffing (packet capture, sniffing)
  • Détournement de ports (port stealing)

Le FTP standard ne permet pas de transmettre des données de manière chiffrée, ce qui signifie que les noms d'utilisateur, mots de passe, commandes et autres informations peuvent être facilement interceptés par des malfaiteurs. La solution habituelle à ce problème est d'utiliser des versions « sécurisées », protégées par TLS, du protocole vulnérable (FTPS) ou un autre protocole plus sécurisé tel que SFTP/SCP, disponible avec la plupart des implementations du protocole Secure Shell.

FTPS

FTPS (FTP + SSL) est une extension du protocole de transfert de fichiers standard, qui ajoute à ses fonctionnalités de base la création de sessions chiffrées à l'aide du protocole SSL (Secure Sockets Layer — niveau de sécurité des sockets). Aujourd'hui, la protection est assurée par son analogue plus avancé, le TLS (Transport Layer Security — sécurité de la couche de transport).

SSL

Le protocole SSL a été proposé par la société Netscape Communications en 1996 dans le but d'assurer la sécurité et la confidentialité des connexions Internet. Le protocole prend en charge l'authentification (vérification d'identité) du client et du serveur, ne dépend pas des applications et est transparent pour les protocoles HTTP, FTP et Telnet.

Le protocole SSL Handshake se compose de deux étapes : l'authentification du serveur et l'authentification optionnelle du client. Lors de la première étape, le serveur en réponse à la demande du client envoie son certificat et les paramètres de cryptage. Ensuite, le client génère une clé maître, la chiffre avec la clé publique du serveur et l'envoie au serveur. Le serveur déchiffre la clé maître avec sa clé privée et confirme son authenticité au client en lui renvoyant un message signé avec la clé maître du client.

Les données suivantes sont chiffrées et signées avec des clés obtenues à partir de cette clé maître. À la deuxième étape, qui n'est pas obligatoire, le serveur envoie une demande au client, et le client confirme son authenticité au serveur en renvoyant la demande avec sa propre signature numérique et son certificat de clé publique.

SSL prend en charge divers algorithmes cryptographiques. Lors de l'établissement de la connexion, le système cryptographique de clé publique RSA est utilisé. Après l'échange de clés, de nombreux chiffrages différents sont utilisés : RC2, RC4, IDEA, DES et TripleDES. L'algorithme MD5 est également utilisé pour la création de résumés de messages. La syntaxe des certificats de clé publique est décrite dans X.509.

Un des avantages importants de SSL est son indépendance complète vis-à-vis des logiciels et des plateformes. Le protocole est conçu sur des principes de portabilité, et son idéologie de construction n'est pas dépendante des applications dans lesquelles il est utilisé. De plus, il est important de noter que d'autres protocoles peuvent être superposés de manière transparente au protocole SSL ; soit pour augmenter encore le niveau de protection des flux d'informations ciblés, soit pour adapter les capacités cryptographiques de SSL à une tâche déterminée.

Connexion SSL

Protocoles SFTP et FTPS

Le canal sécurisé fourni par SSL possède trois propriétés principales :

  • Le canal est privé. Le chiffrement est utilisé pour tous les messages après un simple dialogue, servant à déterminer la clé secrète.
  • Le canal est authentifié. Le côté serveur du dialogue est toujours authentifié, tandis que le client est authentifié de manière optionnelle.
  • Le canal est fiable. Le transport des messages inclut un contrôle d'intégrité (avec le MAC).

Caractéristiques de FTPS

Il existe deux implémentations de FTPS, utilisant différentes méthodes pour fournir la sécurité :

  • La méthode implicite implique l'utilisation du protocole SSL standard avec l'établissement d'une session avant l'envoi de données, ce qui, à son tour, compromet la compatibilité avec les clients et serveurs FTP ordinaires. Pour la compatibilité avec les clients qui ne prennent pas en charge FTPS, le port TCP 990 est utilisé pour la connexion de contrôle, et le port 989 est utilisé pour le transfert de données. Cela permet de conserver le port standard 21 pour le protocole FTP. Cette méthode est considérée comme obsolète.
  • FTPS explicite – est beaucoup plus pratique, car il utilise des commandes FTP standard tout en chiffrant les données lors de la réponse, ce qui permet d'utiliser la même connexion de contrôle tant pour FTP que pour FTPS. Le client doit demander explicitement le transfert de données sécurisé auprès du serveur, puis approuver la méthode de chiffrement. Si le client ne demande pas de transfert sécurisé, le serveur FTPS a le droit de conserver ou de fermer la connexion non sécurisée. Le mécanisme d'accord sur l'identification et la protection des données a été ajouté sous le RFC 2228, qui inclut une nouvelle commande FTP AUTH. Bien que cette norme ne définisse pas explicitement les mécanismes de protection, elle stipule qu'une connexion sécurisée doit être initiée par le client en utilisant l'algorithme décrit ci-dessus. Si les connexions sécurisées ne sont pas prises en charge par le serveur, un code d'erreur 504 doit être retourné. Les clients FTPS peuvent obtenir des informations sur les protocoles de sécurité pris en charge par le serveur à l'aide de la commande FEAT ; toutefois, le serveur n'est pas obligé de divulguer les niveaux de sécurité qu'il prend en charge. Les commandes FTPS les plus courantes sont AUTH TLS et AUTH SSL, fournissant respectivement une protection TLS et SSL.

SFTP

SFTP (Secure File Transfer Protocol) – est un protocole d'application de transfert de fichiers qui fonctionne sur un canal sécurisé. Ne pas confondre avec (Simple File Transfer Protocol), qui a la même abréviation. Alors que FTPS est simplement une extension de FTP, SFTP est un protocole distinct et non lié, qui utilise SSH (Secure Shell – une coque sécurisée) comme base.

Secure Shell

Le protocole a été développé par un groupe de l'IETF appelé Secsh. La documentation de travail pour le nouveau protocole SFTP n'est pas devenue une norme officielle, mais a été activement utilisée pour le développement d'applications. Par la suite, six versions du protocole ont été publiées. Cependant, l'accroissement progressif de ses fonctionnalités a conduit à ce que le 14 août 2006, il a été décidé de mettre fin au développement du protocole en raison de l'achèvement de l'objectif principal du projet (développement de SSH) et de l'absence d'un niveau d'expertise suffisant pour passer à la création d'un protocole complet de système de fichiers à distance.

SSH est un protocole réseau qui permet de gérer à distance un système d'exploitation et de créer des tunnels pour les connexions TCP (par exemple, pour le transfert de fichiers). Il est similaire en fonctionnalité aux protocoles Telnet et rlogin, mais contrairement à eux, il chiffre tout le trafic, y compris les mots de passe transmis. SSH permet de choisir parmi divers algorithmes de chiffrement. Les clients et serveurs SSH sont disponibles pour la plupart des systèmes d'exploitation réseau.

SSH permet de transmettre en toute sécurité presque n'importe quel autre protocole réseau dans un environnement non sécurisé. Ainsi, il est possible non seulement de travailler à distance sur un ordinateur via un terminal de commande, mais aussi de transmettre des flux audio ou vidéo (par exemple, d'une webcam) par canal chiffré. De plus, SSH peut utiliser la compression des données transmises avant de les chiffrer, ce qui est pratique, par exemple, pour le lancement à distance des clients X Window System.

La première version du protocole, SSH-1, a été développée en 1995 par le chercheur Tatu Ylönen de l'Université technologique d'Helsinki (Finlande). SSH-1 a été écrit pour offrir une plus grande confidentialité que les protocoles rlogin, telnet et rsh. En 1996, une version plus sécurisée du protocole, SSH-2, a été développée, qui est incompatible avec SSH-1. Le protocole a gagné en popularité, et en 2000, il comptait environ deux millions d'utilisateurs. De nos jours, le terme « SSH » fait généralement référence à SSH-2, car la première version du protocole, en raison de ses défauts importants, est maintenant presque utilisée. En 2006, le protocole a été approuvé par le groupe de travail IETF comme norme Internet.

Il existe deux implémentations du SSH : une commerciale privée et une libre gratuite. L'implémentation libre s'appelle OpenSSH. En 2006, 80 % des ordinateurs sur Internet utilisaient justement OpenSSH. L'implémentation commerciale est développée par SSH Communications Security, qui est une filiale à 100 % de la société Tectia, et est gratuite pour un usage non commercial. Ces implémentations contiennent pratiquement le même ensemble de commandes.

Le protocole SSH-2, contrairement au protocole telnet, est résistant aux attaques d'écoute de trafic (sniffing), mais il n'est pas résistant aux attaques de type « homme du milieu ». Le protocole SSH-2 est également protégé contre les attaques par détournement de session (session hijacking), car il est impossible de s'immiscer dans une session déjà établie ou de l'intercepter.

Pour prévenir les attaques de type « homme du milieu » lors de la connexion à un hôte dont la clé n'est pas encore connue du client, le logiciel client affiche à l'utilisateur « l'empreinte de la clé » (key fingerprint). Il est recommandé de vérifier soigneusement l'empreinte de la clé affichée par le logiciel client avec celle du serveur, de préférence obtenue par des canaux de communication fiables ou en personne.

La prise en charge de SSH est mise en œuvre dans tous les systèmes UNIX-like, et sur la plupart d'entre eux, le client et le serveur SSH figurent parmi les utilitaires standards. Il existe de nombreuses implémentations de clients SSH pour des systèmes d'exploitation non UNIX. Le protocole a gagné en popularité après le développement massif des analyseurs de trafic et des méthodes d'intrusion dans les réseaux locaux, comme une solution alternative au protocole Telnet non sécurisé pour la gestion de nœuds importants.

Communication utilisant SSH

Pour travailler avec SSH, un serveur SSH et un client SSH sont nécessaires. Le serveur écoute les connexions des machines clientes et, lors de l'établissement de la connexion, procède à l'authentification, après quoi il commence à servir le client. Le client est utilisé pour se connecter à une machine distante et exécuter des commandes.

Protocoles SFTP et FTPS

Comparaison avec FTPS

La principale différence entre SFTP et le FTP standard et le FTPS est que SFTP chiffre toutes les commandes, les noms d'utilisateur, les mots de passe et d'autres informations sensibles.

Les protocoles FTPS et SFTP utilisent une combinaison d'algorithmes asymétriques (RSA, DSA), d'algorithmes symétriques (DES/3DES, AES, Twofish, etc.), ainsi qu'un algorithme d'échange de clés. Pour l'authentification, FTPS (ou, pour être plus précis, SSL/TLS via FTP) utilise des certificats X.509, tandis que SFTP (protocole SSH) utilise des clés SSH.

Les certificats X.509 contiennent une clé publique et certaines informations sur le certificat du propriétaire. Ces informations permettent, d'une part, de vérifier l'intégrité du certificat lui-même, l'authenticité et le propriétaire du certificat. Un certificat X.509 a une clé privée correspondante, qui est généralement stockée séparément du certificat pour des raisons de sécurité.

La clé SSH contient uniquement la clé publique (la clé privée correspondante est conservée séparément). Elle ne contient aucune information sur le propriétaire de la clé. Certaines implémentations de SSH utilisent des certificats X.509 pour l'authentification, mais en réalité, elles ne vérifient pas toute la chaîne de certificats — seule la clé publique est utilisée (ce qui rend cette vérification d'authenticité incomplète).

Conclusion

Le protocole FTP joue incontestablement encore un rôle important dans le stockage et la diffusion d'informations sur le réseau, malgré son âge respectable. C'est un protocole pratique, multifonctionnel et standardisé. De nombreux archives de fichiers se basent sur lui, sans lesquels le travail technique ne serait pas aussi efficace. De plus, il est facile à configurer, et il existe des programmes serveurs et clients pour pratiquement toutes les plateformes pertinentes.

Ses versions sécurisées, en revanche, répondent au problème de la confidentialité des données stockées et transmises dans le monde moderne. Les deux nouveaux protocoles ont leurs avantages et inconvénients et remplissent des rôles légèrement différents. Dans les domaines où un archive de fichiers est nécessaire, il est préférable d'utiliser FTPS, surtout si le FTP classique était déjà utilisé auparavant. SFTP est moins répandu en raison de son incompatibilité avec l'ancien protocole, mais il est plus sécurisé et offre plus de fonctionnalités, car il fait partie du système de gestion à distance.

Liste des sources

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster