> DIO/ Système et réseau/ Tunnels SSH

Le tunnel SSH vous permet d'accéder à des ressources intérieur de l'Observatoire depuis le réseau extérieur.

Ouvrir des tunnels sous Windows avec PuTTY

Dans ce paragraphe, nous allons voir comment faire les mêmes opérations sous Windows avec l'application PuTTY. Lancez l'application en cliquant sur l'icône de celui-ci ; vous aurez la première fenêtre qui s'ouvre :

copie d'écran putty

dans le champ Host name il faut entrer le nom du serveur par lequel vous allez faire le tunnel. Dans le cas qui nous intéresse, il s'agit de styx.obspm.fr comme indiqué sur l'image. Vous pouvez si vous le désirez sauvegarder cette configuration, mais il est préfèrable de faire d'abord les tunnels.

Descendez un peu l'«ascenseur» (point 3), pour afficher le menu Tunnel. Vous obtenez alors

copie d'écran putty

Vous pouvez maintenant construire les tunnels de la façon suivante ::

  • sélectionner le menu pour les tunnels ;

  • mettre le numéro de port (ici 3128) ;

  • choisir la destination avec en fin de nom le numéro de port du service, par exemple ici on met proxy.obspm.fr:3128, le :3128 indique vers quel port est redirigé la connexion (pensez au bout du tunnel) ;

  • cliquer sur le bouton Add.

vous obtiendrez :

copie d'écran putty

Si vous en avez besoin, c'est-à-dire si vous voulez faire un tunnel pour faire du mail, vous pouvez rajouter un tunnel pour les protocoles smtp et imap

copie d'écran putty

copie d'écran putty

Si vous voulez faire des transferts de fichiers avec une machine interne du réseau de l'Observatoire, par exemple tycho.obspm.fr, la solution la plus simple est de monter un tunnel ssh vers cette machine. Pour cela vous faites comme précédemment, mais avec :

copie d'écran putty

Naturellement si vous voulez faire du transfert de fichiers vers une autre machine, il vous faut changer le nom du host (voir ensuite le paragraphe ci-dessous pour l'utilisation d'un outil de transfert de fichiers)

. Une fois ces opérations effectuées, avec autant de tunnels que vous voulez, il faut sauvegarder la configuration pour que la prochaine fois vous n'ayez pas à refaire la configuration, pour cela

copie d'écran putty

  • Remontez en haut du menu pour revenir sur session ;

  • Dans la case Save session tapez un nom mnémotechnique ;

  • Cliquez sur le bouton save.

Vous avez ainsi sauvegardé la configuration que vous avez effectuée. La prochaine fois, lorsque vous voudrez vous connecter, il vous suffira de cliquer deux fois sur le nom

copie d'écran putty

pour que la connexion ainsi que les tunnels se fassent.

Comme pour la mise en oeuvre dans le monde Unix, mais cela dépend de comment est installé et est utilisé votre version de Windows, il arrive que Windows refuse d'ouvrir des ports inférieurs à 1024. Dans ce cas, prenez des ports supérieurs à 1024. Une astuce est de rajouter 1000 au numéro de port habituel du service.

Comment mettre en place des tunnels sous Unix/MacOS X

Sur toutes les versions de Linux/Unix/Macos X, vous avez le client ssh installé avec le système. Nous allons détailler dans ce paragraphe une méthode pour faire des tunnels ssh.

Lancez tout d'abord un terminal (pour les Mac, l'application Terminal se trouve dans le dossier Applications/Utilitaires et l'icône ressemble à un petit écran avec des caractères). Une fois cette opération effectuée, l'établissement d'un tunnel (commençons par le proxy Web) se fait en tapant la ligne

ssh -N -f -L3128:proxy.obspm.fr:3128 nom_login@styx.obspm.fr 

ce qui signifie en langage courant : établir un tunnel (la flèche verte dans le schéma) depuis mon poste vers la machine styx.obspm.fr en ouvrant le port 3128 sur mon poste et de telle sorte que tout ce qui entre dans ce port soit redirigé via la machine styx.obspm.fr vers le port 3128 de la machine proxy.obspm.fr.

Faisons maintenant la même chose pour le mail

ssh -N -f -L1025:smtp-p.obspm.fr:25 nom_login@styx.obspm.fr 

Une fois ces opérations effectuées vous aurez établi vos deux tunnels.

