Comment acheminer le trafic Web en toute sécurité sans VPN à l’aide d’un tunnel SOCKS

introduction

Parfois, vous êtes sur un réseau non sécurisé ou dont le pare-feu est trop restrictif et vous devez accéder à un site Web. Vous voulez vous assurer que personne au milieu ne surveille le trafic.

Une solution est un VPN, mais de nombreux VPN nécessitent un logiciel client spécial. sur votre machine, que vous n’avez peut-être pas le droit d’installer.

Si vous ne souhaitez sécuriser que votre navigation sur le Web, il existe une alternative simple: un tunnel proxy SOCKS 5.

Un proxy SOCKS est essentiellement un tunnel SSH dans lequel des applications spécifiques transfèrent leur trafic via le tunnel vers le serveur, puis du côté serveur, le proxy transfère le trafic vers Internet en général. Contrairement à un VPN, un proxy SOCKS doit être configuré application par application sur la machine cliente, mais peut être configuré sans aucun agent client spécialisé.

Tant que vous avez un Droplet avec un accès SSH, vous pouvez l’utiliser comme point final de proxy SOCKS. Dans ce didacticiel, nous utiliserons une Droplet Ubuntu 14.04 comme proxy et le navigateur Web Firefox comme application cliente. À la fin de ce didacticiel, vous devriez être en mesure de naviguer sur des sites Web en toute sécurité dans le tunnel.

Conditions préalables

Comme mentionné ci-dessus, la première chose nécessaire est un serveur fonctionnant sous n’importe quelle variante de Linux, comme Ubuntu 14.04, avec https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with- ssh [accès SSH].

  • Déployer un serveur (cet exemple utilise Ubuntu 14.04)

Un peu plus de configuration est nécessaire sur votre propre ordinateur local. Pour cela, vous devrez télécharger un ou deux logiciels.

  • Firefox navigateur Web (tout le monde)

  • PuTTY (utilisateurs de Windows)

Firefox vous permet de définir le proxy uniquement pour Firefox au lieu de définir un proxy pour l’ensemble du système.

PuTTY est utilisé pour configurer le tunnel proxy pour les utilisateurs Windows. Les utilisateurs de Mac OS X ou Linux ont les outils nécessaires pour configurer le tunnel pré-installé.

Étape 1 (Mac OS X / Linux) - Configuration du tunnel

Sur votre * ordinateur local *, créez une clé SSH. Si vous avez déjà une clé SSH, vous pouvez l’utiliser.

Bien que c’est une bonne pratique de donner un mot de passe à votre clé SSH, nous laisserons ce mot de passe vide pour éviter des problèmes plus tard.

Lorsque vous configurez la clé, veillez à l’ajouter aux clés autorisées pour l’utilisateur sudo sur le serveur (dans cet exemple, il s’agit de l’utilisateur * sammy *).

Ouvrez un programme de terminal sur votre ordinateur. Sous Mac OS X, il s’agit d’un terminal dans Applications> Utilitaires.

Configurez le tunnel avec cette commande:

ssh -D  -f -C -q -N @
  • Explication des arguments *

  • + -D +: Indique à SSH que nous voulons un tunnel SOCKS sur le numéro de port spécifié (vous pouvez choisir un numéro compris entre 1025 et 65536)

  • + -f +: place le processus en arrière-plan

  • + -C +: Compresse les données avant de les envoyer

  • + -q +: Utilise le mode silencieux

  • + -N +: Indique à SSH qu’aucune commande ne sera envoyée une fois le tunnel activé

Assurez-vous de remplacer + @ + par votre propre adresse IP ou nom de domaine d’utilisateur et de serveur sudo.

Une fois que vous avez entré la commande, vous serez immédiatement redirigé vers l’invite de commande sans aucun signe de succès ou d’échec. C’est normal.

Vérifiez que le tunnel est opérationnel avec cette commande:

ps aux | grep ssh

Vous devriez voir une ligne dans la sortie comme:

Sortie

sammy       0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N [email protected]

