Tunnel HTTP pour faire du SSH depuis le bureau

Publié le 20 mai 2009 par Nicolargo

Vous êtes coincé à votre bureau, derrière un beau Firewall qui bloque, mis à part le HTTP, tous les autres protocoles. Au même moment, le site Web hébergé sur votre serveur perso plante... Dans ce cas, il faut attendre le soir, rentrer chez vous pour enfin pouvoir se connecter en SSH sur votre serveur et résoudre le problème.

Il existe cependant une astuce qui moyennant un brin de préparation va vous permettre de faire passer le SSH à travers ce vilain Firewall...

Principe

La théorie est la suivante: nous allons créer un tunnel HTTP entre le PC du bureau et le PC de la maison. C'est possible car le tunnel est basé sur un protocole autorisé par le Firewall de votre entreprise (HTTP dans notre cas mais vous pouvez utiliser n'importe quel protocole TCP). Ensuite, il faudra rediriger sur votre PC de bureau le protocole SSH vers le tunnel HTTP. Une fois que les paquets SSH sont récupérés sur le PC maison, il n'a qu'a les envoyer vers votre serveur.

   

Préparation de la configuration maison

On commence par installer le logiciel HTTPtunnel sur notre PC maison (exemple d'installation sous Ubuntu):

sudo apt-get install httptunnel

Ensuite on lance la commande suivante:

sudo hts --forward-port A.B.C.D:22 80

Cette commande va écouter sur le port TCP/80 (comme c'est un port < 1024 on doit lancer cette commande en root, d'ou l'utilisation de sudo) et rediriger le trafic vers le serveur (d'adresse ip A.B.C.D dans mon exemple) et sur le port SSH (TCP/22).

Ensuite il faut penser à configurer votre *box pour:

  • autoriser les flux HTTP (TCP/80) entrant à destination de l'adresse publique de la *box votre maison (règle de Firewall)
  • rediriger les flux HTTP (TCP/80) à destination de l'adresse publique de la *box votre maison vers l'adresse privé de votre PC maison (règle de NAT/PAT)

Configuration du PC bureau

Si vous avez la chance de travailler sur un OS de type GNU/Linux à votre bureau, la prcédure est alors relative simple.

On commence par installer HTTPtunnel sur notre PC bureau (exemple d'installation sous Ubuntu):

sudo apt-get install httptunnel

Ensuite on lance la commande suivante:

htc --forward-port 2222 E.F.G.H:80

Cette commande va écouter sur le port TCP/2222 (comme c'est un port >
1024, il n'est pas nécessaire de lancer cette commande en root)
et rediriger le trafic vers le PC maison (d'adresse ip E.F.G.H dans mon
exemple) et sur le port HTTP (TCP/80).

Si votre entreprise oblige les flux Web à transiter par un proxy HTTP (d'adresse S.Q.U.I avec une authentification USER/PASSWORD), il faudra ajouter les paramètres suivants à la ligne de commande:

htc -P S.Q.U.I --proxy-authorization USER:PASSWORD --forward-port 2222 E.F.G.H:80

Dans le cas ou votre PC de bureau est sous Windows (snif), il va falloir passer par une configuration du client Putty par exemple en suivant cette procédure.

Lancement du client SSH

Il suffit de lancer la commande suivante à partir de votre PC de bureau:

ssh localhost -p 2222

Vous serez alors connecté sur votre serveur !