Une connexion à distance SSH ?

"Dis Flo, je voudrais me connecter à distance sur mes VM, j'ai bien réussi à installer un VPN via OpenVPN, mais pas toujours pratique, tu connaitrais pas un moyen pour le faire ? Quoi ? SSH ? Oula qu'est-ce que c'est donc ! Et sur du Linux ?! Mince alors... va falloir que j'installe une VM Linux alors ! Bon bah c'est partit !"

1. Réseau

Donc une heure plus tard me voilà avec ma VM Linux Ubuntu toute prête, voici donc ce que donne mon réseau :

Reseau.jpg

Le but est pour moi de prendre la main, à travers le WAN, de mes VM Serveurs 2003 sans passer par mon PC de Bureau, donc directement avec une VM.

2. Installation serveur SSH

On ouvre un terminal sur Ubuntu et on tape tout simplement la commande :

ryan@ryan-desktop$ sudo aptitude install openssh-server

Une fois le service démarré votre serveur SSH est opérationnel.

3. Connexion SSH

Avant toute chose, il va falloir faire de la redirection de port au niveau du modem pour pouvoir attaquer le serveur SSH à travers le WAN. Il faut pour cela créer la règle de filtrage qui redirige le port 22 extérieur, vers le port 22 de l'adresse IP du serveur SSH.

regle.jpg

Ensuite on utilise Putty comme client SSH. C'est un logiciel gratuit téléchargeable ici ==>

Sélectionner Enregistrer le Fichier puis double-cliquer sur l'exécutable Putty.exe

Il faut correctement paramétrer le client Putty, pour commencer aller dans SSH dans la colonne de gauche pour faire apparait un le menu déroulant.

ScreenShot006.jpg

Ensuite sélectionner X11 et cocher Enable X11 Forwarding

ScreenShot007.jpg

Ensuite dans la colonne de gauche sélectionner Keyboard et cocher la case Linux

ScreenShot008.jpg

Puis sélectionner Translation à gauche puis choisir UTF-8 comme format pour éviter des soucis lors de la connexion.

ScreenShot009.jpg

Cliquer sur session à gauche. Dans la case sous Hostname mettre l'adresse IP publique du modem qui redirigera vers le serveur SSH (ici la VM Ubuntu). Mettre le port 22, et cocher SSH comme type de connexion. Pour mes tests je vais me connecter de ma machine Vista sur mon serveur SSH Ubuntu donc je reste en local, ce qui fait que je ne rentre que l'adresse IP locale de mon serveur SSH. Si j'étais à l'extérieur je devrais mettre l'adresse IP WAN de mon modem.

Mettre le nom que vous voulez donner à votre session Putty, et cliquer sur Save, ce qui vous permettra de vous reconnecter automatiquement en chargeant tout vos paramètres que vous venez de configurer.

ScreenShot010.jpg

Cliquer enfin sur Open

Une fenêtre s'ouvre, rentrer le login et mot de passe utilisateur de votre serveur et vous voilà sur un terminal du serveur Ubuntu :

ScreenShot011.jpg

Toute les commandes envoyées dans le tunnel sont cryptées donc impossible pour un sniffeur de repérer les trames.

Voilà la connexion SSH est établie, le plus dur est fait....

"Mais Flo... moi ce que je veux c'est prendre la main sur mes VM serveurs 2003... je fais comment là avec mon terminal Ubuntu, ça me sert à rien ! hein ? si j'ai autorisé le partage de bureau sur mon Ubuntu ? euh bah oui me semble mais je vais vérifier..."

4. Redirection de ports

Il s'avère que SSH est un protocole extrêmement puissant quand on sait correctement l'exploiter, et c'est ce que notre ami sait faire. Tout d'abord il faut autoriser le bureau à distance sur Ubuntu, donc ça facile avec l'interface graphique de ma VM :

ScreenShot012.jpg

Dans l'onglet Général autorisez d'autres utilisateurs à voir votre bureau et à contrôler votre bureau, ne cocher pas la demande de confirmation, et mettre un mot de passe peut s'avérer judicieux.

ScreenShot013.jpg

Dans l'onglet Avancé ne changez rien, notez cependant que le port par défaut du bureau à distance est 5900.

ScreenShot014.jpg

"Voilà Flo, mon Bureau à distance est autorisé et... han ! la souris dans ma VM bouge toute seule ! mais je croyais que je n'avais que la main sur un terminal de ma VM ! De la redirection de port via SSH ? hop hop hop explique moi ça !"

Effectivement avec l'outil Putty et le protocole SSH il est possible de faire de la redirection de port à travers X11 Forwarding et créer ainsi des "tunnels".

Fermer la session SSH en cours sur Vista, et relancer Putty.exe. Sélectionner la session précédemment sauvegarder et cliquer sur Load pour recharger les configurations précédentes.