Vous pouvez quitter votre application de terminal et le tunnel restera en place. C’est parce que nous avons utilisé l’argument + -f + qui met la session SSH en arrière-plan.

  • Remarque: * Si vous souhaitez terminer le tunnel, vous devez saisir le PID via + ps + et utiliser la commande + kill +, que nous vous montrerons plus tard.

Étape 1 (Windows) - Configuration du tunnel

Ouvrez PuTTY.

Si vous ne l’avez pas encore installé, téléchargez PuTTY et enregistrez-le à votre guise. PuTTY ne nécessite pas de droits d’administrateur pour l’installation; Il suffit de télécharger le fichier «+ .exe +» et de le lancer.

Effectuez les étapes suivantes pour configurer le tunnel:

  1. Dans la section * Session *, ajoutez le * nom d’hôte (ou l’adresse IP) * de votre serveur et l’image SSH * Port * (généralement 22): https: //assets.digitalocean.com/articles/socks5/wXDz8J7. png [sessions de mastic]

  2. Sur la gauche, accédez à: * Connexion> SSH> Tunnels *

  3. Entrez un numéro de * port source * compris entre 1025 et 65536. Dans cet exemple, nous avons utilisé l’image de port: https: //assets.digitalocean.com/articles/socks5/ZLPgf4V.png [Connexion Putty> SSH> Tunnel]

  4. Sélectionnez le bouton radio * Dynamique *

  5. Cliquez sur le bouton * Ajouter *

  6. Retournez à * Session * à gauche

  7. Ajoutez un nom sous * Sessions sauvegardées * et cliquez sur le bouton * Enregistrer *.

  8. Maintenant, cliquez sur le bouton * Ouvrir * pour établir la connexion.

  9. Entrez votre nom d’utilisateur sudo et votre mot de passe serveur pour vous connecter

Vous pouvez réduire la fenêtre PuTTY maintenant, mais ne la fermez pas. Votre connexion SSH devrait être ouverte.

  • Astuce: * Vous pouvez enregistrer votre nom d’utilisateur sudo (* sammy *) et votre clé SSH pour cette même session en suivant la https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with -putty-on-digitalocean-droplets-windows-users [Instructions de clé PuTTY SSH]. Ensuite, vous ne devrez pas entrer votre nom d’utilisateur et votre mot de passe à chaque fois que vous ouvrez la connexion.

Étape 2 - Configuration de Firefox pour utiliser le tunnel

Maintenant que vous avez un tunnel SSH, il est temps de configurer Firefox pour qu’il utilise ce tunnel. N’oubliez pas que pour qu’un tunnel SOCKS 5 fonctionne, vous devez utiliser une application locale pouvant en tirer parti. Firefox fait le tour.

Cette étape est la même pour Windows, Mac OS X et Linux.

Assurez-vous que vous avez le * numéro de port * que vous avez utilisé dans votre commande SSH ou dans PuTTY noté pour cet exemple. Nous avons utilisé dans l’exemple OS X / Linux et dans l’exemple Windows jusqu’à présent, ou vous avez peut-être utilisé un port différent.

(Les étapes suivantes ont été effectuées avec Firefox version 39 mais devraient fonctionner sur d’autres versions, même si l’emplacement des options peut être différent.)

  1. Dans le coin supérieur droit, cliquez sur l’icône hamburger pour accéder au menu de Firefox: image: https: //assets.digitalocean.com/articles/socks5/bjh8Dh1.png [Préférences Firefox]

  2. Cliquez sur l’icône * Préférences * ou * Options *.

  3. Accédez à la section * Advanced *

  4. Cliquez sur l’onglet * Réseau *: https: //assets.digitalocean.com/articles/socks5/k4DKcdA.png [Préférences de Firefox]

  5. Cliquez sur le bouton * Paramètres * sous le titre * Connexion *. Une nouvelle fenêtre s’ouvrira

  6. Sélectionnez le bouton radio pour * Configuration manuelle du proxy: * image: https: //assets.digitalocean.com/articles/socks5/70cwU1N.png [Paramètres de proxy Firefox]

  7. Entrez * localhost * pour l’hôte * SOCKS *

  8. Entrez le même numéro * de port * de votre connexion SSH; dans l’image que vous pouvez voir, nous avons entré ** pour correspondre aux instructions de Windows

  9. Cliquez sur le bouton * OK * pour enregistrer et fermer votre configuration.

Maintenant, ouvrez un autre onglet dans Firefox et commencez à naviguer sur le Web! Vous devez être prêt pour une navigation sécurisée dans votre tunnel SSH.

  • Facultatif: * Pour vérifier que vous utilisez le proxy, retournez dans les paramètres * Réseau * de Firefox. Essayez d’entrer un autre numéro de port. Cliquez sur * OK * pour enregistrer les paramètres. Maintenant, si vous essayez de naviguer sur le Web, vous devriez recevoir un message d’erreur * Le serveur proxy refuse les connexions *. Cela prouve que Firefox utilise le proxy et pas seulement la connexion par défaut. Revenez au bon numéro de port et vous devriez pouvoir naviguer à nouveau.

  • Revenir à la navigation normale non sécurisée dans Firefox: *

Lorsque vous avez besoin de la confidentialité du tunnel SSH, revenez aux paramètres de proxy * Réseau * (* Préférences> Avancé> Réseau> Paramètres *) dans Firefox.

Cliquez sur le bouton radio pour * Utiliser les paramètres proxy du système * et cliquez sur * OK *. Firefox va maintenant parcourir vos paramètres de connexion habituels, qui ne sont probablement pas sécurisés.

Si vous avez fini d’utiliser le tunnel, vous devrez également le terminer, ce que nous verrons dans la section suivante.

Si vous prévoyez d’utiliser souvent le tunnel, vous pouvez le laisser ouvert pour une utilisation ultérieure, mais notez qu’il peut s’arrêter de lui-même s’il est inactif pendant trop longtemps, ou si votre ordinateur se met en veille ou s’éteint.

Étape 3 (Mac OS X / Linux) - Fermeture du tunnel

La fermeture du tunnel empêchera Firefox de naviguer sur le proxy.

Le tunnel que nous avons créé précédemment sur notre ordinateur local a été envoyé en arrière-plan. Par conséquent, la fermeture de la fenêtre de terminal utilisée pour ouvrir le tunnel n’est pas terminée.

Pour terminer le tunnel, nous devons identifier l’ID de processus (PID) à l’aide de la commande + ps +, puis le tuer à l’aide de la commande + kill +.

Recherchons tous les processus + ssh + actifs sur notre machine:

ps aux |grep ssh

Recherchez la ligne qui ressemble à la commande que vous avez entrée précédemment pour créer le tunnel. Voici quelques exemples de résultats:

Sortie

sammy       0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N [email protected]

Depuis le début de la ligne, dans l’une des deux premières colonnes, figure un numéro de 3 à 5 chiffres. C’est le PID. En haut, l’échantillon PID de est mis en évidence.

Maintenant que vous savez ce qu’est le PID, vous pouvez utiliser la commande + kill + pour couper le tunnel. Utilisez votre propre PID lorsque vous interrompez le processus.

sudo kill

Si vous souhaitez automatiser le processus de connexion, passez à l’étape 4.

Étape 3 (Windows) - Fermeture du tunnel

La fermeture du tunnel empêchera Firefox de naviguer sur le proxy.

Fermez la fenêtre PuTTY que vous avez utilisée pour créer le tunnel. C’est ça!

Sous Windows, il n’est pas facile d’automatiser le processus de connexion, mais PuTTY et Firefox peuvent enregistrer les paramètres que vous avez précédemment saisis. Il vous suffit donc de rouvrir les connexions pour utiliser à nouveau le tunnel.

Étape 4 (Mac OS X / Linux) - Création de raccourcis pour un usage répété

Pour les systèmes OS X ou Linux, nous pouvons créer un alias ou créer un script pour créer rapidement le tunnel. Voici deux manières d’automatiser le processus de tunnel.

Remarque: ces méthodes de raccourci requièrent une authentification de la clé SSH sans mot de passe / sans mot de passe auprès du serveur!

Script BASH cliquable

Si vous souhaitez qu’une icône double-cliqué et que le tunnel démarre, nous pouvons créer un script BASH simple pour effectuer le travail.

Nous faisons en sorte que le script configure le tunnel et lance Firefox, bien que vous deviez toujours ajouter les paramètres de proxy manuellement dans Firefox pour la première fois.

  • Sous OS X *, le binaire Firefox que nous pouvons lancer à partir de la ligne de commande se trouve dans + Firefox.app +. En supposant que l’application se trouve dans le dossier Applications, vous trouverez le binaire dans + / Applications / Firefox.app / Contents / MacOS / firefox +.

  • Sur les systèmes Linux *, si vous avez installé Firefox via un dépôt ou qu’il est pré-installé, son emplacement doit être + / usr / bin / firefox +. Vous pouvez toujours utiliser la commande + which firefox + pour savoir où il se trouve sur votre système.

Dans le script ci-dessous, remplacez le chemin d’accès à Firefox par celui qui convient à votre système.

En utilisant un éditeur de texte comme + nano +, créez un nouveau fichier:

nano ~/socks5.sh

Ajoutez les lignes suivantes:

chaussettes5.sh

#!/bin/bash
ssh -D  -f -C -q -N
&
  • Remplacez ++ par le numéro de port souhaité (il devrait correspondre à ce que vous avez mis dans Firefox)

  • Remplacez ++ par votre utilisateur SSH et votre nom d’hôte ou votre IP

  • Remplacer ++ par le chemin du fichier binaire de Firefox

Enregistrez votre script. Pour nano, tapez + CONTROL + o +, puis pour quitter, tapez + CONTROL + x +.

Faites en sorte que le script soit exécutable de manière à ce qu’il soit exécuté lorsque vous double-cliquez dessus. A partir de la ligne de commande, entrez cette commande pour ajouter des autorisations d’exécution, à l’aide de votre propre chemin de script:

chmod +x

Sous OS X, vous devrez peut-être effectuer une étape supplémentaire pour indiquer à Mac OS X qu’un fichier + .sh + doit être exécuté comme un programme et ne doit pas être ouvert dans un éditeur.

Pour ce faire, faites un clic droit sur votre fichier + socks5.sh + et sélectionnez * Obtenir des informations *.

Recherchez la section * Ouvrir avec: * et si le triangle d’affichage n’est pas orienté vers le bas, cliquez dessus pour afficher le menu déroulant. Xcode peut être défini comme application par défaut. image: https: //assets.digitalocean.com/articles/socks5/8TJ7dvX.png [Obtenir des informations]

Changez-le en * Terminal.app *. Si Terminal.app ne figure pas dans la liste, choisissez * Autre *, puis accédez à * Applications> Utilitaires> Terminal.app *.

Pour ouvrir votre proxy SOCKS maintenant, double-cliquez simplement sur le fichier + socks.sh +.

(Après son exécution, le script ne demandera pas de mot de passe. Par conséquent, il échouera silencieusement si vous avez précédemment configuré votre clé SSH pour exiger une phrase secrète.)

Le script ouvrira une fenêtre de terminal, démarrera la connexion SSH et lancera Firefox. N’hésitez pas à fermer la fenêtre du terminal. Tant que vous avez conservé les paramètres de proxy dans Firefox, vous pouvez commencer à naviguer sur votre connexion sécurisée.

Alias ​​de ligne de commande

Si vous vous trouvez fréquemment sur la ligne de commande et souhaitez ouvrir le tunnel, vous pouvez créer un alias BASH pour effectuer le travail à votre place.

La partie la plus difficile de créer un alias consiste à déterminer où enregistrer la commande d’alias.

Différentes distributions Linux et versions OS X sauvegardent des alias à différents endroits. Le mieux est de rechercher l’un des fichiers suivants et de rechercher + alias + pour voir où les autres alias sont actuellement enregistrés. Les possibilités incluent

  • + ~ / .bashrc +

  • + ~ / .bash_aliases

  • + ~ / .bash_profile +

  • + ~ / .profile +

Une fois que vous avez localisé le bon fichier, ajoutez cet alias sous celui que vous avez déjà ou juste à la fin du fichier.

bashrc
alias socks5='ssh -D  -f -C -q -N  &&  &'
  • Remplacez ++ par le numéro de port souhaité (il devrait correspondre à ce que vous avez mis dans Firefox)

  • Remplacez ++ par votre utilisateur SSH et votre nom d’hôte ou votre IP

  • Remplacer ++ par le chemin du fichier binaire de Firefox

Vos alias ne sont chargés que lorsque vous démarrez un nouveau shell. Fermez donc votre session de terminal et démarrez-en un nouveau.

Maintenant, quand vous tapez:

socks5

Cet alias configure votre tunnel, puis lance Firefox pour vous et vous renvoie à l’invite de commande.

Assurez-vous que Firefox est toujours configuré pour utiliser le proxy. Vous pouvez maintenant naviguer en toute sécurité!

Étape 5 (facultatif) - Dépannage: passer au travers des pare-feu

Si votre connexion fonctionne, vous pouvez y aller et arrêter de lire.

Toutefois, si vous constatez que vous ne pouvez pas établir de connexion SSH en raison d’un pare-feu restrictif, il est probable que le port 22, nécessaire à la création du tunnel, soit bloqué.

Si vous pouvez contrôler les paramètres SSH du serveur proxy (avec l’accès superutilisateur à un droplet DigitalOcean, vous pourrez le faire), vous pouvez configurer SSH pour qu’il écoute sur un port autre que 22.

Quel port pouvez-vous utiliser et qui n’est pas bloqué?

Mis à part le plan douteux d’exécuter des analyses de port avec un outil tel que ShieldsUP! (Discutable car votre réseau local peut voir cela comme une attaque), il est préférable d’essayer les ports qui sont généralement laissés. ouvert.

Les ports souvent ouverts comprennent * 80 * (trafic Web général) et * 443 * (trafic Web SSL).

Si votre serveur SSH ne diffuse pas de contenu Web, nous pouvons demander à SSH d’utiliser l’un de ces ports Web pour communiquer via le port 22 au lieu du port par défaut. * 443 * est le meilleur choix car il est prévu que le trafic soit crypté sur ce port et que notre trafic SSH sera crypté.

Depuis un emplacement sans pare-feu, entrez SSH dans le droplet DigitalOcean que vous utilisez pour le proxy. (Ou, utilisez la https://www.digitalocean.com/community/tutorials/console intégrée du panneau de contrôle] à partir du panneau de commande, mais vous peut ne pas vouloir le faire si vous craignez que votre trafic Web ne soit surveillé.)

Modifiez les paramètres SSH du serveur:

sudo nano /etc/ssh/sshd_config

Recherchez la ligne + Port 22 +.

Nous pouvons soit remplacer entièrement «+ 22 +» (ce qui est quand même une bonne technique de durcissement SSH), soit ajouter un deuxième port sur lequel SSH pourra écouter.

SSH écoute sur plusieurs ports. Nous allons donc ajouter une nouvelle ligne sous + Port 22 + qui lit + Port 443 +. Voici un exemple:

sshd_config

. . .

Port 22


. . .

Redémarrez SSH pour recharger la configuration SSH que vous venez de modifier.

Selon votre distribution, le nom du démon de serveur SSH peut être différent, mais il s’agit probablement de «+ ssh » ou « sshd +». Si l’un ne fonctionne pas, essayez l’autre.

sudo service ssh restart

Pour vérifier que votre nouveau port SSH fonctionne, ouvrez un nouveau shell (ne fermez pas celui qui a été ouvert, au cas où vous vous seriez verrouillé par inadvertance) et SSH pour utiliser le nouveau port.

ssh  -p 443

Si vous réussissez, vous pouvez maintenant vous déconnecter des deux shells et ouvrir votre tunnel SSH à l’aide du nouveau port.

ssh -D  -f -C -q -N  -p 443

C’est ça! Les paramètres de Firefox seront exactement les mêmes car ils ne dépendent pas du port SSH, mais seulement du port tunnel (ci-dessus).

Conclusion

Ouvrez un tunnel SOCKS 5 pour naviguer dans un tunnel sécurisé SSH lorsque vous avez besoin d’un moyen léger d’accéder au Web en toute sécurité.