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 :

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

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.

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