Comme vous l'avez noté, nous ne prenons pas le même port local pour le smtp contrairement à ce que nous avions fait pour le proxy. La raison est que les ports dont le numéro est inférieur à 1024 sont des ports réservés au système. Seul un compte utilisateur avec les droits d'administrateur sur le poste de travail a le droit d'ouvrir un service sur ces ports. Il est donc beaucoup plus simple de faire les tunnels sur des ports supérieurs à 1024. Un moyen simple est par exemple de rajouter 1000 au numéro de port (25 devient 1025) ou dans le cas de deux chiffres pour le port initial, de doubler ces deux chiffres (22 devient 2222). Mais le choix de ce numéro de port local est à votre convenance.

Il est possible de faire les deux (ou plus si vous voulez) tunnels en une seule commande, pour cela il suffit de faire

ssh -N -f -L1025:smtp-p.obspm.fr:25 -L3128:proxy.obspm.fr:3128
nom_login@styx.obspm.fr 

pour créer deux tunnels. Vous pouvez aussi configurer votre ssh en rajoutant (ou en créant) dans le fichier $HOME/.ssh/config quelque chose comme

Host styx
        HostName styx.obspm.fr
        LocalForward 3128 proxy.obspm.fr:3128
        LocalForward 1025 smtp-p.obspm.fr:25

de cette manière, vous avez juste besoin de faire ssh styx

Configuration des applications de messagerie et de navigation Web

Le principe général est que l'application que l'on va utiliser sur son poste client va devoir être configurée pour se connecter sur le serveur 127.0.0.1

Son poste de travail, c'est-à-dire son propre serveur 127.0.0.1 est appelé aussi localhost, mais il est plus fiable (surtout sous Windows) d'utiliser partout la dénomination 127.0.0.1 Ainsi, pour accéder à votre messagerie, il suffit de lancer votre application usuelle (Thunderbird, Mail, etc) et de lui dire que :

  • le "SMTP server" est la machine 127.0.0.1 (au lieu de smtp-p.obspm.fr) avec comme numéro de port le 1025 (ou un autre numéro si vous avez fait un choix différent pour les numéros).

Vous pouvez aussi configurer le proxy Web.

Si dans la constitution du tunnel, vous avez choisi (par exemple) d'utiliser le port 1025 pour le smtp, il ne faut pas oublier de l'indiquer à votre agent de mail. De même que pour les autres services, il faut donner le numéro de port que vous avez choisi pour l'entrée du tunnel.

Les outils modernes de messagerie comme Thunderbird permettent tous d'utiliser également les versions sécurisées des protocoles POP, IMAP et SMTP, avec la couche de chiffrement SSL. Aussi il est sans doute plus commode de nos jours d'utiliser, au lieu des tunnels SSH, les versions POPS ou IMAPS ainsi que le SMTP sécurisé (SMTP sur TLS), comme expliqué sur cette page.

Le transfert de fichiers via SFTP

Dans une utilisation normale, c'est-à-dire lorsqu'on ne transfère pas des centaines de gigaoctets, le plus simple est d'utiliser sftp qui se comporte comme FTP, mais qui fonctionne au-dessus de ssh

Windows

Il faut tout d'abord configurer (voir paragraphe ci-dessus) votre PuTTY avec le montage d'un tunnel vers la machine sur laquelle vous voulez faire des transferts de fichiers. On prendra comme exemple tycho.obspm.fr, donc vous devez faire quelque chose comme

copie d'écran putty

Lancer maintenant votre connexion ssh via PuTTY. Il est primordial pour la suite de ne pas fermer cette connexion durant toute la procédure de transfert de fichiers.

Téléchargez l'application Filezilla et installez-le. Lancer l'application :

copie d'écran filezilla

et entrer les informations

  • Hôte : sftp://127.0.0.1 : il est important de bien respecter la syntaxe

  • Votre login

  • Votre mot de passe

  • Le numéro du port : 2222, si vous avez fait les mêmes choix que ci-dessus

Une fois les informations entrées, appuyer sur la touche Enter de votre clavier, vous allez avoir encore un message d'alerte sur les clefs

copie d'écran filezilla

Indiquez que vous faites confiances en cliquant le bouton ad hoc, puis sur le bouton OK.

Vous êtes maintenant connecté sur le serveur distant

copie d'écran filezilla

Il vous suffit maintenant de faire les transferts de fichiers en mode «glisser/déposer».

Unix/Linux

La commande est intégrée dans les systèmes, et elle s'appelle sftp. Si vous voulez atteindre une machine interne à l'Observatoire, par exemple tycho.obspm.fr nous vous recommandons de faire une configuration chez vous sur votre poste personnel de la manière suivante

