Protocoles SFTP et FTPS

Avant-propos

Il y a à peine une semaine, j'écrivais un essai sur le sujet indiqué dans le titre et j'ai été confronté au fait que, disons, il n'y a pas beaucoup d'informations pédagogiques sur Internet. Principalement des faits secs et des instructions de configuration. Par conséquent, j'ai décidé de corriger légèrement le texte et de le publier sous forme d'article.

Qu'est-ce que FTP

FTP (File Transfer Protocol) est un protocole de transfert de fichiers sur un réseau. C'est l'un des protocoles Ethernet de base. Apparu en 1971 et a d'abord travaillé dans les réseaux DARPA. Actuellement, comme HTTP, le transfert de fichiers repose sur un modèle constitué d'un ensemble de protocoles TCP/IP (Transmission Control Protocol/Internet Protocol). Défini dans la RFC 959.

Le protocole définit les éléments suivants :

  • Comment s'effectuera le contrôle des erreurs ?
  • Méthode de conditionnement des données (si un conditionnement est utilisé)
  • Comment l'appareil expéditeur indique-t-il qu'il a terminé un message ?
  • Comment l’appareil récepteur indique-t-il qu’il a reçu un message ?

Communication entre client et serveur

Examinons de plus près les processus qui se produisent lors du fonctionnement FTP. La connexion est initialisée par l'interpréteur de protocole de l'utilisateur. L'échange est contrôlé via 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 envoyées au serveur. Les réponses du serveur sont également envoyées à l'utilisateur via le canal de contrôle. D'une manière générale, l'utilisateur a la possibilité d'établir le contact avec l'interpréteur de protocole du serveur et par d'autres moyens que l'interprète de l'utilisateur.

La principale caractéristique de FTP est qu’il utilise des connexions doubles. L'un d'eux sert à envoyer des commandes au serveur et s'effectue par défaut via le port TCP 21, qui peut être modifié. La connexion de contrôle existe tant que le client communique avec le serveur. Le canal de contrôle doit être ouvert lors du transfert de données entre machines. S'il est fermé, la transmission des données s'arrête. Grâce au second, un transfert direct de données a lieu. Il s'ouvre chaque fois qu'un transfert de fichier se produit entre le client et le serveur. Si plusieurs fichiers sont transférés simultanément, chacun d'eux ouvre son propre canal de transmission.

FTP peut fonctionner en mode actif ou passif, dont le choix détermine la manière dont la connexion est établie. En mode actif, le client crée une connexion de contrôle TCP avec le serveur et envoie son adresse IP et un numéro de port client arbitraire au serveur, puis attend que le serveur démarre une connexion TCP avec cette adresse et ce numéro de port. Si le client se trouve derrière un pare-feu et ne peut pas accepter une connexion TCP entrante, le mode passif peut être utilisé. Dans ce mode, le client utilise le flux de contrôle pour envoyer une commande PASV au serveur, puis reçoit du serveur son adresse IP et son numéro de port, que le client utilise ensuite pour ouvrir un flux de données à partir de son port arbitraire.

Il est possible que des données soient transférées vers une troisième machine. Dans ce cas, l'utilisateur organise un canal de contrôle avec deux serveurs et organise un canal de données direct entre eux. Les commandes de contrôle passent par l'utilisateur et les données circulent directement entre les serveurs.

Lors de la transmission de données sur un réseau, quatre représentations de données peuvent être utilisées :

  • ASCII – utilisé pour le texte. Les données sont, si nécessaire, converties de la représentation de caractères sur l'hôte émetteur en "ASCII huit bits" avant la transmission, et (encore une fois, si nécessaire) en représentation de caractères sur l'hôte récepteur. En particulier, les caractères de nouvelle ligne sont modifiés. Par conséquent, ce mode ne convient pas aux fichiers contenant plus que du simple texte brut.
  • Mode binaire - le périphérique expéditeur envoie chaque fichier octet par octet et le destinataire stocke le flux d'octets dès réception. La prise en charge de ce mode a été recommandée pour toutes les implémentations FTP.
  • EBCDIC – utilisé pour transférer du texte brut entre hôtes en codage EBCDIC. Sinon, ce mode est similaire au mode ASCII.
  • Mode local - permet à deux ordinateurs avec des paramètres identiques d'envoyer des données dans leur propre format sans conversion en ASCII.

