Forum Linux.général Comment fonctionne ssh -R ?

Posté par  .
Étiquettes : aucune
0
8
fév.
2007
Bonjour,

Je m'interesse de prés à ssh ces jours-ci et j'ai lu un tuto sur la redirection de ports ssh mais il y a une chose que je ne suis pas sur d'avoir saisi.

J'ai lu que pour rendre un poste accessible derrière un firewall ou routeur NAT on pouvait utiliser la redirection de port avec ssh -R sur le poste visé.

Une fois fait, est ce que la procédure est bien celle-ci ?

1 - le poste visé ouvre un tunnel ssh permanent avec le client potentiel.
2 - lorsque le client veut contacter le poste visé il établit un tunnel ssh dans le premier tunnel ssh en visant par exemple le port 2222 ?
3 - Le poste visé decrypte et renvoi le port 2222 en provenance du client vers son port 22 pour ouvrir le second tunnel ssh encapsulé dans le premier.

Ca me parait bizarre mais je ne vois pas autrement comment le client peut contacter le poste visé en passant le firewall/NAT sans toucher au firewall.

Ma question est :

Est ce bien ainsi que ca se passe ou l'explication est elle autre ?

Merci d'avance pour m'aider à défaire mon noeud de cerveau,
  • # ???

    Posté par  . Évalué à 3.

    J'ai pas entirement compris ton explication, mais je pense dans tout les cas que c'est plus simple

    A se connecte à B par le port 22, il demande par la même occasion à B de binder le port que tu lui as demander, et tout ce que tu enverras par ce port sera envoyé au client par le tunnel puis fowarder vers le port et la machine que tu lui as indiqué

    Typiquement

    ssh -L 42:roger:4242 user@B

    ssh ouvre le port 42 en local et fait suivre tout ce que tu envois dessus vers B via le tunnel qui fera suivre vers le port 4242 de roger

    avec
    ssh -R 42:roger:4242 user@B

    le client se connecte a B et demande a B d'ouvrir le port 42, tout ce qui est envoyé sur le port est relayé vers ta machine (qui a lancé ssh) par le tunnel que tu viens de créer, qui fait suivre ensuite vers le port 4242 de roger

    En fait je me demande si j'ai été plus clair ;)
    • [^] # Re: ???

      Posté par  . Évalué à 1.

      L'idée c'est que c'est B la passerelle/ firewall.
    • [^] # Re: ???

      Posté par  . Évalué à 1.

      Merci,

      C'est tout à fait clair et j'ai passé une partie de la soirée à continuer à me renseigner...
      En espérant que je n'oublie pas d'ici quelques mois. :o(

      Alors ce que j'ai compris et ne disent pas clairement les tutos :

      C'est que pour reprendre ton second exemple, la connexion entre A et Roger n'est plus sécurisé, le tunnel n'est créé qu'entre B et A.
      Mais bon, je sais qu'il y a un moyen simple si on a besoin de créer un second tunnel.

      Pour revenir à ma première interrogation qui se posait sur le 2eme exemple ( ssh -R ), c'est donc forcemment A qui crée le tunnel SSH.

      Ce qui veut dire comme il doit attendre les données de B que le tunnel reste ouvert en permanence, on ne peut pas le lancer à la demande.
      Puisque l'objectif de cette astuce est de passer le firewall entre B et A qui ne laisse pas de connexion rentrer de B vers A.

      Ce qui amène une autre question :

      Le tunnel est ouvert en permanence mais si le pc B est eteint puis rallumé, que se passe t il ?
      Comme c'est A qui est à l'initiative de la connexion.

      Si Mr X veut se connecter de son pc B chez lui vers son pc A au bureau à travers le firewall de son patron (sur lequel il ne peut pas intervenir).
      Faut il que ce pc B reste allumé en permanence ?
      • [^] # Re: ???

        Posté par  . Évalué à 1.

        Pour revenir à ma première interrogation qui se posait sur le 2eme exemple ( ssh -R ), c'est donc forcemment A qui crée le tunnel SSH.
        Ce qui veut dire comme il doit attendre les données de B que le tunnel reste ouvert en permanence, on ne peut pas le lancer à la demande.


        Dans ce cas pourquoi ne pas lancer le tunnel depuis B, en utilisant le premier exemple ?

        Le tunnel est ouvert en permanence mais si le pc B est eteint puis rallumé, que se passe t il ?
        Comme c'est A qui est à l'initiative de la connexion.


        Le tunnel ssh tombe, il faut le relancer.

        Si Mr X veut se connecter de son pc B chez lui vers son pc A au bureau à travers le firewall de son patron (sur lequel il ne peut pas intervenir).
        Faut il que ce pc B reste allumé en permanence ?


        Il faut clairement que le pc B soit allumé entre le moment où on établit le tunnel et le moment où on l'utilise.
        Il faut aussi que le firewall laisse passer les connexions entrantes vers B sur le port 22, ce qui n'est pas toujours le cas.
  • # Quel est le profil du réseau ?

    Posté par  . Évalué à 1.

    Je n'ai pas très bien compris ton problème :

    tu as un PC "bureau" au boulot et un PC "maison" chez toi. Tu veux établir une connexion ssh de maison vers bureau. Je vois deux cas de figures :

    - bureau a une IP publique mais est derrière une passerelle/firewall qui bloque le port 22 mais pas le 2222 (par exemple). Malgré les risques de violer la politique de sécurité de l'entreprise, tu veux quand même établir ta connexion ssh. Le plus simple est de configurer le serveur ssh sur bureau pour qu'il écoute sur le port 2222.

    - bureau n'a pas d'adresse IP publique mais accède à internet via un routeur NAT. Je ne sais pas quelle est la méthode la plus simple (en dehors de configurer le routeur NAT, évidemment). Tu peux en effet essayer ce que tu dis :

    (sur bureau)$ ssh -N -f -R 2222:bureau:22 user_maison@maison

    Puis chez toi tu te connectes à bureau en ssh via le port 2222 de maison, quelque chose du genre :

    (sur maison)$ ssh -p 2222 user_bureau@localhost

    J'ai testé chez moi : ça marche à condition de rajouter la ligne
    NoHostAuthenticationForLocalhost yes
    dans le fichier /etc/ssh/ssh_config (sur maison).
  • # SSH Tunneling et sécurité.

    Posté par  . Évalué à 1.

    Bonjour,
    Je n'ai pas bien saisie exactement la manipulation que tu souhaites faire.

    Mais voici une remarque :
    - Si tu souhaites joindre (de l'extérieur) une machine d'un LAN quelconque en faisant du tunneling à partir de la gateway, et que cela fonctionne, alors tu as sérieux problème de sécurité sur ton LAN.

    Dans ce cas, je ne serai trop de conseiller de faire du port forwarding avec iptables est laisser entièrement gérer la politique de sécurité par le firewall ....

    Des trous de sécurité, il y en a assez, mieux vaut de ne pas ajouter de point d'entrée supplémentaire.

    Cordialement,
    Olivier.
    • [^] # Re: SSH Tunneling et sécurité.

      Posté par  . Évalué à 1.

      Je pense qu'il est employé et qu'il veut travailler de chez lui.

      Accessoirement dans toutes les sociétés ou j'ai travaillé, il y avait pratiquement toujours un 443 ouvert en sortie et un windows où tu es bridé mais pas suffisement pour ne pas pouvoir lancer un putty.

      Il y a surement des solutions pour empecher ça (style NuFW), mais en pratique je n'en ai jamais vu de déployée
      • [^] # Re: SSH Tunneling et sécurité.

        Posté par  . Évalué à 1.

        Merci à tous pour vos réponses.

        Je cherchais surtout à comprendre le fonctionnement de ssh.

        J'ai eu mes réponses à savoir que avec -R le tunnel est bien initié par le poste cible au boulot et que si le poste source (maison) est éteint ou ferme le tunnel et bien c'est râpé.

        Il faut donc lancer une suveillance de ce tunnel sur le poste cible.

        Autrement, le but est justement de passer à travers le firewall qui refuse toute connection de l'exterieur. Il faut donc avoir accés à la machine cible et pouvoir installer ssh. Donc la sécurité ne me semble pas si faible que ca.

        Encore merci,

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.