Éditer le fichier ~/.ssh/config pour mettre

ForwardX11 yes
ForwardX11Trusted yes
ForwardAgent yes
Host styx
        HostName styx.obspm.fr
    User VOTRE_LOGIN
    LocalForward 2222 tycho.obspm.fr:22
Host tycho
    HostName 127.0.0.1
    Port 2222
    User VOTRE_LOGIN

la ligne User VOTRE_LOGIN n'est utile que si votre login local est différent de votre login sur les machines de la DIO

Une fois cela fait, lancer dans un premier terminal une connexion sur styx.obspm.fr par la commande ssh styx et ensuite dans un autre terminal vous pourrez faire ssh tycho ou sftp tycho

Il faut faire attention que dans la configuration ci-dessus il est primordial de ne pas utiliser styx.obspm.fr dans la commande ssh, mais bien styx

Accès par RDP à un serveur Windows

Pour les personnes qui ont besoin d'un accès sur les serveurs Windows depuis chez eux, typiquement pour l'accès à hardy & laurel ou l'utilisation de SIFAC, il est possible d'utiliser depuis toutes les plateformes (Linux/FreeBSD, MacOS X, Windows (outil Connexion de bureau à distance)) un client RDP. Nous renvoyons aux différentes documentations liées à chaque système pour l'installation du client RDP.

Il faut ensuite installer un tunnel comme décrit ci-dessus avec le numéro de port local 13389 et la cible tserver2.obspm.fr:3389. Typiquement sous Linux, la commande est

ssh -N -f -L13389:tserver2.obspm.fr:3389 nom_login@styx.obspm.fr

Il ne vous reste plus qu'à lancer votre application RDP sur le serveur 127.0.0.1 sur le port 13389 pour accéder à tserver2.obspm.fr depuis votre poste à travers le tunnel.

Explication du fonctionnement des tunnels SSH à l'Observatoire

Il est aujourd'hui impossible d'ouvrir certains services directement sur Internet. Les attaques sont trop courantes. Nous utilisons donc des procédés de filtrage interdisant l'accès à nos serveurs depuis l'extérieur. Cependant, cela peut empêcher les utilisateurs d'utiliser ces mêmes services. Pour contourner ce problème, sans pour autant compromettre la sécurité de l'infrastructure, nous allons utiliser le principe de tunnel ssh. La mise en oeuvre d'un tunnel est un peu plus complexe que l'utilisation standard d'une application. C'est un peu le prix à payer pour avoir la sécurité et l'accès aux services.