Ensuite développer SSH dans la colonne de gauche, et sélectionner Tunnels

ScreenShot015.jpg

La case Source Port représente le port de la machine distante, et la Destination représente l'adresse IP et le port de la machine local sur lequel on veut rediriger le port distant.

Ici nous allons dire que le port source est le 5900, car c'est le port du service Bureau à distance d'Ubuntu, et nous allons renseigner comme Destination notre propre machine locale 127.0.0.1 et indiquer comme port le 5900 aussi car celui-ci n'est pas occupé par un autre protocole. Cliquer sur Add et la ligne suivante s'ajoute L5900 127.0.0.1:5900

Cocher au passage la case Local Ports accept connections from other hosts, car cela veut dire qu'un autre ordinateur de votre réseau locale pour se servir de votre ordinateur comme "passerelle" pour atteindre le port 5900 de votre connexion SSH. Explication en pratique pour bien comprendre ce qu'on vient de configurer dans Tunnels.

Retourner sur Session en haut à gauche de Putty, n'oubliez pas de sauvegarder la session avant de la lancer pour sauvegarder votre configuration, puis sélectionner Open. La session SSH se relance et redemande comme précédemment le login et mot de passe.

Une fois la session SSH établie, il faut installer le logiciel lui aussi gratuit, VNCviewer, téléchargeable ici

Une fois le VNCviewer installé, exécutez le.

ScreenShot016.jpg

Indiquer comme adresse du serveur VNC votre adresse IP locale 127.0.0.1 et le port sur lequel le serveur écoute, à savoir 5900. Et cliquer sur Connexion.

ScreenShot017.jpg

Renseigner le mot de passe configuré lors de l'autorisation du Bureau à Distance d'Ubuntu et connectez vous. L'interface Graphique d'Ubuntu apparait enfin, et toute la connexion est cryptée dans le canal SSH.

ScreenShot018.jpg

4.1 Partage de Connexion

L'option coché tout à l'heure dans le menu Tunnels; Local Ports accept connections from other hosts va permettre tout simplement aux utilisateurs de votre réseau de se connecter également via VNCviewer sur votre PC qui va les renvoyer sur la VM.

Imaginons que votre adresse IP soit 132.12.31.20/24 votre connexion VNCviewer sera dans tout les cas 127.0.0.1:5900. Cela va vous permettre de prendre la main sur le bureau Ubuntu. Imaginons que l'adresse d'un autre utilisateur de votre réseau soit 132.12.31.21/24, et bien si il rentre comme adresse IP de connexion VNCviewer 132.12.31.20:5900 il va aussi pouvoir prendre la main sur la VM à distance, car le port 5900 de votre PC est tunnelé avec le port 5900 de la VM distante.

"Super Flo ! ça marche, et c'est hyper réactif dis donc ! maintenant pour rebondir sur mes VM je n'ai plus qu'à installer un service VNCserver sur chacune d'entre elles, et je pourrais prendre la main via ma VM Ubuntu sur toutes mes VM."

ScreenShot019.jpg

"Quoi ? on peut même faire passer autre chose dans le canal SSH ? un serveur FTP ? oh pardon sFTP ?"

5. sFTP via SSH

Dans le même principe que pour le tunnel VNC, on peut créer le tunnel FTP via SSH. Dans la configuration de Putty, au menu Tunnels, mettre comme Source Port le port 22, et Destination mettre l'adresse IP locale 127.0.0.1:22. Sauvegarder la session puis la lancer. Une fois la connexion SSH établie avec le serveur, sur votre PC (ici Vista) utiliser un client FTP comme Filezilla, téléchargeable ici

Une fois le client FileZilla installé lancer une connexion sur l'hôte 127.0.0.1, mettez le nom d'utilisateur et le mot de passe qui va bien, et indiquer le port 22, cliquer ensuite sur connexion :

ScreenShot020.jpg

Et nous avons ainsi accès via SSH à tous nos répertoires, toujours en connexion beaucoup plus sécurisée qu'en FTP, c'est le sFTP.

ScreenShot021.jpg

6. D'autres utilisations comme VLC media player

A partir du moment où on à compris comment ça marche, on peut imaginer toutes sortes de passages à travers ces tunnels SSH. Par exemple pourquoi pas créer une connexion via SSH sur une sorte de bandothèque multimédia lisible à distance. Tout les flux seraient cryptés, et cela permettrait par exemple de regarder un film à distance où que l'on soit sans avoir notre disque dur externe sur soi quand on va chez des amis.

"Quoi tu peux aussi faire ça Flo ? Bah je t'en prie allons-y !"

6.1 VLC serveur

Donc là il faut installer les paquets VLC media player sur Ubuntu à l'aide de la commande:

ScreenShot022.jpg

