Tunnel HTTP sur SSH: Connexion sécurisée et non filtrée

Si vous utilisez une connexion Internet filtrée (qui ne laisse passer que les paquets HTTP par exemple) ou publique sur laquelle vous faites passer des données confidentielles, vous pouvez passer par un tunnel SSH, encapsulé dans un tunnel HTTP. Ainsi, les règles de filtrage ne s’appliquent pas à vos paquets HTTP – la connexion n’est donc plus bridée – et les données sont cryptées via le protocole SSH. Il y a donc une triple-encapsulation de vos paquets:

Paquet X -> SSH -> HTTP -> Serveur relais -> HTTP -> SSH -> Paquet X

Le seul prérequis est que vous devez avec un serveur relais hors de votre réseau sur lequel vous avez un compte SSH, et sur lequel est installé HTTPTunnel. Votre ordinateur client doit également avec HTTPTunnel d’installé.

Installation de HTTPTunnel

Sur Debian ou sous CentOS, le paquet httptunnel est disponible respectivement dans les dépôts stable et EPEL.

Note: installez httptunnel sur votre machine ainsi que la machine relais, comme décrite dans l’introduction.
Note: Sous CentOS, si l’utilitaire yum ne connait pas le paquet httptunnel, ajoutez le dépôt RPMForge avec la commande suivant:

Mise en place du tunnel HTTP sur le serveur relais

Pour mettre en place le tunnel HTTP, vous devez démarrer le serveur sur votre machine relais:

Cette commande redirigera toutes les requêtes arrivant sur le port 443 (à noter que c’est le port HTTPS, il est donc normalement autorisé par la plupart des firewalls/proxys – vous pouvez également configurer un reverse proxy pour passer sur le port 80 ou autre même avec un serveur HTTP sur ce même serveur relais) vers le port 22 du serveur relais, tout en “désencapsulant” le HTTP reçu sur ce port 443.

Le tunnel sur votre machine client

Sur votre machine client, à savoir l’ordinateur qui utilise le tunnel HTTP, il vous suffit de lancer le client HTTPTunnel pour rediriger un port local vers le serveur relais:

Important: ici, my.machine.tld est l’enregistrement DNS de votre serveur relais. Vous pouvez également mettre l’adresse IP.

Ici, nous avons donc configurer l’encapsulation des paquets qui arrive sur le port 8001 de votre machine. Il seront également transférés vers votre serveur relais my.machine.tld sur le port 443.

Utilisation du tunnel HTTP

À ce point, le tunnel HTTP est configuré et vous pouvez dors-et-déjà vous connecter en SSH sur la machine relais en passant par des paquets SSH:

SSH va se connecter sur votre port local 8001 et envoyer des paquets. Ceux-ci sont encapsulés dans du HTTP puis forwardés sur le serveur relais.

Création d’un proxy SOCKS

Vous pouvez maintenant créer un proxy SOCKS vous permettant d’utiliser votre serveur relais comme proxy (pour tous les protocoles/ports, à condition que le serveur autorise les connexions sortantes). Pour cela, nous allons à nouveau utiliser SSH et SSHd!

Configuration côté serveur

Au niveau de votre serveur relais, vous devez configurer le fichier /etc/ssh/sshd_config et changer si besoin ces valeurs:

Configuration côté client

Dans le fichier /etc/ssh/ssh_config, changez si besoin les valeurs suivantes:

Création du proxy SOCKS

Pour créer le proxy SOCKS, il vous suffit de lancer cette commande:

SSH a maintenant créé sur votre port 8080 local un proxy SOCKS passant par le SSH, passant lui-même pas l’encapsulation HTTP. Ainsi, tous vos paquets quels qu’ils soient seront encapsulés et cryptés par SSH puis seront encapsulés dans un paquet HTTP. Votre proxy sur le port 8080 permet donc maintenant d’avoir une connexion totalement sécurisée et non filtrée n’importe où, même derrière un autre proxy.

Configurez donc vos applications pour utiliser le proxy localhost sur le port 8080.

facebooktwittergoogle_plusredditpinterestlinkedinmail

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">