Le principe de base est le suivant : schema de tunnel SSH Vous êtes sur votre poste client et vous voulez accéder par exemple aux serveurs proposant les services smtp, proxy. (Rappelons que le service proxy est le nom technique du proxy Web. Comme expliqué sur le schéma, vous ne pouvez pas vous connecter directement sur ces services depuis Internet pour cause de filtrage au niveau de l'entrée de notre réseau (symbolisé ici par la barrière rouge). Vous allez donc constituer un tunnel (grosse flèche verte) entre votre poste client et le serveur styx.obspm.fr. Lors de l'établissement de ce tunnel, vous allez indiquer les services que vous voulez faire passer à travers le tunnel (ici nous avons donc smtp et proxy). Pour cela, il faut donc avoir les informations suivantes:

  • Le port de départ, c'est-à-dire le port qui va être ouvert sur votre poste client. Schématiquement il faut voir cela comme l'entrée du tunnel.

  • La machine qui va faire le travail de tunnel (ici cela sera styx.obspm.fr).

  • La machine que vous voulez atteindre (le bout du tunnel si vous voulez).

  • Le numéro de port de destination qui dépend donc du type de service que vous voulez atteindre.

Une fois cette opération effectuée, vous allez indiquer à vos applications exécutées sur votre poste client de passer à travers le tunnel ssh pour atteindre les différents services.

Ce procédé de tunnel (on parle aussi de relais de ports, ou de ports forwarding) vous permet de continuer à utiliser depuis l'extérieur de notre réseau vos applications usuelles de messagerie (comme Thunderbird, etc.), de navigation Web (comme Firefox), au travers d'une connexion sécurisée par ssh.

Ce système de tunnel peut fort légitimement être perçu comme complexe à comprendre, mettre en oeuvre et utiliser la première fois. Mais l'investissement en vaut la peine, car cela vous permettra d'utiliser à distance de nombreux services uniquement disponibles depuis l'Observatoire, et cela de manière transparente, une fois les réglages faits une bonne fois pour toutes. Le tout d'une manière parfaitement sécurisée. Dans les exemples indiqués ci-dessous, on suppose que vous voulez vous connecter sur les serveurs de la DIO de Meudon. Si vous voulez vous connecter sur des serveurs à Paris (par ex. pour SIFAC), il est plus judicieux de remplacer styx.obspm.fr par rubicon.obspm.fr. Mais ces deux machines sont strictement équivalentes, et vous ne devriez pas sentir de différence notable de vitesse, quelque soit la machine utilisée pour faire les tunnels et les serveurs utilisés au bout des tunnels.

Logiciels

Pour mettre en place un tunnel ssh, il vous faut une application ad hoc à installer sur votre poste. Nous allons dans cette section présenter les quelques clients connus, il y en a d'autres, mais nous ne pouvons vous les présenter tous.

Unix/Linux

Sur tous les Unix modernes (GNU/Linux, FreeBSD, Solaris, etc.) l'application ssh est installée par défaut. Il s'agit de la version opensource de l'implémentation de ssh connu sous le nom de OpenSSH. Vous n'avez donc rien de particulier à faire. Si exceptionnellement vous avez un Unix sur lequel n'est pas installé le client ssh, il faut dans ce cas installer la version que vous trouverez sur OpenSSH.

MacOS X

Comme vous le savez certainement, MacOS X est basé sur un système Unix (essentiellement du NetBSD, OpenBSD et FreeBSD), donc naturellement le système vient avec un client ssh installé par défaut. Cependant, ce client est à utiliser en mode console (voir explication plus loin). De fait pas conforme à la philosophie du Macintosh. Il s'est donc développé de nombreux autres outils qui vous permettent de faire cela de façon graphique. En voici quelques-uns

  • 1 - Un client graphique pour faire mettre en place des tunnels Ssh Tunnels Manager

  • 2 - Un autre client (non testé par nous) pour gérer des tunnels AlmostVPN

Dans la suite de ce document, nous ne présenterons pas plus en détail les clients graphiques pour MacOS X, les sites des développeurs étant bien documentés.

Windows

Sous Windows (toutes versions) il n'y a pas de client ssh installé par défaut. Il vous faut donc impérativement installer un client pour pouvoir mettre en place des tunnels. Voici une liste de clients à votre disposition

  • 1 - «Le» client classiquement utilisé : PuTTY (Il faut télécharger cette version)

  • 2 - Un autre client (non testé par nous) : ssh-tunnel-client

  • 3 - Un shareware : Zoc

Appendix : la notion de port

La notion de port est très importante en informatique, nous n'allons pas vous faire un cours de ce qu'est exactement un port, mais vous donner quelques notions imagées.

Prenons un serveur qui va proposer plusieurs services (envoi de
courrier, relève de courrier, etc.). Le client n'a aucun moyen de
dire si ce qu'il veut c'est envoyer du courrier ou relever du
courrier. Pour pouvoir faire cette distinction, il a été inventé la
notion de port. On peut voir cela schématiquement comme une porte
la porte A va être réservée pour l'envoi de courrier et la porte B pour la relève de courrier.

Naturellement dans le monde informatique, c'est par des numéros qu'on désigne les ports. Il y a des standards (toujours inférieur à 1024) communément utilisés:

  • 22: Connexion ssh

  • 25: Envoi de courrier

  • 80: Serveur WEB

  • 110: Relève de courrier par POP

  • 143: Relève de courrier par IMAP

  • etc.

Ces affectations sont juste des conventions. Vos applications (Thunderbird, Mail, etc) les appliquent. C'est pourquoi dans une configuration standard, vous n'avez pas à connaître le numéro du port pour un service. Si vous dites à Thunderbird que vous voulez relever votre courrier par IMAP, il va le faire par défaut sur le port 143. Lorsque vous faites des tunnels, vous ouvrez des ports sur votre machine, différents des ports par défaut. Votre application n'a aucun moyen de savoir qu'il s'agit de 1143 (ou d'un autre). C'est pourquoi dans la configuration il faut lui indiquer le numéro du port.

Appendix : Faire un ssh dans un tunnel ssh

Il est parfaitement possible de faire ssh dans un tunnel ssh et cela est loin d'être inutile. En particulier cela vous simplifie la vie lorsque vous voulez atteindre une machine interne du réseau depuis chez vous. Pour tout savoir dessus, lisez SSH dans un tunnel SSH.