samedi 24 octobre 2009

Vinagre: Contrôler un PC à distance!

Les différentes manipulations faites dans ce mini tuto ont été effectuées sur une Ubuntu 9.04 (Jaunty jackalope). Il n'est donc pas certain que celles ci soient fonctionnelles sur d'autres distributions. Une partie annexe sera postée plus tard pour les autres distrib'.

Vous n'avez jamais rêver de piloter une machine à distance? Un peu comme dans die hard 4 ou dans Matrix? Je parie que oui! mais vous êtes ressorti déçu après votre google, quand vous avez découvert qu'il fallait forcement passer par la console noire. "décidément, tout ce qui est beau c'est juste pour les pro..." vous vous êtes certainement dit. Mais à partir de là, je vous arrête! Vinagre est l'outil qu'il vous faut. Avant de raconter plein de trucs, j'aimerais d'abord vous présenter (très) rapidement deux protocoles (Genre de langage utilisé par les machines pour communiquer): SSH et VNC.

Ssh pour secure shell (c'est à dire shell sécurisé) est un protocole de communication permettant à deux machines de pouvoir s'échanger des données. A la base, ce protocole à été conçu pour piloter un terminal à distance. Il a supplanté plusieurs programmes de connexion à distance tel que rsh ou telnet grâce à la sécurité qu'il offre aux utilisateurs. En effet il impose une clé de chiffrement en début de chaque connexion, ce qui permet un chiffrement (les infos sortent comme sur Canal+ quand t'a pas le décodeur :) ) total de la communication durant la durée de la session.
VNC quant à lui est un programme qui permet le partage de bureau entre plusieurs machines.
Il est basé sur le principe client-serveur et utilise le protocole RFB pour le partage.
Vous vous dites certainement que tout çà c'est du chinois :D, mais ne vous en faites pas je vous explique.
Le principe serveur-client est assez simple. Une machine appelée "client" demande des informations à une autre machine appelée cette fois ci "serveur". Cette opération s'appelle une requête. Le serveur répond ensuite à la machine "client". Le langage utilisé dans cette communication est "le protocole".

Le Charabia en image.




Donc dans notre cas, le serveur c'est la machine qu'on veut contrôler et le client, c'est notre machine (Celle à partir de laquelle va se faire l'opération). Le langage compris par les deux logiciels VNC est le protocole RFB.
Voilà pour le petit cours d'aujourd'hui! (Ouf! c'est pas trop tôt ;) )

Maintenant faisons place à Vinagre.
C'est le client VNC par défaut sur Ubuntu (depuis la version 8.04, Hardy Heron).
Voici ses principales caractéristiques (tirées du site officiel de la communauté francophone d'Ubuntu - paresse héhéhé!!! :D ):
  • connexions sur plusieurs machines simultanément.
  • conservation de vos connexions dans des favoris.
  • historique de vos dernières connexions.
  • recherche de serveurs VNC sur le réseau grâce à Avahi.
  • conservation des mots de passe dans votre trousseau.

La page de téléchargement: vinagre

Mais rappelez vous, le client Vinagre ne peux servir que si vous avez à votre disposition un serveur VNC. On va donc installer un serveur VNC sur la machine à contrôler.
Le serveur qu'on va utiliser s'appelle Vino. Il est lui aussi installé par défaut sur les machines Ubuntu.
(Pour ceux qui ne sont pas sur Ubuntu, le lien et les dépendances)

Maintenant qu'on est en possession de nos deux machines configurées, On va faire quelques petites manip' pour aboutir à une connexion "sécurisée". J'ai omis de signaler le problème de sécurité lors de l'utilisation de VNC pour ne pas trop compliquer les choses dès le départ. Les données transmises sur le réseau sont chiffrées mais restent facilement "bruteforceable" (là je devient barbare :D ). On va donc utiliser un tunnel SSH (oui oui!! ssh, vous vous souvenez? ;) ) pour chiffrer les données envoyées sur le réseau.
On installe donc les paquets suivants sur le serveur:
openssh-server pour transformer la machine en serveur ssh. (A la fin, la machine sera à la fois serveur ssh et serveur VNC).
fail2ban pour éviter les attaques par brute force.
On configure maintenant le firewall grâce à ufw pour qu'il accepte les connexions sur le port 22.

# sudo ufw enable
# sudo ufw allow 22

Le paquet ufw est disponible depuis la version 8.04 de Ubuntu. Pour ceux qui ne l'ont pas, c'est ici

Ok, maintenant que tout notre arsenal est fin prêt, on peut commencer.
Lancez la commande suivante sur le serveur:

$ vino-preferences

La fenêtre suivante apparaît normalement.


Cocher la première case pour permettre au client de pouvoir se connecter sur la machine.
Deux modes d'utilisation de VNC sont disponibles.
  • Le mode visionneur seul qui permet uniquement de visualiser le bureau à distance.
  • Le second mode permet quant à lui d'avoir un contrôle total de la machine distante.
Donc selon vos désirs, cochez ou décochez la seconde case.
Pour la sécurité de la machine, il est préférable de cocher les trois cases de la partie sécurité.
Au niveau de la zone de notification, libre à vous de choisir ce qui vous conviendrait le mieux.
Voila, notre serveur VNC est désormais fonctionnel.
On peux y avoir accès maintenant grâce à vinagre.
Lancer le client VNC avec la commande suivante :

$ vinagre

Vous obtiendrez cette fenêtre.



Cliquez sur le bouton "Se connecter" en haut à gauche (oui celui avec le câble! ).
Une petite fenêtre s'ouvre et vous demande la machine sur laquelle vous voulez vous connecter.
Rendez vous sur ce site à partir du serveur pour avoir l'adresse IP de la machine. www.ip-adress.com. C'est celle avec quatre groupes de chiffres séparés par des points. (Un cours réseau sera spécialement dédié à l'adressage réseau)
Entrez l'adresse IP que vous avez obtenu dans la boite de dialogue qui s'affiche sur la machine "client". Enfin cliquez sur "Se connecter".

Magie!!! Le monde vous appartient ;) Vous vous êtes transformé en Chloé dans 24Hchrono!!!


Sur cette image, je me suis connecté en local. Si vous n'avez pas une deuxième machine sur laquelle vous pouvez  effectuer les tests, vous pouvez les faire sur votre propre machine en utilisant comme adresse ip : localhost ou 127.0.0.1  .

Postez dans les commentaires si vous rencontrez certains problèmes ou si vous voulez faire des remarques concernant le tuto.

Des cours beaucoup plus complets viendrons par la suite. Je poste bientôt le programme de nos cours sur Linux. ;)
A bientôt!

2 commentaires:

Unknown a dit…

Merci pour le tuto mais comment acceder à un PC derrière un routeur (Freebox par exemple) ? Car l'adresse IP est celle de la Freebox et non pas celle de la machine derriere le routeur …

Anonyme a dit…

We often enjoy having out of doors activities [URL=http://www.thenorthfaceforsale.net/#336]www.thenorthfaceforsale.net[/URL] a technique for releasing our stress from the long week of work. However, in order to carry each of the items that are desirable, the need to [URL=http://www.thenorthfaceforsale.net/#336]www.thenorthfaceforsale.net[/URL] a thing that would hold our own entire luggage is required.