Les guerres d'un Responsable Informatique

Vous êtes passionnés comme moi de machines basse-consommation, ARM, Atom : rendez visite à mon partenaire !

VPN avec tunnel SSH

mardi 02 novembre 2010 à 07:30 | Sécu

Les utilisateurs de OpenSSH, ont très souvent recours à SSH uniquement pour réaliser des connexions vers les serveurs, sans savoir qu'il peut être utilisé pour réaliser un VPN, en établissant un tunnel sécurisé ssh vers un serveur, puis en rebondissant vers les serveurs internes, du réseau.

Prenons un exemple simple de schéma réseau : vous êtes à l'extérieur de la société et souhaitez, atteindre 4 machines :

  • intranet sur le port http 80
  • web-metier sur le port http 80
  • pop3 sur le port pop3 110
  • pc1 sur le port RDP (Remote Desktop) et accès aux répertoires partagés
Astuce : Le grand avantage du script que je propose, est d'utiliser complètement les adresses ip loopback 127.0.0.0/8, et pas juste l'adresse 127.0.0.1. On peut ainsi, utiliser plusieurs fois le même port (ceux qui ont déjà creusé la question comprendront ce que je veux dire)

tunnel ssh

Avec Windows, en utilisant PuTTY vous créez le script suivant qui crée le tunnel SSH :

set path=%path%;"C:\Program Files\PuTTY" echo 127.0.0.1 localhost > C:\WINDOWS\system32\drivers\etc\hosts echo 127.0.0.2 intranet >> C:\WINDOWS\system32\drivers\etc\hosts echo 127.0.0.3 web-metier >> C:\WINDOWS\system32\drivers\etc\hosts echo 127.0.0.4 pop3 >> C:\WINDOWS\system32\drivers\etc\hosts echo 127.0.0.5 pc1 >> C:\WINDOWS\system32\drivers\etc\hosts copy C:\WINDOWS\system32\drivers\etc\lmhosts.sam C:\WINDOWS\system32\drivers\etc\lmhosts echo 127.0.0.5 pc1 >> C:\WINDOWS\system32\drivers\etc\lmhosts net stop Browser net stop lanmanserver rem pour écrire une ligne de commande sur plusieurs lignes mettre ^ en fin de chaque ligne rem to write multi-lines DOS command use ^ plink -C ^ -L 127.0.0.2:80:intranet:80 ^ -L 127.0.0.3:80:web-metier:80 ^ -L 127.0.0.4:110:pop3:110 ^ -L 127.0.0.5:3390:pc1:3389 ^ -L 127.0.0.5:137:pc1:137 ^ -L 127.0.0.5:138:pc1:138 ^ -L 127.0.0.5:139:pc1:139 ^ %username%@[nom ou ip du serveur ssh] net start lanmanserver net stop Browser echo 127.0.0.1 localhost > C:\WINDOWS\system32\drivers\etc\hosts del C:\WINDOWS\system32\drivers\etc\lmhosts

Démarrez le script, identifiez-vous, laissez la fenêtre DOS "ouverte", et hop vous avez accès aux ressources désirées !

Astuce : vous remarquerez le signe ^ en fin de ligne, il permet d'écrire une commande DOS sur plusieurs lignes.

Avec Linux, de la même façon, vous pouvez créer un alias dans le .bashrc :

alias VPN=' \ sudo cp hostout.conf /etc/hosts; \ sudo ssh \ -L 80:intranet:110 \ -L 80:web-metier:80 \ -L 110:pop3:110 \ -L 3389:pc1:3389 \ -L 137:pc1:137 \ -L 138:pc1:138 \ -L 139:pc1:139 \ user@[nom ou ip du serveur ssh]; \ sudo cp hostin.conf /etc/hosts;'

hostout.conf et hostin.conf contiennent les noms de machines et les ip de mappage en 127.0.0.x.

A propos de Vincent RABAH

Directeur des systemes d'information

Je suis DSI depuis 10 ans. Spécialiste en systèmes d'information et réseaux.
Expert en management, GreenIT et virtualisation de serveurs. Vous pouvez consulter l'ensemble de mon parcours.

I do speak English even if my blog is written in French ... Feel free to leave comments, I'll answer you !


Partagez cet article :



Fil des commentaires de cet article

6 commentaire(s) Commentaires »

  1. Merci pour ce script.
    En tout cas vraie ou faut VPN, ça dépanne un admin quand il souhaite rentrer sur le réseaux de l'entreprise pour dépanner ou plus.... La simplicité est toujours parmis les meilleurs solutions.

  2. Bonjour,

    Point Important avec cette manip:
    Seulement les ports TCP fonctionnent.

    Je viens de passer un petit moment à tester afin de faire un tunnel pour du snmp mais c'est de l'UDP...

    Sinon très intéressant ce post, je n'avait jamais pensé à jouer avec les fichiers hosts!

    Loïc

  3. Bonjour Vince, j'ai regardé avec intérêt, cette techno que que je connaissais pas ... Je n'ai pas tout compris :(

  4. bonjour,

    Le plus souvent, l'utilisation de tunnel SSH permet l'accès à des ressources qui normalement ne le sont pas en effet, quoi de plus simple que de monter un tunnel SSH sur le port 443 et de bypasser la plupart des firewall ... que celui qui ne l'a jamais fait me jette la première pierre.
    De nouvelles technos de Firewall permettent de s’affranchir de cela: voir Palo Alto networks.

    A bientot

  5. Bonjour Renaud,
    Pourquoi faire un tunnel ssh ? Juste parce que les admins Linux ont de base opensshd installé sur leurs serveurs. Donc, naturellement, ils vont vouloir faire perdurer leur outils de prédilection ;)
    Bien entendu, ça n'aura jamais la souplesse d'un VRAI VPN !
    Cordialement,
    Vincent

  6. Salut,

    Quel intérêt d'employer le portforwarding (plus proche du Socksproxy que du VPN) à l'utilisation d'un VPN réel ? Utilisant peut être (mais fortement déconseillé) toujours SSH ?

    En tout cas merci pour le coté scripting qui facilite toujours la vie pour dépanner :)

    Renaud

Laisser un Commentaire

Quelle est la deuxième lettre du mot wudaoi ? :