Le transfert de données peut être effectué selon trois modes :

  • Mode flux : les données sont envoyées sous forme de flux continu, libérant FTP de tout traitement. Au lieu de cela, tout le traitement est effectué par TCP. L'indicateur de fin de fichier n'est pas nécessaire, sauf pour séparer les données en enregistrements.
  • Mode bloc - FTP divise les données en plusieurs blocs (bloc d'en-tête, nombre d'octets, champ de données) puis les transmet à TCP.
  • Mode de compression : les données sont compressées à l'aide d'un seul algorithme (généralement en codant des longueurs d'exécution).

Le serveur FTP est un serveur qui offre la possibilité d'utiliser le protocole de transfert de fichiers. Il possède certaines fonctionnalités qui le distinguent des serveurs web classiques :

  • Authentification de l'utilisateur requise
  • Toutes les opérations sont effectuées dans la session en cours
  • Capacité à effectuer diverses actions avec le système de fichiers
  • Un canal séparé est utilisé pour chaque connexion

Le client FTP est un programme qui vous permet de vous connecter à un serveur distant via FTP et également d'effectuer les actions nécessaires sur celui-ci avec des éléments du système de fichiers. Le client peut très bien être un navigateur, dans la barre d'adresse duquel vous devez saisir l'adresse, qui est le chemin d'accès à un répertoire ou un fichier spécifique sur le serveur distant, conformément au schéma fonctionnel général de l'URL :

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

Cependant, l'utilisation d'un navigateur Web dans ce contexte vous permettra uniquement de visualiser ou de télécharger les fichiers qui vous intéressent. Afin d'utiliser pleinement tous les avantages du FTP, vous devez utiliser un logiciel spécialisé en tant que client.

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

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

Diagramme du protocole

L'interaction client-serveur lors d'une connexion FTP peut être visualisée comme suit :

Protocoles SFTP et FTPS

FTP sécurisé

À l'origine, FTP n'était pas destiné à être sécurisé, car il était destiné aux communications entre plusieurs installations et agences militaires. Mais avec le développement et la diffusion d'Internet, le risque d'accès non autorisé a augmenté à plusieurs reprises. Il était nécessaire de protéger les serveurs contre divers types d'attaques. En mai 1999, les auteurs de la RFC 2577 ont résumé les vulnérabilités dans la liste de problèmes suivante :

  • Attaques cachées (attaques par rebond)
  • Attaques frauduleuses
  • Attaques par force brute
  • Capture de paquets, reniflage
  • Vol de port

Le FTP classique n'a pas la capacité de transférer des données sous forme cryptée, de sorte que les noms d'utilisateur, mots de passe, commandes et autres informations peuvent être facilement et facilement interceptés par des attaquants. La solution habituelle à ce problème consiste à 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, fourni avec la plupart des implémentations du protocole Secure Shell.

FTPS

FTPS (FTP + SSL) est une extension du protocole standard de transfert de fichiers qui ajoute à ses fonctionnalités de base la création de sessions cryptées à l'aide du protocole SSL (Secure Sockets Layer). Aujourd’hui, la protection est assurée par son TLS analogique (Transport Layer Security) analogique plus avancé.

SSL

Le protocole SSL a été proposé par Netscape Communications en 1996 pour garantir la sécurité et la confidentialité des connexions Internet. Le protocole prend en charge l'authentification client et serveur, est indépendant 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 facultative du client. Dans un premier temps, le serveur répond à la demande du client en envoyant son certificat et ses paramètres de chiffrement. Le client génère ensuite une clé principale, la chiffre avec la clé publique du serveur et l'envoie au serveur. Le serveur déchiffre la clé principale avec sa clé privée et s'authentifie auprès du client en renvoyant un message authentifié par la clé principale du client.

Les données ultérieures sont cryptées et authentifiées avec des clés dérivées de cette clé principale. Dans la deuxième étape, qui est facultative, le serveur envoie une requête au client, et le client s'authentifie auprès du serveur en renvoyant la requête avec sa propre signature numérique et un certificat de clé publique.

SSL prend en charge une variété d'algorithmes cryptographiques. Lors de l'établissement de la communication, le cryptosystème à clé publique RSA est utilisé. Après l'échange de clés, de nombreux chiffrements différents sont utilisés : RC2, RC4, IDEA, DES et TripleDES. MD5 est également utilisé - un algorithme pour créer un résumé de message. La syntaxe des certificats de clé publique est décrite dans X.509.

L’un des avantages importants de SSL est son indépendance totale par rapport à la plate-forme logicielle. Le protocole est développé sur les principes de portabilité, et l'idéologie de sa construction ne dépend pas des applications dans lesquelles il est utilisé. En outre, il est également important que d'autres protocoles puissent être superposés de manière transparente au protocole SSL ; soit pour augmenter encore le degré de protection des flux d'informations cibles, soit pour adapter les capacités cryptographiques de SSL à une autre tâche bien définie.

Connexion SSL

Protocoles SFTP et FTPS

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

  • La chaîne est privée. Le cryptage est utilisé pour tous les messages après un simple dialogue permettant de déterminer la clé secrète.
  • La chaîne est authentifiée. Le côté serveur de la conversation est toujours authentifié, tandis que le côté client est éventuellement authentifié.
  • La chaîne est fiable. Le transport des messages inclut la vérification de l'intégrité (à l'aide du MAC).

