Le tunnel SSH

Contourner un pare-feu avec un tunnel SSH

Aujourd’hui, un tuto simple, rapide et très efficace pour créer un tunnel et passer à travers les firewalls.

Les prérequis : un serveur VPS sous Débian chez un hébergeur, ou une machine hébergée chez vous dont le port 22 est accessible depuis Internet.

Le principe est le suivant :

Notre pc (Machine 1) se trouve derrière un pare-feu d’entreprise qui restreint notre trafic Web, ainsi que l’utilisation des applications qui utilisent des ports exotiques. Ces pare-feu n’autorisent généralement que les ports suivants : 80, 443, 3128, 8080, et plus généralement, que les paquets TCP. En plus de ça, le trafic Web peut être filtré.

Nous disposons d’une machine Debian extérieure à l’entreprise sur laquelle tourne un serveur SSH (Machine 2).

Le principe est donc : on initie une connexion vers un serveur SSH en ajoutant les paramètres suivants : ouverture d’un port SOCKS en local dont tout le trafic sera encapsulé dans notre connexion SSH.

Nous allons nous servir de la Machine 2 comme point de sortie pour le trafic généré sur la Machine 1.

On commence par ouvrir une connexion SSH vers la Machine 2. Nous allons maintenant reconfigurer sshd (le daemon ssh), pour autoriser le routage du trafic à travers SSH.

Dans un terminal en root :

nano /etc/ssh/ssh_config

Puis on ajoute en fin de fichier :

AllowTcpForwarding yes

Un coup de Ctrl+X, on valide avec Y ou O.

On redémarre le serveur SSH avec un :

service ssh restart

La configuration serveur étant terminée, on passe à la configuration du client (Machine 1).

Pour une machine Windows avec Putty :

-On ouvre Putty

-On renseigne l’IP du serveur SSH

-Dans Connection>SSH, cochez Enable compression

-Dans Connection>SSH>Tunnels, on renseigne un numéro de port sur lequel on connectera les applications (ici j’ai sélectionné le port 8081), on sélectionne Dynamic, et on Clique sur Add (ce qui ajoute D8081 dans l’encart « Forwarded ports »).

-On retourne sur Session et on sauvegarde notre configuration.

-On ouvre la connexion en cliquant sur Open.

Voila, on peut exécuter un

netstat -ano

. En cherchant dans cette liste, vous devriez trouver 127.0.0.1:numérodeport (qui coincide avec le port renseigné dans Putty).

La sauvegarde du profil de connexion sous Putty permet d’appeler ce profil en mode ligne de commande, et donc de faire des scripts de connexions (saisie du mot de passe obligatoire cependant).

Pour une machine sous Debian :

ssh -D 8081 serveurssh.com

On ouvre une connexion SSH avec le paramètre de routage de port (-D) sur le port 8081 en local, et on termine par l’IP du serveur SSH sur lequel on se connecte, et donc, vers lequel on va router notre trafic.

Dernière étape :

Maintenant, ouvrez Firefox par exemple, et dans les options proxy, ajoutez 127.0.0.1 et 8081 dans la partie SOCKS et cochez Remote DNS. Voilà, tout le trafic de votre navigateur sera routé à travers la connexion SSH et sortira sur votre serveur distant.

Sous Linux, on peut utiliser proxychains pour router les applications qui ne supporte pas les sockets SOCKS nativement.

Il suffit de modifier la configuration de cette manière :

nano /etc/proxychains.conf

et d’ajouter en fin de fichier :

socks5 127.0.0.1 8081

Un coup de Ctrl+X, on valide avec Y ou O.

Maintenant, pour router une application vers notre tunnel, il suffira d’ajouter proxychains avant la commande, comme ceci :

proxychains nmap -v hostname.com

Voila c’est tout pour aujourd’hui. A bientôt.