Lorsqu'il s'agit de sécuriser votre empreinte sur le web, vous avez peut-être entendu parler des VPN, n'est-ce pas ? Un VPN agit comme un intermédiaire entre votre ordinateur et Internet. Tout le trafic passe par le serveur VPN, masquant ainsi efficacement votre adresse IP et votre emplacement.
Cependant, le VPN n'est pas la seule forme de serveur proxy. SOCKS (Socket Secure) est un protocole réseau similaire qui permet de communiquer avec des serveurs à travers un pare-feu en acheminant le trafic réseau pour le compte d'un client. Comparé au VPN, SOCKS offre plus de flexibilité et de contrôle sur la configuration réseau. Il est utile lorsque vous ne pouvez pas installer le client VPN ou que vous ne faites pas confiance à un fournisseur de VPN.
Ce guide va vous montrer comment établir un tunnel proxy SSH SOCKS 5 et acheminer votre trafic web à travers ce tunnel.
Prérequis
Pour la démonstration, nous avons utilisé une machine locale exécutant Ubuntu desktop et une machine distante exécutant Ubuntu server. Vous devez avoir SSH configuré avant que cela ne fonctionne correctement. Comme nous utilisons un proxy SOCKS, pour tester la connexion, nous avons besoin d'une application capable de l'utiliser. Firefox en est un parfait exemple. C'est un navigateur web moderne qui prend en charge le tunnel proxy SOCKS 5.
Si vous êtes sur Windows, vous pouvez soit utiliser WSL (Windows Subsystem for Linux) pour configurer un environnement Linux local, soit utiliser PuTTY, une application open-source capable d'implémenter divers protocoles réseau comme Telnet, rlogin, etc.
Configuration du tunnel SOCKS
-
Configuration du tunnel SOCKS (macOS/Linux)
Sur l'ordinateur local, nous devons configurer une clé SSH pour garantir une connexion sécurisée. La clé SSH doit également être enregistrée sur le système distant. Ce guide sur la configuration de l'authentification par clé SSH présente le processus en détail.
La commande SSH suivante établira un tunnel SOCKS vers le serveur distant :
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> |

Décomposons la commande :
-
-i : Indique à SSH quelle clé SSH utiliser pour la connexion.
-
-D : Indique à SSH que nous voulons établir un tunnel SOCKS. Quant au port, nous utilisons le port 1024. Ce n'est pas une valeur fixe. Vous pouvez choisir n'importe quel port entre 1024 et 65536.
-
-f : Le processus SSH sera exécuté en arrière-plan.
-
-C : SSH compressera les données avant de les envoyer au serveur distant. Cela permet à la fois d'économiser la consommation de données et d'augmenter la bande passante effective.
-
-q : Exécute l'outil en mode silencieux.
-
-N : Indique à SSH qu'après l'établissement du tunnel, aucune commande ne sera envoyée.
Une fois exécuté, nous pouvons vérifier si le processus a démarré correctement. La commande suivante affichera des informations sur tous les processus SSH en cours d'exécution :
|
1 |
ps aux | grep ssh |

Maintenant, vous pouvez fermer la fenêtre du terminal en toute sécurité. Le processus SSH fonctionnera comme prévu en arrière-plan.
-
Configuration du tunnel SOCKS (Windows)
Pour les utilisateurs de Windows, l'utilisation de PuTTY est une solution plus simple. Tout d'abord, vous devez télécharger PuTTY:

Une fois installé, lancez PuTTY :

Depuis l'onglet Session dans le panneau de gauche, saisissez le Nom d'hôte (ou adresse IP) de votre serveur. Quant au Type de connexion, sélectionnez SSH. Ensuite, allez dans Connexion >> SSH >> TunnelsIci, sous le champ Destination, sélectionnez les options affichées dans la capture d'écran :

Ensuite, cliquez sur Open. Une fenêtre de terminal s'ouvrira pour se connecter au serveur distant via SSH. Connectez-vous au serveur distant :

Mise en œuvre du tunnel SOCKS
Le tunnel est maintenant configuré. Toute application prenant en charge SOCKS peut utiliser le tunnel. Pour la démonstration, Firefox est un excellent exemple.
Tout d'abord, ouvrez Firefox. Dans le coin supérieur droit, cliquez sur l'icône de menu. Allez dans Paramètres:

