2007 2008 Université de Reims Champagne Ardenne Sécurité dans TCP/IP HTTPS, SSL, SSH, IPSEC et SOCKS Présenté par : BOUAMAMA Mohamed Nadjib AZIZ Xerin 1
Protocole HTTPS HTTPS signifie Hypertext Transfer Protocol Scure qui est une encapsulation du protocole HTTP au travers du protocole SSL. Fonctionnement du protocole HTTP Le protocole HTTP décrit de quelle façon un navigateur web interroge un serveur web et lui demander le contenu d une URL. 2
Protocole HTTPS HTTP est un dérivé de FTP et basé sur TCP HTTP est en mode non connecté, c est à dire qu entre une page web demandée et une autre sur le même serveur, il n y a pas de lien créé par une connexion, cela veut dire que la connexion se perd après chaque requête Par contre, lorsqu un client demande une page à un serveur web, il est connecté à ce serveur web tant que celui ci n a pas répondu en envoyant les données. Port utilisé : 80 Un échange requête réponse est initié par le navigateur client : requête du client vers le serveur 3 réponse du serveur vers le client
Protocole HTTPS Format des requêtes Méthode URL Version http En tête de requête Corps de la requête Méthode: 4 GET : Requête pour demander une ressource située à l'url spécifiée. HEAD : Cette méthode ne demande que des informations sur la ressource, sans demander la ressource elle même. POST : Envoi de données au programme situé à l'url spécifiée (le corps de la requête peut être utilisé). PUT : Cette méthode permet d'ajouter une ressource sur le serveur(envoyer des données au serveur). DELETE : Suppression de la ressource située à l'url spécifiée
Protocole HTTPS URL : identifie la ressource(uniform Ressource Location), c'est àdire l'adresse de la page sur le serveur. Version : version du protocole HTTP (HTTP/1.1) En tête de requête: pour donner plus d informations. Il est constitué des couples champ : valeur Connection: Keep Alive ne pas couper la connection après la réponse Accept: text/html, image/jpeg, image/png, text/*, image/*, */* le client peut recevoir tous ces formats 5
Protocole HTTPS Accept Encoding: x gzip, x deflate, gzip, deflate, identity le client peut recevoir tous ces encodages Accept Language: fr, en le client peut recevoir ces langues Host: www.site.com spécifie le nom de domaine du site, par exemple s'il y a plusieurs sites à la même adresse IP. Corps de la requête:pour terminer la requête, on envoie le corps de requête. Il peut contenir, par exemple, le contenu d'un formulaire HTML envoyé en POST. 6
Protocole HTTPS Exemple: Soit la requête suivante : http ://hypothetical.ora.com/ Ce qui provoque l envoie du message suivant par le navigateur : GET / HTTP/1.0 Connection : Keep Alive User Agent : Mozilla/3.0Gold (WinNT;I) Host : hypothetical.ora.com Aspect : image/gif,image/x xbitmap,image/jpeg,text/html 7
Protocole HTTPS Réponse HTTP: Une réponse HTTP est un ensemble de lignes envoyé au navigateur par le serveur. Elle comprend: une ligne de statut: 8 c'est une ligne précisant la version du protocole utilisé et l'état du traitement de la requête à l'aide d'un code et d'un texte explicatif. La ligne comprend trois éléments devant être séparé par un espace: La version du protocole utilisé Le code de statut qui précise si la requête a abouti ou s'il y a une erreur La signification du code Exp: HTTP/1.1 200 OK la version du protocole est HTTP/1.1
Protocole HTTPS 9 Les Code_etat les plus utilisés sont : 200 : La requête HTTP a été traitée avec succès. 201 : La requête a été correctement traitée et a résulté en la création d'une nouvelle ressource. 202 : La requête a été acceptée pour traitement, mais son traitement peut ne pas avoir abouti. 204 : Le serveur HTTP a correctement traité la requête mais il n'y a pas d'information à envoyer en retour. 301 : La ressource demandée possède une nouvelle adresse (URl). 302 : La ressource demandée réside temporairement à une adresse (URI) différente. 400 : Le navigateur web a effectué une requête GET conditionnelle et l'accès est autorisé, mais le document n'a pas été modifié. 401 : La requête nécessite une identification de l'utilisateur.
Protocole HTTPS Exp: En tête de la réponse: il s'agit d'un ensemble de lignes facultatives permettant de donner des informations supplémentaires sur la réponse. Date: Tue, 22 Jun 2004 13:18:15 GMT de traitement Server: Apache/1.3.26 (Unix) Debian GNU/Linux PHP/4.1.2 mod_ssl/2.8.9 OpenSSL/0.9.6g DAV/1.0.3 infos sur le server Last Modified: Tue, 22 Jun 2004 13:15:43 GMT date de dernière modification de la ressource demandée 10
Protocole HTTPS un passage à la ligne 11 Le corps de la réponse: composé des lignes du document demandé Exp: <html> <body> <h1> page html </h1> <p> contenant une image <br> et une seule <img src="balle.gif"> </p> </body> <html>
Protocole HTTPS Le but de HTTPS est de sécuriser les accès à un service web afin d en préserver la confidentialité. Principe: Les accès à des pages web se font à l aide du protocole HTTP en empruntant le réseau Internet, aucune garantie de confidentialité n est assurée lors de ces accès, c est simple pour un pirate d intercepter les requêtes et les réponses. Donc nous avons pas une certitude que nous consultant le site que nous croyons. 12
Protocole HTTPS Afin de palier à ces inconvénients, HTTPS est mis en œuvre. Il permet d encapsuler et de crypter le trafic HTTP, donc il sera impossible qu un pirate qui intercepte ces données de les décrypter. Il permet de s assurer que le serveur auquel on accède est bien celui que l on croit. Les échanges sont crypter et décrypter à l aide d un couple de clés informatiques qui sont propres à un serveur W3 Clé privée: connue que par ce serveur Clé public: connue par le monde entier 13 Le navigateur avec lequel on accède à ce serveur doit récupérer la clé public de ce serveur.
Protocole HTTPS celle ci lui est transmise par le serveur W3, encapsulée dans un certificat X509 (c'est un fichier informatique). Ce certificat contient alors la clé public validée(signée) par un organisme reconnu appelé autorité de certification CA. Fonctionnement: phase 1: Choix de la méthode de chiffrement phase 2: Présentation du certificat serveur phase 3: Échange de la clef de session générée et application de la méthode de chiffrement choisie 14 phase 4: Échange sécurisé des données HTTP Le port utilisé pour ce type de connexion est 443.
Protocole HTTPS Les principaux avantages que fournit HTTPS par rapport HTTP: Cryptage des données Intégralité des données Confidentialité des données Garantie d avoir un hôte récepteur de confiance Le seul inconvénient réel est l obligation de chiffrer l intégralité des données de la page web. Quand on dit que la quasi totalité des navigateurs supportent HTTPS ceci veut dire que ces navigateurs supportent SSL, signalé par un cadenas dans la barre d adresse. 15
Le protocole SSL (Scure Socket Layer) 16 Généralité: SSL = Scure Socket Layer SSL est un système qui permet d échanger les informations entre deux ordinateurs d une façon sûre. SSL assure trois choses: Confidentialité: Il est impossible d'espionner les informations échangées. Intégrité: Il est impossible de truquer les informations échangées. Authentification: Il permet de s'assurer de l'identité du programme, de la personne ou de l'entreprise avec laquelle on communique.
Le protocole SSL (Scure Socket Layer) SSL est un complément à TCP/IP et permet (potentiellement) de sécuriser n'importe quel protocole ou programme utilisant TCP/IP. SSL a été créé et développé par la société Netscape et RSA Security. Il existe des versions open source. SSL est standardisé par l'ietf sous le nom TLS (pour Transport Layer Security). 17
Le protocole SSL (Scure Socket Layer) OpenSSL est opensource: tout le monde peut contrôler et vérifier le code source (Le secret réside dans les clés de chiffrement, pas dans l'algorithme lui même). Il comprend plusieurs versions: SSL2: authentification du serveur + confidentialité des échanges SSL3: c est le SSL2 avec en plus l authentification mutuelle 18
Le protocole SSL (Scure Socket Layer) Une session SSL est définie par les paramètres suivants partagés entre un client et un serveur: Session identifier : un octet fixé par le serveur pour identifier la session Peer certificat : un certificat pour le serveur, éventuellement un autre pour le client Cipher Spec : définit l'algorithme de chiffrement symétrique Master secret : clé de 48 octets négociée entre le serveur et le client Compression method : NULL pour l'instant (SSLv3/TLS) Is resumable : flag qui indique si de nouvelles connexions peuvent être créées à partir de cette session 19
Le protocole SSL (Scure Socket Layer) 20 Une connexion SSL est définie par les paramètres suivants partagés entre un client et un serveur : Server and client random : des octets aléatoires determinés par le client et le serveur pour chaque connexion Server write (send) MAC secret : clé secrète utilisée par le serveur pour faire les MAC Client write (send) MAC secret : clé secrète utilisée par le client pour faire les MAC Server write (send) key : clé symétrique utilisée par le serveur pour chiffrer les données Client write (send) key : clé symétrique utilisée par le client pour chiffrer les données Initialization vectors : pour un algorithme de chiffrement par bloc en mode CBC. Le premier est fixé lors du handshake, les suivants sont les derniers
Le protocole SSL (Scure Socket Layer) SSL a été cryptanalysé: ce système a été plus analysé que tout ses concurrents. SSL a été passé en revue par de nombreux spécialistes en cryptographique. On peut donc le considérer comme sûr. Fonctionnement de SSL: SSL consiste en deux protocoles: SSL Handshake protocol: avant de communiquer, les 2 programmes SSL négocient des clés et des protocoles de chiffrement communs. SSL Record protocol: Une fois négociés, ils chiffrent toutes les informations échangées et effectuent divers contrôles. 21
Le protocole SSL (Scure Socket Layer) 22 La négociation SSL ("handshake") Au début de la communication le client et le serveur s'échangent: Note: La version SSL avec laquelle ils veulent travailler La liste des méthodes de chiffrement (symétrique et asymétrique) et de signature que chacun connaît (avec longueur de clé) Les méthodes de compression que chacun connaît Des nombres aléatoires Les certificats Client et serveur essaient d'utiliser le protocole de chiffrement le plus puissant et diminuent jusqu'à trouver un protocole commun aux deux. Une fois que cela est fait, ils peuvent commencer à échanger des données.
Le protocole SSL (Scure Socket Layer) La communication SSL ("record") Avec SSL, l expéditeur de données: découpe les données en paquets compresse les données signe cryptographiquement les données chiffre les données 23 les envoie
Le protocole SSL (Scure Socket Layer) Celui qui réceptionne les données: déchiffre les données vérifie la signature des données décompresse les données réassemble les paquets de données 24
Le protocole SSL (Scure Socket Layer) Comment SSL fait il pour protéger les communications? Il utilise: un système de chiffrement asymétriques (comme RSA ou Diffie Hellman). Il est utilisé pour générer la clé de session. un système de chiffrement symétrique (DES, 3DES, IDEA, RC4...) en utilisant les clés de session pour chiffrer les données. un système de signature cryptographique des messages (HMAC, utilisant MD5, SHA...) pour s'assurer que les messages ne sont pas corrompus. 25
Le protocole SSL (Scure Socket Layer) Le rôle des certificats: Lors d'une négociation SSL, il faut s'assurer de l'identité de la personne avec qui on communique. Comment être sûr que le serveur auquel vous parlez est bien celui qu'il prétend être? C'est là qu'interviennent les certificats. Au moment de vous connecter sur un serveur web sécurisé, ce dernier vous enverra un certificat contenant sa clé public, le nom de l'entreprise, son adresse, etc. C'est une sorte de pièce d'identité. 26
Le protocole SSL (Scure Socket Layer) Comment vérifier l'authenticité de cette pièce d'identité? Ce sont les PKI (Public Key Infrastructure), des sociétés externes (auxquelles vous faites implicitement confiance), qui vont vérifier l'authenticité du certificat. (La liste de ces PKI est incluse dans votre navigateur. Il y a généralement VeriSign, Thawte, etc.) Ces PKI signent cryptographiquement les certificats des entreprises (et ils se font payer pour ça). 27
Le protocole SSL (Scure Socket Layer) Les utilisations de SSL: SSL peut être utilisé pour sécuriser pratiquement n'importe quel protocole utilisant TCP/IP. HTTPS: c'est HTTP+SSL. FTPS est une extension de FTP (File Transfer Protocol) utilisant SSL. SSH (Secure Shell): c'est une sorte de telnet (ou rlogin) sécurisé. 28
Le protocole SSL (Scure Socket Layer) Les attaques et faiblesses de SSL: SSL est théoriquement vulnérable aux attaques par force brute en cas d'utilisation de clés 40 bits, il est donc conseillé d'utiliser des clés de 128 bits. SSL est très vulnérable aux attaques par le milieu (man in the middle): l'attaquant intercepte (physiquement) la requête du client et se fait passer pour le serveur auprès de lui, tout en se faisant passer pour un client auprès du serveur légitime. Il reçoit donc la totalité du flux supposé protégé. SSL version 2 est faible dans le sens où il n'impose pas l'authentification client (ce serait d'ailleurs difficilement gérable en pratique). 29
Le protocole SSL (Scure Socket Layer) Conclusion Le protocole SSL est actuellement le seul protocole de sécurisation déployé et utilisé à grande échelle, son grand avantage étant sa transparence par rapport au protocole TCP. Il garantit l'authentification, la confidentialité et l'intégrité des données. Avec son architecture modulaire, il ne se limite pas à des applications traditionnelles, puisque il intègre les réseaux sans fil comme le WAP (Wirless Transport Layer) 30
Le protocole SSH (Secure Shell) Connexions àdistance : Secure Shell SSH est un protocole, devant sécuriser les communications IL aide à avoir une connexion sécurisé qui ne laisse pas passer le mot de passe en clair Non seulement le mot de passe est chiffré lors de la connexion mais les informations circulant sur le réseau entre les deux machines le sont aussi. Il permet d exécuter des commandes à distance en toute sécurité Il dispose d une authentification renforcée des machines 31 La communication se fait sur le port 22
Le protocole SSH (Secure Shell) Le protocole SSH existe en deux versions majeures : Version 1: permet de se connecter à distance à un ordinateur afin d'obtenir un Shell ou ligne de commande, Cette version souffrait néanmoins de problèmes de sécurité dans la vérification de l'intégrité des données envoyées ou reçues, cette version utilise les clés publiques RSA. Version 2: Cette version est beaucoup plus sûre cryptographiquement, et 32 possède en plus un protocole de transfert de fichiers complet, Il est particulièrement utilisé pour ouvrir un Shell (console) sur un ordinateur distant. cette version utilise l algorithme DSA pour l authentification des entités en communication.
Le protocole SSH (Secure Shell) Architecture: SSH utilise une architecture client serveur pour assurer l authentification, le chiffrement et l intégrité des données transmises dans un réseau. La version 2 de ce protocole spécifie une architecture séparée en trois sous protocoles (ou couches) travaillant ensemble: La couche transport SSH (SSH TRANS): elle assure, L authentification du serveur La confidentialité et l intégralité des données Que le client communique avec le bon serveur Le chiffrement symétrique de la communication entre client/serveur 33
Le protocole SSH (Secure Shell) La couche d authentification SSH (SSH AUTH): elle permet, De certifié l identité du client auprès du serveur La sécurisation par la clé de chiffrement crée dans la partie précédente L utilisation de nombreux services différents de façon sécurisé tel que: Secure Shell interactive, application X11 et différents port TCP/IP tunnélisés La couche de connexion SSH (SSH CONN): cette couche s appuie sur la couche d authentification Elle offre une variété de services riches aux clients, en se servant d l unique tube fournis par (SSH TRANS), Ces services comprennent tout ce qu il faut pour gérer plusieurs sessions interactives ou non : multiplexage de plusieurs flux (ou canaux), gestion des transferts X, de port et d agent, etc. 34
Le protocole SSH (Secure Shell) Dans ce qui suit, nous détaillons la phase d initialisation ainsi que les trois composantes essentielles de SSH. La phase d initialisation: Dans la phase d initialisation du protocole SSH, de nombreux éléments importants sont négociés. Dans le cas d'utilisation du protocole TCP/IP sur le réseau, la procédure suivante se déroule entre la machine cliente et la machine serveur : 1. Dès que la connexion est établie, le client et le serveur échangent en clair leurs numéros de version du protocole SSH. 35
Le protocole SSH (Secure Shell) 36 2. Le serveur commence par envoyer au client la liste des méthodes de cryptage supportées, la liste des méthodes d'authentification supportées, des indicateurs d'extensions de protocole (par exemple, la méthode de compression, etc.) et un cookie sur 64 bit que le client devra renvoyer. Ce cookie a comme but de protéger le serveur contre une attaque par déni de service. 3. Le client envoie à son tour la liste des méthodes de cryptage supportées, liste des méthodes d'authentification supportées et une copie du cookie du serveur. 4. Le client et le serveur choisissent les meilleurs algorithmes supportés par les deux. 5. Le client et le serveur calculent séparément un identifiant de session à partir des valeurs Diffie Hellman échangées entre les deux entités. SSHv2 utilise aussi une méthodes d échanges des groupes DH(par exp. Diffie Hellmangroup1 sha1) pour simplifier l échange DH.
Le protocole SSH (Secure Shell) 6. Le serveur envoie sa clé publique au client et signe avec sa clé privée les valeurs échangées précédemment. 7. Le client vérifie la signature du client et passe ensuite en mode crypté. 8. Le serveur répond au client par un message de confirmation crypté. 9. Les deux parties, le client et le serveur, sont maintenant en mode crypté avec utilisation de l'algorithme et de la clé sélectionnés. 10. Le client envoie maintenant la demande d un service (par exp, ssh userauth ou ssh connection). 11. Le serveur précise les méthodes d authentification qu il peut accepter (publickey, password, etc.). 12. Finalement, le client envoie sa méthode d authentification que le serveur accepte ou rejette. Dans la plupart des implémentations SSH et suivant la politique du 37 serveur, le client a le droit à trois essais pour s authentifier.
Le protocole SSH (Secure Shell) Les avantages: SSH constitue une approche puissante et pratique pour protéger les communications sur un réseau d ordinateurs. A travers son mécanisme d authentification, SSH permet d effectuer sous un tunnel sécurisé des connexions à distance, des transferts de fichiers, le transfert de ports TCP/IP et d autres fonctionnalités importantes. Ainsi, il présente comme avantages : 5. La création d un VPN au niveau d échange 6. La notion du Transfert (tunneling) 38
Le protocole SSH (Secure Shell) Les inconvénients SSH est capable de contourner de nombreuses menaces de sécurité liées au réseau. Cependant, il est vulnérable aux attaques par déni de service, héritant ainsi les faiblesses de TCP/IP sur lequel il repose. En outre et suivant l environnement, SSH est sensible à certaines méthodes d attaques, comme l analyse et le détournement de trafic. Dans ce qui suit, nous détaillons les principaux inconvénients de SSH. 5. La première authentification non sécurisée du client avec le serveur SSH 39 6. Attaques sur le mot de passe
Le protocole IPSEC 1. Introduction IPsec est une norme qui définit une extension de sécurité pour le protocole internet (IP) afin de permettre la sécurisation des réseaux basés sur ce protocole. 40 La sécurisation se faisant au niveau d IP, IPsec peut être mis en oeuvre sur tous les équipements du réseau et fournir un moyen de protection unique pour tous les échanges de données.
Le protocole IPSEC IPsec =IP Security Protocol Norme développée à l IETF depuis1992 Première version en 1995 Version améliorée, avec gestion dynamique des paramètres de sécurité, en novembre 1998 41
Le protocole IPSEC 2. La sécurisation des données echangées Où intervient IPsec? IPsec s insère, dans la pile de protocoles TCP/IP, au niveau d IP. 42 IPsec peut être mis en oeuvre sur tous les équipements utilisant le réseau et assurer une protection soit de bout en bout, entre les tiers communicants, soit lien par lien, sur des segments de réseau.
Le protocole IPSEC Quels services de sécurité sont fournis? IPsec vise à prévenir les diverses attaques rendues possibles par le protocole IP, notamment empêcher un adversaire d espionner les données circulant sur le réseau ou de se faire passer pour autrui afin d accéder à des ressources ou données protégées. IPsec peut fournir des services de sécurité suivants : 43 Confidentialité des données et protection partielle contre l analyse du trafic. Authenticité des données et contrôle d accès continu. Protection contre le rejeu
Le protocole IPSEC Comment sont fournis ces services? Les services de sécurité mentionnés ci dessus sont fournis au moyen de deux extensions du protocole IP appelées AH et ESP AH (Authentication Header) est conçu pour assurer l authenticité des datagrammes IP sans chiffrement des données (sans confidentialité). ESP(Encapsulating Security Payload) :a pour rôle premier d assurer la confidentialité mais peut aussi assurer l authenticité des données. 44
Le protocole IPSEC IPsec comporte une liste d algorithmes proposés pour être utilisés avec IPsec et dont l utilisation est négociable en ligne par le biais d un protocole appelé IKE. IKE (Internet Key Exchange): un protocole de connexion utilisé par les equipements IPSec pour gérer les échanges ou les associations entre protocoles de sécurité. 45
Le protocole IPSEC 3. Les deux modes de fonctionnement IPSec Le mode transport : protège uniquement le contenu du paquet IP sans toucher à l en tête ; ce mode n est utilisable que sur les équipements terminaux (postes clients, serveurs). AH, ESP ou les deux. 46 Le mode tunnel : permet la création de tunnels par encapsulation de chaque paquet IP dans un nouveau paquet. Ainsi, la protection porte sur tous les champs des paquets IP arrivant à l entrée d un tunnel, y compris sur les champs des en têtes (adresses source et destination).
Le protocole IPSEC 47 Tableau 1. Fonctionnalité des modes tunnel et transport
Le protocole IPSEC 4. La gestion des paramètres de sécurisation La gestion manuelle consiste à laisser L administrateur configurer manuellement chaque équipement utilisant IPsec avec les paramètres appropriés 48 La gestion automatique Un protocole de gestion des paramètres relatifs à IPsec IKE (Internet Key Exchange). IKE se charge en réalité de la gestion (négociation, mise à jour, suppression) de tous les paramètres relatifs à la sécurisation des échanges.
Le protocole IPSEC 5. Stockage des paramètres SA =Security Association= Association de Sécurité Une association de sécurité est une structure de données qui regroupe l ensemble des paramètres de sécurité associés à une communication donnée. 49 SAD =Security Association Database= base de donnees des Association de sécurité Stocker l ensemble des associations de sécurité actives Les éléments stockés dans cette base de données sont créés et modifiés par IKE puis consultés par la couche IPsec pour savoir comment traiter chaque paquet reçu ou à émettre.
Le protocole IPSEC 6. La configuration Les protections offertes par IPsec sont basées sur des choix définis par l administrateur du réseau par le biais de politiques de sécurité. Politiques = ensemble de regle qui: permettent, pour chaque paquet IP, de décider s il se verra approter des sercives de sécurité, sera autorisé a passer outre ou sera rejeté. indiquent à IKE quelles associations de sécurité il doit négocier, et en particulier, quels tunnels sécuritsés il doit établir. 50
Le protocole IPSEC SPD = Security Policy Database =base de données de politique de sécurité La configuration des équipements IPsec passe par la configuration manuelle des politiques de sécurité sur chaque équipement. 51
Le protocole IPSEC 52 Figure 1. Composants d IPsec et actions à l émission de données
Le protocole SOCKS Socks : un protocole qui est utilisé pour permettre à deux ou plusieurs machine de communiquer de manière sécurisée. En principe la connexion n est visible que depuis le réseau interne. Socks définit le dialogue entre : un client Socks: applications qui prennent l initiative du lancement de la communication. 53 un serveur Socks: applications qui attendent la communication. implémenté au niveau de la couche application (au dessus de la couche transport, et donc au dessus de TCP/IP ).
Le protocole SOCKS 1. Principe de fonctionnement 1) le serveur crée une "socks serveur" (associée à un port) et se met en attente 2) le client se connecte à la socks serveur ; deux socks sont alors crées : une "socks client " et une "socks service client ". serveur 54 client "socks client " "socks serveur" "socks service client "
Le protocole SOCKS 3) Le client et le serveur communiquent par les socks. L interface est celle des fichiers (read, write). La socks serveur peut accepter de nouvelles connexions. 55
Le protocole SOCKS 2. Versions de SOCKS SOCKS V4 : qui fournit les fonctions de base de requête/réponse, mais uniquement sur TCP IP. SOCKS V5, qui supporte les proxy UDP et ajoute une fonctionalité d'authentification selon diverses méthodes. Bien que ce soit souvent le cas, il n'est pas garanti que les implémentations de SOCKS V5 supportent SOCKS V4. 56
Le protocole SOCKS 3. Procédure à suivre pour les clients basés sur le protocole TCP Quand un protocole TCP fondé client souhaite établir une connexion à un objet qui est accessible uniquement par l'intermédiaire d'un pare feu, il doit ouvrir une connexion TCP à la socks port approprié sur le serveur socks. Le service socks est traditionnellement située sur le port TCP 1080. 57
Le protocole SOCKS 1) Méthode de base Le client se connecte au serveur, et en envoie une version Identifiant / méthode de sélection message: VER NMETHODS METHODS 1 1 1 to 255 58 VER: numéro de version de SOCKS (X'05' pour cette version), sur un octet NMETHODS: nombre de méthodes d'authentification supportées, sur un octet METHODES: liste des méthodes d'authentification supportées (un octet par méthode), de taille variable
Le protocole SOCKS Le serveur choisit parmi l'une des méthodes indiquées dans les méthodes, et METHODE sélection envoie un message: VER 1 METHOD 1 59 Les valeurs actuellement définies pour METHODE sont: X '00' Pas d'authentification X '01' GSSAPI X '02' Nom d'utilisateur/mot de passe X '03' à X '7F' méthodes définies par l'iana X '80' à X 'FE' méthodes réservée pour des utilisations privées X 'FF' Non admissible méthodes
Le protocole SOCKS 2) requête la requête de socks est formée comme suit: VER CMD RSV ATYP DST.ADDR DST.PORT 1 1 X 00 1 Variable 2 60
Le protocole SOCKS Où: 61 VER numéro de version de SOCKS (devrait être 0x05 pour cette version), sur un octet CMD :code de comande sur un octet établir une connexion TCP/IP X'01' mettre en place un mappage de port TCP X'02' associer un port UDP X'03' LSG réservé, doit être X'00' ATYP type de l'adresse de destination, sur un octet : adresse IPv4 (le champ adresse sera de longueur 4 octets) X'01' nom de domaine (le champ adresse sera de longueur variable) X'03' adresse IPv6 (le champ adresse sera de longueur 16 octets) X'04' DST.ADDR : adresse de destination, de longueur 4 ou 16 octets, ou de la longueur du nom de domaine + 1
Le protocole SOCKS 3) Adresses Dans un champ d'adresse (DST.ADDR, BND.ADDR), le champ spécifie ATYP le type d'adresse à l'intérieur du champ: X'01' L'adresse est une version 4 adresse IP, d'une longueur de 4 octets X'03 Le champ d'adresse contient un pleinement qualifié nom de domaine. La première octet de l'adresse champ contient le nombre d'octets que de nom suivre, il n'ya pas de mettre fin à l'octet NUL : X'04 ' L'adresse est une version 6 adresse IP, d'une longueur de 16 octets. 62
Le protocole SOCKS 4) Réponses Renvoie une réponse, formé comme suit: VER REP LSG ATYP BND.ADDR BND.PORT 1 1 X 00 1 Variable 2 63
Le protocole SOCKS Où: 64 VER numéro de version de SOCKS (devrait être 0x05 pour cette version), sur un octet REP status, sur un octet : X'00' requête acceptée X'01' general serveur SOCKS échec X'02' connexion interdite X'03' réseau injoignable X'04' hôte de destination injoignable X'05' connexion refusée par l'hôte de destination X'06' TTL expiré X'07' commande non supportée/erreur de protocole X'08 type d'adresse non supporté X'09 à X'FF' unassigned
Le protocole SOCKS LSG réservé, doit être X'00' ATYP type de l'adresse de destination, sur un octet : adresse IPv4 (le champ adresse sera de longueur 4 octets) X'01' nom de domaine (le champ adresse sera de longueur variable) X'03' adresse IPv6 (le champ adresse sera de longueur 16 octets) X'04' BND.ADDR: adresse de destination, de longueur 4 ou 16 octets, ou de la longueur du nom de domaine + 1 BND.PORT numéro de port, sur un octet 65 Si la méthode retenue comprend l'encapsulation à des fins de l'authentification, l'intégrité et / ou de confidentialité, les réponses sont encapsulé dans la méthode d'encapsulation dépendant.