Provya

Sécurité et téléphonie

Articles & Tutoriaux  -  Liens & Actualités

Passer outre un filtrage réseau (firewall/proxy) grâce à un tunnel SSH

icon 24/09/2014

Il arrive parfois que l'on se connecte à Internet derrière une connexion non-sûre (wifi public), filtrant le contenu (proxy) ou très restrictive et n'autorisant guère plus que les ports 80 (http) et le 443 (https).

Dans ces cas-là, une solution s'impose pour pouvoir surfer en toute liberté : le tunnel SSH !

Nous allons voir comment monter un tunnel SSH vers un serveur accessible par Internet. Ce serveur nous servira de porte de sortie vers un Internet non-bridé.


Principe de fonctionnement
Le principe de fonctionnement est le suivant :
Schéma tunnel VPN


Nous ouvrons depuis notre ordinateur un tunnel SSH vers un serveur de confiance. Puis, nous redirigeons nos flux réseau vers ce tunnel SSH qui nous servira de passerelle de sortie.
Afin d'être le plus efficace possible, nous utiliserons un serveur disposant d'un port SSH en écoute sur le port 443.


Mettre en écoute son serveur SSH sur le port 443
Par défaut, un serveur SSH écoute sur le port TCP 22. Ce qui peut poser problème si l'on se trouve derrière une connexion Internet n'autorisant pas le trafic sur ce port.
Le port TCP 443 (HTTPS) étant très rarement filtré, nous allons faire écouter notre serveur SSH sur ce port.

Pour cela, nous modifions le fichier de configuration de notre serveur OpenSSH (pour Debian/Ubuntu) :

myserver# vim /etc/ssh/sshd_config

Nous recherchons les lignes suivantes :

# What ports, IPs and protocols we listen for
Port 22

Et nous y ajoutons la ligne indiquant à OpenSSH d'être en écoute sur le port 443 :

Port 443

Ce qui nous donne, une fois la modification saisie, les trois lignes suivantes :

# What ports, IPs and protocols we listen for
Port 22
Port 443

Enfin, nous effectuons un rechargement de la configuration du serveur SSH :

myserver# /etc/init.d/ssh reload

/!\ Attention /!\ : si nous avons également un serveur Apache qui tourne sur le même serveur, nous devons d'abord nous assurer qu'il n'est pas déjà en écoute sur le port 443.

D'une façon générale, pour vérifier simplement si un port TCP est en écoute sur un serveur, un petit coup de telnet suffit :

telnet mon-serveur-cible mon-port-cible

Ce qui, dans notre cas, donne :

telnet myserver.mydomain.tld 443

Si notre serveur est en écoute, nous obtiendrons un message du type :

Trying myserver.mydomain.tld...
Connected to myserver.mydomain.tld.
Escape character is '^]'.

Si notre serveur n'est pas en écoute, nous obtiendrons alors un message du type :

Trying myserver.mydomain.tld...
telnet: Unable to connect to remote host: Connection refused

À ce stade, nous disposons d'un serveur SSH en écoute sur le port TCP 443. Il ne nous reste plus qu'à monter notre tunnel !


Monter le tunnel SSH - Solution Windows
Nous commençons par télécharger Putty.

Nous lançons le logiciel, puis, dans l'onglet session, nous renseignons les champs "Host name" et "Port" correspondant à notre serveur SSH :



Ensuite, nous nous rendons dans l'onglet SSH > Connection > Tunnels.
Dans le champ "Source port", nous saisissons 1234, et nous choisissons les options "Dynamic" et "Auto", puis nous cliquons sur le bouton "Add" :



Il nous reste à cliquer sur "Open", ce qui lance une connexion classique sur notre serveur distant.

Si vous êtes derrière un proxy
Si nous nous trouvons derrière un proxy (en entreprise, par exemple), il nous faut renseigner les informations du proxy au niveau des paramètres de Putty. Ça se passe dans Connection > Proxy.

Il reste à choisir le type de proxy (généralement HTTP), renseigner l'URL du proxy et le port d'écoute (souvent le 8080).

Si un username & password sont nécessaires pour l'accès au proxy, nous renseignons ces éléments sur cette même page :



Notre tunnel SSH est prêt. Il nous reste à rediriger nos flux vers ce tunnel.


Monter le tunnel SSH - Solution Linux
Sous GNU/Linux, la mise en place du tunnel se résume en une seule ligne de commande :

ssh -D port-local nomutilisateur@nomhôte -p port-distant

Soit, par exemple :
ssh -D 1234 root@myserver.mydomain.tld -p 443

Notre tunnel SSH est prêt.
Et pour éviter les timeout, nous pouvons ajouter une option de keep alive (option "ServerAliveInterval" avec sa valeur à préciser en seconde) :
ssh -o ServerAliveInterval=2 -D 1234 root@myserver.mydomain.tld -p 443

Il nous reste à rediriger nos flux vers ce tunnel.


Rediriger ses flux réseaux à travers le tunnel VPN
Notre tunnel SSH est monté. Nous souhaitons dorénavant l'utiliser pour rediriger nos flux à travers ce tunnel.
Pour cela, nous utiliserons ce tunnel SSH comme un proxy. C'est d'ailleurs la raison pour laquelle nous avons configuré un port d'écoute local (le port 1234).

Ainsi, pour utiliser ce proxy, nous devons configurer nos logiciels avec les informations suivantes :

- adresse du serveur proxy : localhost (ou 127.0.0.1)
- port du serveur proxy : 1234

Exemple pour Firefox :

Se rendre dans Édition > Préférences > Avancé > Réseau (ou Outils > Options > Avancé > Réseau)
Cliquer sur le bouton "Paramètres...", puis choisir "Configuration manuelle du proxy" et renseigner les paramètres comme suit :
Type : SOCKS5
URL : 127.0.0.1
Port : 1234



Voilà !


Vous avez aimé cet article ? Vous cherchez un support professionnel ? Alors contactez-nous.

Nouveau : découvrez nos firewall Gbps full-SSD pour pfSense 2.4+

       

store.provya.fr

icon Tags de l'article :

Aucun commentaire

icon Flux RSS des commentaires de cet article