Ensuite, recherchez proxy. Cliquez sur Paramètres sous Configurer la façon dont Firefox se connecte à Internet:

Après cela, sélectionnez Configuration manuelle du proxy. Quant à l'Hôte SOCKS, utilisez localhost ou 127.0.0.1. Ensuite, pour le port, saisissez le port que nous avons dédié au tunnel SOCKS. N'oubliez pas de sélectionner SOCKS_v5:

Enfin, cochez l'option Proxy DNS lors de l'utilisation de SOCKS_v5. Cliquez sur OK pour continuer.
Ensuite, ouvrez un nouvel onglet et essayez d'accéder à n'importe quelle page web. Pour example, vous pouvez vérifier votre adresse IP depuis CheckMyIP.
Restauration du proxy
Lorsque vous n'avez plus besoin de la connexion proxy au tunnel SSH, vous pouvez la désactiver en toute sécurité depuis les paramètres de proxy de Firefox :

Dans la fenêtre, sélectionnez Utiliser les paramètres proxy du système et cliquez sur OK.
Fermeture du tunnel SOCKS
-
Fermeture du tunnel sur macOS/Linux
Pour fermer le tunnel, nous devons tuer manuellement le processus SSH. Nous avons besoin du PID (identifiant de processus) du processus SSH. La commande suivante affichera les PID de tous les processus SSH en cours d'exécution :
|
1 |
ps aux | grep ssh |
Notez le processus SSH qui s'exécute avec la commande de création du tunnel. Tuez le processus :
|
1 |
kill <tunnel_ssh_pid> |
Si aucune option n'est définie, la commande kill enverra un signal SIGTERM générique au processus cible. Vous pouvez en savoir plus sur la gestion des processus Linux grâce à ce tutoriel.
-
Fermeture du tunnel sous Windows
Fermer la fenêtre PuTTY devrait fermer la connexion du tunnel.
Dépannage
Voici quelques problèmes courants que vous pourriez rencontrer en essayant d'utiliser SOCKS pour acheminer le trafic.
-
Pare-feu
Si vous ne parvenez pas à établir de connexion en raison d'une restriction du pare-feu, il est probable que le pare-feu soit configuré pour bloquer la connexion au port 22. C'est le port par défaut que SSH utilise pour se connecter aux systèmes distants. Certains ports restent ouverts par défaut, par exemple le port 80 (trafic web général) et le port 443 (TLS, trafic web sécurisé).
Si le serveur SSH ne dessert pas de contenu web, nous pouvons alors utiliser l'un des ports par défaut ( 80 ou 443 ) au lieu du port 22. Il est recommandé d'utiliser le port 443 car il attend du trafic chiffré par défaut. Il chiffrera également le trafic sortant. Pour effectuer ce changement, nous devons modifier le fichier de configuration SSH. Ouvrez le fichier dans un éditeur de texte :
|
1 |
sudo nano /etc/ssh/sshd_config |
SSH peut utiliser plusieurs ports à cette fin. Faites défiler le fichier de configuration vers le bas et trouvez la section des ports :

Une fois les modifications effectuées, enregistrez le fichier et fermez l'éditeur. Redémarrez le service SSH pour appliquer la modification :
|
1 |
sudo service ssh restart |
Pour vérifier si le nouveau port fonctionne, essayez de vous connecter au serveur distant en utilisant le nouveau port :
|
1 |
ssh <remote_username>@<remote_server> -p 443 |
Si la connexion a réussi, nous pouvons utiliser le port 443 en toute sécurité pour le tunnel SSH. Voici la commande révisée pour établir le tunnel SOCKS :
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> -p 443 |
Ici, l'option -p indique à SSH d'utiliser le port 443.
Dernières réflexions
De nos jours, la confidentialité et la sécurité font partie des préoccupations majeures. Il existe de nombreuses façons de naviguer en toute sécurité lorsque vous êtes sur un réseau hostile. Dans la plupart des cas, l'utilisation d'un VPN offrira une sécurité suffisante pour votre trafic réseau. D'un autre côté, un tunnel SOCKS vous offrira la sécurité nécessaire si vous ne pouvez pas ou ne voulez pas faire confiance à un VPN. Disposer d'un tunnel SOCKS vous donne également un contrôle total sur la configuration.
Bonne informatique !
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.