Une fois les paquets installés, on peut lancer la console de VLC serveur via cette commande tout à fait exécutable dans le terminal client SSH sans interface graphique :

ScreenShot023.jpg

Cette commande indique de lancer le serveur VLC, et de diffuser le support multimédia via http sur le port 8080.

La console se lance, elle montre le temps du Film/de la musique passée, ainsi que le volume et le fichier qui est en cours de lecture.

ScreenShot024.jpg

6.2 VLC media player (client)

Une fois le Serveur VLC en route, aller sur le PC client qui à la connexion SSH avec le serveur SSH/VLC/sFTP. Dans mon exemple c'est la machine Vista. Dans le même principe que pour le tunnel VNC et sFTP, on peut créer un tunnel VLC via SSH. Dans la configuration de Putty, au menu Tunnels, mettre comme Source Port le port 8080, et Destination mettre l'adresse IP locale 127.0.0.1:8080. Sauvegarder la session puis la lancer. Une fois la connexion SSH établie avec le serveur, sur votre PC (ici Vista) utiliser le client VLC media player, téléchargeable ici

Sur Vista je lance à mon tour VLC, mais cette fois-ci juste le VLC media-player classique.

Sélectionner Média, puis Ouvrir un flux réseau, une fenêtre apparait, y indiquer le protocole http, et la boucle réseau locale suivi du port d'écoute 8080 du serveur distant. Sélectionner Lire pour voir apparaitre le film lancé sur le serveur SSH/VLC/sFTP, ici Ubuntu. Tout le traffic effectué dans le canal SSH est crypté.

ScreenShot025.jpg

Et voilà le film lu à distance :

ScreenShot026.jpg

En local la connexion passe sans lag, mais il faut cependant jouer avec les paramètres de commandes du serveur VLC afin d'alléger la charge d'encodage, etc... du film pour pouvoir le regarder sans lag via le WAN, ce qui est tout à fait possible.

7. Conclusion

Il s'avère que le protocole SSH est très utile avec son cryptage sécurisé, et ses tunnels de redirections de ports, ce qui lui permet d'avoir de multiples utilisations. Bien des solutions de prise en main à distance devrait passer par SSH qui offre une souplesse et une rapidité étonnante, tout en restant très simple de mise en route.

En espérant que ce post/tuto vous aura permis d'en découvrir un peu plus sur le sujet.

A bientôt, et j'ai envie de finir par le mot de la fin :

Et bien encore une soirée de productive hein Flo ? Quoi tu travailles demain matin ? et à 6h30 ! il est 1h là tu devrais aller te coucher ! Je rédige l'article et j'y vais moi. Bon courage !

A foison fada.

The Ryan.

Commentaires

1. Le mercredi, 4 février 2009, 15:54 par flo|va-nu-pied

Trop la classe ! Mon premier rédacteur :). Bon en tout cas bien sympa minot ce petit article. J'ai commencé a faire quelques modifs en terme de mise en forme histoire que ça corresponde au reste du blog. En tout cas j'avoue que ça a été une soirée intéressante et pis ça fait toujours plaisir de partager ses connaissances.
Ah sinon je confirme le lendemain matin a été super dur par contre ... Et à présent la semaine n'en fini pas... Mais bon bientôt les vacances !!
On garde la forme donc et on positive !

Encore merci pour le temps passé à réaliser cet article et puis bin avis aux amateurs ! :P
n'hésitez pas a le faire savoir si jamais vous voudriez vous aussi rédiger un article.
Bon je m'en vais faire une sieste moi parce que la j'ai un peu de sommeil en retard je crois bien.

2. Le lundi, 7 mars 2011, 20:33 par vince59700

heu...sans mechanceté aucune, il faut aussi penser a changer le port 22 (qui est habituellement utilisé pour les attaques brute force.

De plus n'oubliez de generé un jeu de clef public/privé afin de garantir la sécurité de votre tunel ssh et afin qu'il soit ainsi sécurisé au maximum

cordialement

3. Le mercredi, 9 mars 2011, 14:23 par flo|va-nu-pied

Tout à fait d'accord avec toi vince59700 ! il est effectivement recommandé d'utiliser une authentification forte pour ce genre de service et changer le port d'écoute de ce dernier fait également partie des bonnes pratiques.
Profitez en pour le basculer sur le port 443 si vous en avez la possibilité; c'est souvent très très utile... :)
j'avais rédigé un article sur la mise en œuvre de l'authentification forte avec SSH disponible ici:
http://blog.tools-fm.com/index.php?...
Merci encore pour toutes vos remarques. je tacherais de les intégrer dans les articles qui vont bien.

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

La discussion continue ailleurs

URL de rétrolien : http://blog.tools-fm.com/index.php?trackback/75

Fil des commentaires de ce billet