Caractéristiques du FTPS

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

  • La méthode implicite implique l'utilisation du protocole SSL standard pour établir une session avant d'envoyer des données, ce qui, à son tour, rompt la compatibilité avec les clients et serveurs FTP classiques. Pour une compatibilité descendante 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 conserve le port standard 21 pour le protocole FTP. Cette méthode est considérée comme obsolète.
  • Explicit est beaucoup plus pratique, car il utilise des commandes FTP standard, mais crypte les données lors de la réponse, ce qui vous permet d'utiliser la même connexion de contrôle pour FTP et FTPS. Le client doit explicitement demander un transfert de données sécurisé depuis le serveur, puis approuver la méthode de cryptage. Si le client ne demande pas de transfert sécurisé, le serveur FTPS a le droit de maintenir ou de fermer la connexion non sécurisée. Un mécanisme de négociation d'authentification et de sécurité des données a été ajouté sous RFC 2228 qui inclut la nouvelle commande FTP AUTH. Bien que cette norme ne définisse pas explicitement les mécanismes de sécurité, elle précise qu'une connexion sécurisée doit être initiée par le client à l'aide de 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 de 504 doit être renvoyé. 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, cependant, le serveur n'est pas tenu de divulguer les niveaux de sécurité qu'il utilise. les soutiens. Les commandes FTPS les plus courantes sont AUTH TLS et AUTH SSL, qui assurent respectivement la sécurité TLS et SSL.

SFTP

SFTP (Secure File Transfer Protocol) est un protocole de transfert de fichiers de couche application qui s'exécute sur un canal sécurisé. A ne pas confondre avec (Simple File Transfer Protocol), qui porte la même abréviation. Si FTPS est simplement une extension de FTP, alors SFTP est un protocole distinct et indépendant qui utilise SSH (Secure Shell) comme base.

Secure Shell

Le protocole a été développé par l'un des groupes de l'IETF appelé Secsh. La documentation de travail du nouveau protocole SFTP n'est pas devenue une norme officielle, mais a commencé à être activement utilisée pour le développement d'applications. Par la suite, six versions du protocole ont été publiées. Cependant, l'augmentation progressive de ses fonctionnalités a conduit au fait que le 14 août 2006, il a été décidé d'arrêter de travailler sur le développement du protocole en raison de l'achèvement de la tâche principale du projet (développement SSH) et du manque d'un niveau d'expertise suffisant pour passer au développement d'un protocole de système de fichiers distant à part entière.

SSH est un protocole réseau qui permet le contrôle à distance du système d'exploitation et le tunneling des connexions TCP (par exemple, pour le transfert de fichiers). Fonctionnalité similaire aux protocoles Telnet et rlogin, mais contrairement à eux, il crypte tout le trafic, y compris les mots de passe transmis. SSH permet un choix de différents algorithmes de chiffrement. Les clients SSH et les serveurs SSH sont disponibles pour la plupart des systèmes d'exploitation réseau.

SSH vous permet de transférer en toute sécurité presque n'importe quel autre protocole réseau dans un environnement non sécurisé. Ainsi, vous pouvez non seulement travailler à distance sur votre ordinateur via le shell de commande, mais également transmettre un flux audio ou vidéo (par exemple, depuis une webcam) sur un canal crypté. SSH peut également utiliser la compression des données transmises pour un chiffrement ultérieur, ce qui est pratique, par exemple, pour lancer à distance les clients X WindowSystem.

