Raven - Blog
16. Juin 2022

Proxy SOCKS via SSH

Posté le 16. Juin 2022  •  4 minutes  • 847 mots  • Autres langues:  English

Dans cet article, je vais vous présenter le concept de proxy et ses usages. Puis je vous montrerai une méthode simple pour mettre en place un Proxy SOCKS au travers d’un tunnel SSH. Cet article n’a pas vocation à anonymiser une connexion internet. L’objectif ici est d’accéder à un autre réseau pour contourner les limites d’un pare-feu ou bien accéder à des services, interfaces web… disponibles sur cet autre réseau.

Qu’est-ce qu’un proxy ?

Proxy signifie en français mandataire, donc c’est un serveur (autrement dit une autre machine) auquel vous allez envoyer des données et auquel vous donnez “mandat” pour acheminer ces données.

Ce qui signifie que vous devez avoir une confiance absolue dans le serveur proxy que vous utilisez.

Dans le cadre d’un proxy filtrant d’entreprise ou d’école par exemple, toutes vos données de navigation peuvent être lues, sachez-le. Si vous souhaitez vous servir d’un proxy “anonymisant” public/ouvert (ne le faites jamais…) c’est la même chose.

L’utilité d’un proxy

Il y a beaucoup d’usages à un proxy mais je vais m’arrêter à 4 usages que j’estime être les principaux :

Proxy SOCKS via un serveur SSH

Ceci étant dit, rentrons un peu dans la technique et revenons sur ce qui nous intéresse aujourd’hui : la mise en œuvre d’un proxy SOCKS au travers d’un tunnel SSH !

À l’instar de la création d’un tunnel SSH qui se fait avec la simple option -L de SSH, le démarrage d’un proxy SOCKS SSH nécessite juste d’utiliser l’option -D. Cette dernière active la fonctionnalité de “transfert dynamique” de SSH qui supporte les protocoles SOCKS4 et SOCKS5.

Avec cette option -D et un paramétrage de votre navigateur (voir ci-dessous), votre connexion SSH sera alors un vrai proxy SOCKS ! Il permettra à votre navigateur Internet de dialoguer au travers d’un tunnel SSH chiffré avec la carte réseau du serveur SSH distant comme si c’était la sienne.

Cela signifie que l’intégralité des ressources WEB accessibles au serveur distant le seront désormais pour votre navigateur. Comme si vous êtiez présent sur le réseau. Et votre identité pour les sites visités sera celle du serveur distant également (faites le test en visitant monip.io après configuration !).

Allez, vous ne tenez plus et le CTRL+C vous démange alors voici un exemple simple de commande à lancer :

ssh user@REMOTE_HOST -D 8080

Ensuite, dans votre navigateur, rendez-vous dans les paramètres réseau afin d’activer le serveur SOCKS en renseignant le port sélectionné. Exemple ici pour Mozilla Firefox :

Configuration Firefox Proxy SOCKS

Le tour est joué ! Accédez désormais à n’importe quelle interface WEB présente sur le LAN du serveur distant via votre navigateur.

Bonus

Vous vous souvenez tous·tes de ce bon vieux modèle OSI, pas vrai ? Pour rappel, le voici :

Modèle OSI

Un proxy est applicatif, il agit donc au niveau de la couche 7 applicative. Les protocoles VPN par exemple agissent généralement beaucoup plus bas, sur la couche 3 Réseau (voire 2). Inutile donc de chercher la trace d’un proxy par des commandes réseau telles que traceroute, vous ne le verrez pas.

Du coup pour configurer un proxy ou vérifier qu’il y en a un en place sur la machine que vous utilisez, cela se fait :

Aller plus loin …

Je vous recommande vivement de compléter cette lecture par le visionnage de la vidéo de l’excellent Yves Rougy et que j’ai découverte en réalisant mon article. Vous la trouverez ici !

Il vous montre également comment mettre en œuvre un proxy SOCKS mais il aborde surtout le sujet du tunnel SSH si ça vous intéresse et il explique même parfaitement l’option -R, pas simple à comprendre. Bref, foncez !

Follow me

Subscribe to my RSS feed !