Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Mise en place d'un tunnel SSH

Par Florian GRISOLET Publié le 26/10/2016 à 00:09:34 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

Un tunnel est un procédé consistant à inclure les données d'un protocole dans un autre protocole. Au travers de cette article, nous verrons comment encapsuler les données du protocole HTTP dans le protocole SSH. L'objectif est de réaliser un tunnel SSH que l'on utilisera en faisant transiter des trames http, c'est à dire que l'on devra pourvoir accéder à des ressources présentes sur internet, en passant par un tunnel cryptant les données.

Explication

Le Secure Shell (SSH) est un protocole de communication sécurisé qui fonctionne avec un échange de clés de chiffrement entre un serveur et un client.

Lors de la première connexion, un échange des clés publiques se réalisera, c'est une étape importante puisqu'elle doit permettre de garantir l'identité des deux parties. Les communications suivantes se dérouleront ainsi:

Le client crypte l'envoi de ses données avec sa propre clé privée. Le serveur recevant le message décryptera avec la clé publique du client. Pour sa réponse, le serveur cryptera avec sa clé privée, le client lui décryptera avec la clé publique du serveur et ainsi de suite pour chacune des émissions et réceptions de messages. C'est un mécanisme qui permet de s'assurer de l'intégrité et de la confidentialité des données en transit sur le réseau, entre deux hôtes, ici un serveur et un client.

Le deuxième point technique à aborder est le port forwarding. C'est un point essentiel du tunneling SSH, c'est ce qui permet non seulement d'accéder à un serveur SSH derrière un routeur mais c'est également ce qui permet de faire rediriger le flux de donnée d'un port vers un autre port. Dans notre cas, nous redirigerons des requêtes http dans un port "passerelle" de notre tunnel.

Le port forwarding est, comme précédemment dit, une technique qui consiste à rediriger des paquets réseaux sur un port donné vers un autre port choisi. Cela nous permet de rediriger par exemple des paquets arrivant sur une box vers un ordinateur mais également de rediriger les paquets d'un port d'un ordinateur vers un autre port du même ordinateur. Dans notre situation, nous redirigerons les paquets émis par un navigateur internet vers un client SSH présent sur la même machine.

Qu'est-ce qu'un port ?

Un port est un numéro compris entre 0 et 65535, il correspond à l'adresse d'une application, d'un protocole sur une machine.

Voici un schéma représentatif du système à obtenir :

Ce système permet à un client d'accéder à des ressources sur internet en évitant les règles imposées par un proxy. Attention, n'y voyez pas un moyen de contourner de manière systématique les règles de sécurité mise en place au niveau d'un proxy puisque : D'une part, il est impératif que le proxy et les différents routeurs présents autorisent le transit du protocole SSH, bien qu'il existe encore quelques solutions pour contourner ce nouveau problème. D'autre part le mécanisme de cryptage des données à un effet non négligeable sur le débit réseau, en effet le temps de cryptage et de décryptage de toutes les trames ont un impact sur le débit. C'est à dire que les performances ne vous permettront pas de jouer correctement en ligne, n'y même de télécharger correctement, ou bien de visionner du flux streaming en 1080P. Le tunneling SSH permet, par exemple, d'administrer des machines à distance de façon sécurisée, ou bien de consulter des sites bloqués par le proxy dans le cadre du travail, ou bien d'un projet. Sachez que même si les échanges de données sont cryptés, vos adresses IP sont toujours en claire, ainsi un administrateur réseaux est en mesure de savoir que vous avez établi une connexion SSH vers un site distant.

En outre, il reste néanmoins deux points à expliquer. Tout d'abord sur le routeur ou bien sur votre box, il sera nécessaire de mettre en place du port forwarding, c'est à dire que l'ensemble des requêtes arrivant sur le port 22 de votre box, devront être redirigées vers votre serveur SSH sur le port 22. En effet, le client ne peut pas accéder directement au serveur SSH, en utilisant son adresse IP.

Installation du serveur SSH

Sous Debian, Ubuntu

Pour l'installation:

[email protected]:/# apt-get install openssh-server

Pour la mise à jour:

[email protected]:/# apt-get update

Démarrage du service:

[email protected]:/# service ssh start

Sous CentOS

Pour l'installation:

[[email protected] ~]# yum install openssh-server

Pour la mise à jour:

[[email protected] ~]# yum update

Démarrage du service:

[[email protected] ~]# systemctl start sshd

Configuration sur la Box

Pour permettre à un client SSH de se connecter à un serveur derrière une box, il est nécessaire de mettre en place la redirection de port.

Vous devez redirigez l'ensemble des données arrivant sur le port 22 (interne) de votre box vers le port 22 (externe) de votre serveur SSH. En fonction des box, l'interface peut changer, mais le principe reste le même.

Votre serveur SSH doit écouter sur le port 22, ce qui est conventionnellement le cas lors d'une installation par défaut du service OpenSSH.

Configuration du client SSH

Lancez un client SSH comme putty.

Le port 22 renseigné dans putty, correspondant au port dit "interne" de la box que l'on redirige vers le serveur SSH.

Ensuite, il faut se rendre dans l'onglet "SSH" puis "TUNNELS".

Dans cette partie, il faut ouvrir un port de "transfert". Toutes les données envoyées dans le port 2020 seront en fait redirigées dans le tunnel SSH. Ici on crée un source port 2020, il s'agit d'un port libre, il n'est pas obligatoire, vous pouvez prendre n'importe quel port, du moment qu'il soit disponible et libre. Puis de l'ajouter en dynamique.

Une fois ajouté, une ligne apparaitra : "D2020". Ouvrez la session, une connexion est établie avec votre serveur SSH, et vous avez ouvert un port sur votre machine. Il ne reste plus qu'à configurer le navigateur internet.

Configuration du navigateur internet

Mozilla Firefox

Rendez-vous dans Options, Avancé, Réseau, Paramètres.

Une nouvelle fenêtre apparait. Choisissez de configurer manuellement un proxy, en redirigeant vos requêtes dans le port en local. L'option DNS distant permet également de rediriger les requêtes DNS à travers le tunnel SSH. Validez les paramètres, désormais votre navigation web passe entièrement par le tunnel SSH.

Google Chrome

Rendez-vous dans les paramètres, proxy, puis paramètres réseaux.

Une nouvelle fenêtre apparait, activez l'utilisation du serveur proxy et cliquez sur "avancé".

Une nouvelle fenêtre apparait, ajoutez 127.0.0.1 comme adresse de serveur socks avec comme port : 2020. Validez toutes les fenêtres, votre navigation web se réalise désormais via tunnel SSH.

Conclusion

Ainsi, nous avons mis en place un tunnel SSH vous permettant d'accéder à des ressources inaccessibles ou filtrées, tout en ayant une connexion sécurisée. Ne voyez pas ce système comme un moyen de contourner un système de filtrage mais plutôt comme un système vous permettant de sécuriser l'accès à certaines informations, notamment l'accès à des données présentes sur des serveurs web. La sécurité est présente via le cryptage que propose le protocole SSH mais également via l'authentification que nécessite le serveur SSH.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels