Je vous propose un billet un peu particulier puisque cela ne va pas traiter de Java ou d'Eclipse mais de configuration réseau. L'idée est de décrire pas à pas la mise en place d'un tunnel ou pont SSH. L'intérêt est de pouvoir encapsuler des données d'un protocole dans un autre protocole (ici le protocole SSH) et ainsi assurer une sécurité puisque les données qui transiteront dans le tunnel SSH seront chiffrées.
Dans mon cas, je voulais savoir si je pouvais réaliser un tunnel SSH pour me connecter à un proxy HTTP le tout de manière sécurisée. L'idée avant tout est d'outrepasser les droits d'un sous réseau ayant bien entendu laisser ouvert le port 22 du protocole SSH.
Dans mon cas, je voulais savoir si je pouvais réaliser un tunnel SSH pour me connecter à un proxy HTTP le tout de manière sécurisée. L'idée avant tout est d'outrepasser les droits d'un sous réseau ayant bien entendu laisser ouvert le port 22 du protocole SSH.
La mise en place d'un tunnel SSH nécessite du côté serveur, un serveur logiciel SSH et un proxy HTTP. Du côté client, une connexion au protocole SSH via un client et un paramétrage sur le navigateur seront nécessaires.
Ma configuration réseau et pré-requis logiciels
Comme vous pouvez vous en doutez toutes les configurations qui vont suivre sont fortement dépendantes de la nature de votre réseau. Je vous propose ci-dessous ma configuration réseau sur les deux côtés.
Serveur
Serveur
Je vous propose dans cette section une description détaillée de l'installation et de la configuration des logiciels et du paramétrage réseau.
Serveur SSH
Sous Windows, je n'ai pas trouvé de serveur SSH qui n'encapsule pas le serveur SSH (OpenSSH) fournit par Cygwin. Il existe différentes distributions plus ou moins compliquées. J'utilise MobaSSH (http://mobassh.mobatek.net/) qui reste très simple en installation et en configuration.
Du côté Proxy HTTP, j'ai choisi un petit programme tout simple Privoxy disponible en téléchargement sur cette page (http://www.privoxy.org/)
Configuration du pare-feu de Windows
Pour que vos serveurs soit accessibles au niveau de votre sous réseau, il va falloir indiquer au pare-feu Windows de laisser passer les données sortant du serveur SSH (port 22) et du Proxy HTTP (port ...). Pour cela nous allons définir des règles
Pour la configuration du pare-feu de la Box (pour moi il s'agit d'une BBox Bouygues Telecom) il faut passer par l'interface du routeur qui est donc spécifique au fournisseur d'accès. Si vous êtes chez FREE, SFR ou autre, le principe reste le même. L'idée ici est de rediriger les requêtes que la Box reçoit sur un port donné vers ma machine (appartenant au sous-réseau) contenant le serveur SSH et le proxy HTTP. Bref, rien de bien sorcier, voici ci-dessous la procédure.
Client
Du côté client, normalement pas sur le même sous réseau que la partie serveur, nous avons à installer un client SSH et à configurer le navigateur Web. Il est bien évident que le port 22 du protocole SSH doit être ouvert, sinon la manipulation ne va pas être possible.
Putty
Putty est un client Telnet et SSH qui offre de très nombreux paramétrages. Il est disponible en téléchargement sur le site suivant (http://www.chiark.greenend.org.uk/~sgtatham/putty/). Je vous décris ci-dessous le paramétrage nécessaire.
Configuration du navigateur Web
Cette étape est la plus simple mais il faut faire attention à ne pas se tromper dans l'adressage du Proxy HTTP. Ici, le proxy HTTP est accessible via l'IP 127.0.0.1:8118 qui est l'entrée du tunnel.
Ma configuration réseau et pré-requis logiciels
Comme vous pouvez vous en doutez toutes les configurations qui vont suivre sont fortement dépendantes de la nature de votre réseau. Je vous propose ci-dessous ma configuration réseau sur les deux côtés.
Serveur
- Windows 7
- Une BBox Bouygues Telecom
- Privoxy (pour le proxy HTTP)
- MobaSSH (serveur SSH)
- Windows 7
- Sous réseau avec le protocole SSH (port 22) ouvert
- Firefox (navigateur Web)
- Client SSH PUTTY
Serveur
Je vous propose dans cette section une description détaillée de l'installation et de la configuration des logiciels et du paramétrage réseau.
Serveur SSH
Sous Windows, je n'ai pas trouvé de serveur SSH qui n'encapsule pas le serveur SSH (OpenSSH) fournit par Cygwin. Il existe différentes distributions plus ou moins compliquées. J'utilise MobaSSH (http://mobassh.mobatek.net/) qui reste très simple en installation et en configuration.
- Après téléchargement du ZIP, exécuter l'exécutable MobaSSH_Server_Home_1.XX.exe
- N'appuyer pas sur le bouton Install It Now avant d'avoir autorisé la création de tunnel SSH (Settings -> PermitTunnel -> yes)
- Choisir ensuite les comptes utilisateur Windows qui pourront se connecter au serveur SSH quitte à créer un compte spécifique (Users)
- Cliquer sur le bouton Install It Now et le serveur SSH s'installera comme service Windows
Du côté Proxy HTTP, j'ai choisi un petit programme tout simple Privoxy disponible en téléchargement sur cette page (http://www.privoxy.org/)
- Choisir une version stable et sous Windows (privoxy_setup_3.0.17.exe)
- Installer le programme et choisir par les options par défaut
Configuration du pare-feu de Windows
Pour que vos serveurs soit accessibles au niveau de votre sous réseau, il va falloir indiquer au pare-feu Windows de laisser passer les données sortant du serveur SSH (port 22) et du Proxy HTTP (port ...). Pour cela nous allons définir des règles
- Panneau de Configuration -> Pare-feu Windows
- Sur la colonne de gauche choisir Paramètres avancés, une interface liée aux fonctions avancées de sécurité doit s'afficher (voir capture d'écran ci-dessous)
- Ajouter une nouvelle règle pour le trafic entrant concernant le port 8118 lié au proxy (bouton droit sur Règles de trafic entrant -> Nouvelle règle ... puis choisir une règle de type Port -> TCP et saisir dans Ports locaux spécifiques la valeur 8118)
- Ajouter une nouvelle règle pour le trafic entrant concernant le port 22 lié au protocole SSH (bouton droit sur Règles de trafic entrant -> Nouvelle règle ... puis choisir une règle de type Port -> TCP et saisir dans Ports locaux spécifiques la valeur 22)
- Ajouter une nouvelle règle pour le trafic sortant concernant le port 8118 lié au proxy (bouton droit sur Règles de trafic sortant -> Nouvelle règle ... puis choisir une règle de type Port -> TCP et saisir dans Ports locaux spécifiques la valeur 8118)
- Finalement, ajouter une nouvelle règle pour le trafic sortant concernant le port 22 lié au protocole SSH (bouton droit sur Règles de trafic sortant -> Nouvelle règle ... puis choisir une règle de type Port -> TCP et saisir dans Ports locaux spécifiques la valeur 22)
- Fermer la fenêtre de configuration des fonctions avancées de sécurité
Pour la configuration du pare-feu de la Box (pour moi il s'agit d'une BBox Bouygues Telecom) il faut passer par l'interface du routeur qui est donc spécifique au fournisseur d'accès. Si vous êtes chez FREE, SFR ou autre, le principe reste le même. L'idée ici est de rediriger les requêtes que la Box reçoit sur un port donné vers ma machine (appartenant au sous-réseau) contenant le serveur SSH et le proxy HTTP. Bref, rien de bien sorcier, voici ci-dessous la procédure.
- Se connecter à l'interface d'administration du routeur de la BBox (http://192.168.1.254/)
- Sur la partie gauche, choisir le menu Configuration Avancée -> Configuration du routeur
- Choisir l'onglet NAT/PAT
- Se connecter via le compte administrateur
- Choisir la règle SSH Server - Secure Shell et modifier la de telle sorte que l'IP de la machine contenant le serveur SSH soit correcte (dans mon cas il s'agit de 192.168.1.6)
- Valider et vérifier que la règle a été ajoutée comme montrée sur la capture d'écran ci-dessous
Client
Du côté client, normalement pas sur le même sous réseau que la partie serveur, nous avons à installer un client SSH et à configurer le navigateur Web. Il est bien évident que le port 22 du protocole SSH doit être ouvert, sinon la manipulation ne va pas être possible.
Putty
Putty est un client Telnet et SSH qui offre de très nombreux paramétrages. Il est disponible en téléchargement sur le site suivant (http://www.chiark.greenend.org.uk/~sgtatham/putty/). Je vous décris ci-dessous le paramétrage nécessaire.
- Ouvrir le menu Session, vous devriez obtenir la capture d'écran ci-dessous
- Dans la zone de texte Host Name (or IP address), saisir l'IP attribuée à votre Box. Cette information est connue depuis l'accueil de l'interface administration de votre BBox (http://192.168.1.254/) au niveau de la section Internet.
- Ouvrir le menu Connection -> SSH -> Tunnels pour configurer les informations de votre futur Tunnel SSH (voir capture d'écran ci-dessous)
- Nous souhaitons indiquer ici qu'à la sortie du Tunnel SSH, les requêtes devront être redirigées vers l'IP 192.168.1.6 du port 8118. Cette adresse est l'IP local de mon serveur contenant le serveur SSH et Proxy.
- Revenir dans le menu Session puis donner un nom à cette configuration (exemple : Serveur SSH/Proxy) puis faire Save.
- Finalement, faire Open pour se connecter au serveur SSH.
- Si tout a été correctement configuré côté serveur, la connexion vers le serveur SSH doit fonctionner. Une authentification est requise vers un compte Windows contenant le serveur SSH (voir capture d'écran ci-dessous)
- La connexion SSH vous permet de vous déplacer dans l'arborescence de votre compte distant. Pour utiliser en tunnel, vous devez uniquement laisser cette connexion ouverte.
Cette étape est la plus simple mais il faut faire attention à ne pas se tromper dans l'adressage du Proxy HTTP. Ici, le proxy HTTP est accessible via l'IP 127.0.0.1:8118 qui est l'entrée du tunnel.
- Ouvrir votre navigateur préféré (ici ça sera FireFox 5)
- Depuis le menu ouvrir la boîte de dialogue des options (Outils -> Options).
- Sélectionner l'onglet Avancé et le sous onglet Réseau, puis faire apparaître les paramètres de connexion (bouton Paramètres)
- Sélectionner Configuration manuelle du proxy et saisir dans la zone Proxy HTTP la valeur 127.0.0.1 et dans la zone Port la valeur 8118 (voir capture d'écran ci-dessous)
- Faire OK
Il est possible d'aller plus loin comme par exemple la mise en place d'un VPN. Pour cela, la toile propose de nombreux tutoriels qui vous faciliteront la vie.
On dit "chiffré", pas "crypté", puisque SSH nécessite une clef :)
RépondreSupprimerhttp://fr.wikipedia.org/wiki/Chiffrement
Merci pour l'article, il est très bien.
C'est pas faux. Corrigé. Merci beaucoup
RépondreSupprimertu as un problème de typo dans ton billet avec les < et > (qui s'affichent avec des & gt; ou -& gt;)
RépondreSupprimerMerci Etienne. C'est corrigé
RépondreSupprimerSympa, cela m'a bien aidé :) Cependant, j'ai une petite question au sujet de l'IP locale du serveur SSH mise en Tunnel dans Putty. Si je comprends bien, c'est une adresse vue du serveur SSH. Dans ce cas, pourquoi ne pas simplement mettre 127.0.0.1:8118 en tant que destination, si celle-ci est vue en tant que destination vue du serveur SSH ? N'est-ce pas plus simple et générique ?
RépondreSupprimerManu
Bonne question Manu,
RépondreSupprimerA tester mais je ne suis pas trop sûr à vrai dire.
Mickael
Je viens de vérifier ça fonctionne nickel, merci.
RépondreSupprimerPar ailleurs, je vais préparer un nouveau billet qui se veut être une amélioration de celui-ci. Il semblerait en effet que ProxyCap simplifie grandement les choses (merci encore à Manu)
Mickael