La première version du protocole, SSH-1, a été développée en 1995 par le chercheur Tatu Ulönen de l'Université de technologie 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, incompatible avec SSH-1. Le protocole a gagné encore plus en popularité et, en 2000, il comptait environ deux millions d'utilisateurs. Actuellement, le terme « SSH » signifie généralement SSH-2, car La première version du protocole n'est désormais pratiquement plus utilisée en raison de lacunes importantes. En 2006, le protocole a été approuvé par le groupe de travail de l'IETF comme norme Internet.

Il existe deux implémentations courantes de SSH : privée commerciale et open source gratuite. L'implémentation gratuite s'appelle OpenSSH. En 2006, 80 % des ordinateurs sur Internet utilisaient OpenSSH. L'implémentation propriétaire est développée par SSH Communications Security, une filiale en propriété exclusive de Tectia Corporation, et est gratuite pour une utilisation non commerciale. Ces implémentations contiennent presque le même ensemble de commandes.

Le protocole SSH-2, contrairement au protocole telnet, résiste aux attaques d'écoute clandestine du trafic (« sniffing »), mais ne résiste pas aux attaques de l'homme du milieu. Le protocole SSH-2 résiste également aux attaques de détournement de session, puisqu'il est impossible de rejoindre ou de détourner une session déjà établie.

Pour éviter les attaques de l'homme du milieu lors de la connexion à un hôte dont la clé n'est pas encore connue du client, le logiciel client montre à l'utilisateur une « empreinte digitale de clé ». Il est recommandé de vérifier soigneusement « l’instantané de clé » affiché par le logiciel client avec l’instantané de clé du serveur, obtenu de préférence via des canaux de communication fiables ou en personne.

La prise en charge de SSH est disponible sur tous les systèmes de type UNIX, et la plupart disposent d'un client et d'un serveur ssh comme utilitaires standard. Il existe de nombreuses implémentations de clients SSH pour les systèmes d'exploitation non UNIX. Le protocole a acquis une grande popularité après le développement généralisé d'analyseurs de trafic et de méthodes permettant de perturber le fonctionnement des réseaux locaux, comme solution alternative au protocole Telnet non sécurisé pour la gestion des nœuds importants.

Communication via SSH

Pour travailler via SSH, vous avez besoin d'un serveur SSH et d'un client SSH. Le serveur écoute les connexions des machines clientes et, lorsqu'une connexion est établie, effectue une 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 chose qui distingue SFTP du FTP et FTPS standard est que SFTP crypte absolument toutes les commandes, noms d'utilisateur, mots de passe et autres informations confidentielles.

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

Les certificats X.509 incluent une clé publique et des informations sur le certificat du propriétaire. Ces informations permettent, en revanche, de vérifier l'intégrité du certificat lui-même, l'authenticité et le propriétaire du certificat. Les certificats X.509 ont 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 stockée séparément). Il ne contient aucune information sur le propriétaire de la clé. Certaines implémentations SSH utilisent des certificats X.509 pour l'authentification, mais elles ne vérifient pas réellement l'intégralité de la chaîne de certificats : seule la clé publique est utilisée (ce qui rend cette authentification incomplète).

Conclusion

Le protocole FTP joue sans aucun doute encore un rôle important dans le stockage et la diffusion des informations sur le réseau malgré son âge vénérable. Il s’agit d’un protocole pratique, multifonctionnel et standardisé. De nombreuses archives de fichiers ont été constituées sur cette base, sans lesquelles le travail technique ne serait pas aussi efficace. De plus, il est facile à mettre en place et des programmes serveur et client existent pour presque toutes les plateformes actuelles et moins actuelles.

À leur tour, ses versions protégées résolvent le problème de la confidentialité des données stockées et transmises dans le monde moderne. Les deux nouveaux protocoles ont leurs avantages et leurs inconvénients et remplissent des rôles légèrement différents. Dans les domaines où une archive de fichiers est nécessaire, il est préférable d'utiliser FTPS, surtout si le FTP classique y a déjà été utilisé auparavant. SFTP est moins courant en raison de son incompatibilité avec l’ancien protocole, mais il est plus sécurisé et possède plus de fonctionnalités, puisqu’il fait partie du système de gestion à distance.

Liste des sources

Source: habr.com

Ajouter un commentaire