Ceci est une ancienne révision du document !
VNC
VNC (Virtual Network Computing) est un système qui vous permet de
contrôler une machine à distance, et ce, en prenant le contrôle du clavier et de la souris de cette machine. Cela peut être utile si l'un de vos proches débute en informatique car vous pouvez voir ce qu'il voit sur son écran. Par ailleurs, cela peut vous épargner de passer par la ligne de commande. Pour plus d'informations, vous pouvez consulter la page Wikipédia.
Installation
Ubuntu intègre à la fois le client VNC, pour se connecter à une machine distante et le serveur VNC qui déporte l'affichage. VNC est présent dans Ubuntu, sauf dans Ubuntu Netbook Remix mais vous pouvez installer vino (apt://vino) et vinagre (apt://vinagre). Il faudra ensuite configurer le serveur VNC vino de la machine que vous voulez contrôler.
Sécurité
Par défaut, VNC n'est pas un protocole sécurisé. Alors que les mots de passe ne sont pas envoyés en texte clair (comme dans le telnet), la force brute de craquage pourrait s'avérer fructueuse si les deux clés de chiffrement et mot de passe codés sont surveillés à partir d'un réseau. Pour cette raison, il est recommandé qu'un mot de passe d'au moins 8 caractères soit utilisé.
Toutefois, VNC peut être mis dans un tunnel sur une connexion SSH ou VPN ce qui pourrait ajouter une couche de sécurité supplémentaire avec un chiffrement plus robuste. Les Clients SSH sont disponibles pour toutes les principales plates-formes, les tunnels SSH peuvent être créés à partir de clients UNIX (y compris Mac OS X), les clients Windows, Mac OS Classic clients (System 7 et +) - et bien d'autres.
- UltraVNC s'appuie sur l'utilisation d'un plugin open-source de chiffrement qui chiffre l'ensemble de la session VNC notamment l'authentification de mot de passe et transfert de données. Il permet également l'authentification par NTLM et des comptes d'utilisateurs Active Directory.
- RealVNC permet de chiffrer les connexions dans son package commercial.
- Workspot publié des correctifs de chiffrement AES pour VNC.
Bien que certaines personnes croient que VNC peut facilement être utilisé pour casser un système, généralement un utilisateur doit activer explicitement l'accès à distance pour les ports utilisés par VNC afin d'être piraté. En d'autres termes, un système exécutant VNC sur un réseau ne peut être accessible depuis l'extérieur de ce réseau, sauf si l'utilisateur spécifie le contraire (comme dans les paramètres de configuration du routeur) - ou qu'une autre machine du réseau puisse servir de relais au piratage de la machine vnc (attaque utilisée par Kevin Mitnick).
Vous pouvez aussi songer à IPsec.
Configuration du pare-feu (K)Ubuntu
Pour autoriser les connexions de VNC, il faut ouvrir par défaut le port 5900. Ceci est la dernière étape indispensable pour ne pas faire face à un message du type « host your_host is unreachable !! ».
ufw est installé d'office sur Ubuntu. Il vous suffit donc d'entrer dans un terminal :
sudo ufw enable sudo ufw allow 5900
On peut aussi passer par Gufw en ajoutant une règle dans Politique du trafic entrant.
Connexion hors de son réseau local
La commande à utiliser est
x11vnc -connect VOTRE.ADRESSE.IP
- Le paquet fail2ban pour protéger openssh-server des attaques par force brute ne fonctionne pas. Pour un serveur perso, construire des règles de limit iptables pour empêcher trop de connexions d'une même IP pour une durée donnée.
- Le tunnel SSH doit être lancé sous le nom de l'utilisateur de la session à contrôler. Sinon, VNC ne va pas se connecter via le tunnel. Il semble que de la sécurité ait été ajoutée empêchant la connexion de VNC sur la socket du tunnel SSH d'un autre utilisateur. (Ce fut autrefois possible).
Machine à contrôler
La machine a controler s'appelle la machine serveur
fail2ban sert à protéger des attaques par force brute.
- Configurez le firewall afin d'accepter les connexions SSH entrantes (port 22). Si vous utilisez un routeur, il faudra également que les connexions soient acceptées et routées vers la bonne machine.
- Dans le fichier /etc/ssh/sshd_config, créez ou mettez la ligne GatewayPorts sur yes (n'oubliez pas de décommenter la ligne ;))
Sous Maverick, il n'y a pas de ligne GatewayPorts
- Dès lors que la liaison VNC va être encapsulée dans le tunnel SSH, il n'est pas nécessaire de laisser le port 5900 ouvert.
- Autorisez le bureau à distance.
Il serait utile d'indiquer comment autoriser le bureau à distance (sous Gnome ET sous KDE)
Système ⇒ Préférences ⇒ Bureau à distance et cocher les autorisations voulues (Gnome)
Machine qui contrôle
La machine qui controle s'appelle la machine cliente.
Prise en main depuis une machine sous Linux
Ouvrez deux sessions de terminal :
- 1er terminal (à laisser ouvert le temps de la session VNC) :
ssh -L 5901:localhost:5900 -XC <user>@<machine_a_contrôler_ip_ou_nom_domaine>
Sans entrer dans le détail '-L' permet à SSH de rediriger le port local 5901 vers le port distant 5900, '-X' d'autoriser le transfert du serveur X de la machine distante (en gros son bureau) et '-C' de compresser les données transmises pour économiser la bande passante.
- 2e terminal :
vncviewer localhost:1
(Pour le logiciel vncviewer, qui ajoute automatiquement 5900 au numéro de port indiqué)
- OU 2e terminal :
vinagre localhost:5901
(Pour le logiciel vinagre)
vncviewer ou vinagre se connecte alors via le port 5901 de la machine locale qui se trouve être redirigé par SSH vers le port 5900 de la machine distante… et le tour est joué.
Prise en main depuis une machine sous Windows
Une solution simple et efficace existe sous Windows afin de prendre en main une machine Ubuntu, le tout via un tunnel SSH.
Les manipulations sont les mêmes pour la machine à contrôler, les changements interviennent seulement sur la machine qui contrôle (dans mon cas sous Windows XP).
PUTTY
- Télécharger le logiciel PUTTY permettant l'accès à la console en SSH.
- Démarrez Putty, entrez l'adresse sur laquelle vous voulez vous connecter (IP publique ou nom de domaine, pour en ouvrir un gratuit voyez la page sur les DNS dynamiques).
- Choisissez SSH en 'Connexion Type'. Sur la gauche de l'écran rendez vous dans l'onglet 'SSH', puis 'Tunnel':
- en 'source port', ajoutez
59005901 - en 'destination', ajoutez 127.0.0.1:5900
- Cochez éventuellement sous SSH « Enable Compression ».
- Sauvegarder votre profil.
Commentaire d'un visiteur: n'y a t'il pas un problème avec la "destination" ? le port est de plus identique, ne devrions nous pas mettre en destination la machine disposant du serveur VNC ? Aussi, un peu plus haut, on parle d'un "GatewayPorts" a modifier dns sshd_config, or sur la 9.10, je n'ai pas ce parametre perso Cordialement,
Réponse au visiteur : Non, il n'y a pas de problème : Dans un premier temps, c'est Putty qui créé la connexion sécurisée en SSH a travers le port ssh du serveur : machine contrôlée. Ensuite, VNC se connecte sur Putty pour utiliser sa connexion ssh. Globalement, on a Putty qui écoute et forward le port 5900 des applications locales (de la machine qui contrôle) vers lui-même (d'où le 127.0.0.1) sur le port ssh donné du serveur (machine contrôlée).
VNC ⇐ 5900 (local) ⇒ Putty ⇐ 22 (distant) ⇒ machine_a_controler
vncviewer
- Connectez-vous à l'ip 127.0.0.1, vous voilà connecté sur votre machine Ubuntu en ssh, sécurisé donc!
Configuration du serveur VNC d'Ubuntu
Introduction
Le serveur et client VNC d'Ubuntu est vino. Il est utile pour une utilisation en réseau local sur des pc avec des ressources. Il vise les particuliers pour une utilisation normale de VNC.
Il existe d'autres clients et serveurs VNC, qui peuvent avoir l'avantage d'être moins gourmand en ressource processeur et réseau.
serveur multiposte
Vous pouvez également suivre la configuration suivante afin d'en faire un serveur multiposte sécurisé.
installer le paquet vnc4server
- Prérequis -
Changer les droits du fichier xinitrc qui se trouve dans /etc/X11/xinit :
chmod 755 /etc/X11/xinit/xinitrc
Effectuer les modifications suivantes dans le fichier xstartup de chaque utilisateur pour lequel on souhaite une session distante indépendante soit ~/.vnc/xstartup :
- décommenter les lignes - unset SESSION_MANAGER et exec /etc/X11/xinit/xinitrc - ajouter la ligne - unset DBUS_SESSION_BUS_ADDRESS après la ligne unset SESSION_MANAGER
Après ces modifications voir fonctionnement classique (lancement du serveur et connexion à la session créée). Ne pas s'inquiéter si les menus mettent un peu de temps à apparaître…
NB : L'erreur error opening security policy file /etc/X11/xserver/SecurityPolicy n'est pas bloquante…
Version Gnome pour Ubuntu
Rendez-vous sur la machine à contrôler à distance, et effectuez les manipulations suivantes. La configuration du serveur VNC s'effectue grâce à un petit utilitaire graphique. Allez dans le menu Système → Préférences → Bureau à distance (ou Partage de Bureau, c'est l'application vino-preferences).
Dans la fenêtre qui apparaît se présentent quatre cases à cocher. La première case, Autoriser d'autres utilisateurs à voir votre bureau, active ou désactive le serveur VNC de cette machine, et limite le contrôle à distance à la vision du bureau.
La seconde case,Autoriser d'autres utilisateurs à contrôler votre bureau, active quant à elle le contrôle de la machine. Elle doit être cochée si vous souhaitez prendre le contrôle de cette machine.
La troisième case, Vous demander confirmation, est importante pour le respect de la vie privée des utilisateurs. En effet, lorsque cette case n'est pas cochée, vous pouvez prendre le contrôle de la machine distante sans que l'utilisateur en soit informé, et donc voir et contrôler son bureau à son insu.
La dernière case, L'utilisateur doit saisir son mot de passe, apporte une sécurité supplémentaire, car il vous impose la saisie d'un mot de passe pour prendre le contrôle de la machine distante.
Version KDE pour Kubuntu
Rendez-vous sur la machine à contrôler à distance, et effectuez les manipulations suivantes. La configuration du serveur VNC s'effectue grâce à un petit utilitaire graphique. Cliquez sur menu K → Internet → Krfb (Partage de bureau). Voici ce que vous verrez :
Cette première fenêtre permet de créer des invitations temporaires, ainsi si vous avez un problème pour configurer votre distribution vous pouvez donner un accès temporaire à une personne qui vous aidera a régler votre problème. Le premier bouton (Créer une invitation personnelle…) vous permet de créer cette invitation. Le deuxième bouton (Inviter par courrier électronique…) permet d'envoyer simplement toutes les informations nécessaires pour se connecter par courriel. Ainsi vous n'aurez pas à chercher le bon mot de passe, l'adresse IP ou le port à utiliser. Le dernier bouton est davantage destiné à un utilisateur légèrement plus avancé cherchant à supprimer une invitation existante ou créer une invitation.
La partie intéressante se trouve dans la configuration de krfb :
Comme vous le voyez dans cette configuration cette machine est accessible de manière permanente par tout utilisateur connaissant le mot de passe. Celui-ci doit donc être particulièrement sûr. Un bon mot de passe contient au minimum 7 caractères alphanumérique avec des majuscules, minuscules, un ou plusieurs chiffres et au moins un caractères non alphanumérique, comme un signe de ponctuation.
Le fait d'autoriser les connexions non invitées autorise une personne à se connecter sans qu'elle vous ait, au préalable, demandé son autorisation. Mais nous verrons plus tard que ceci n'est pas forcément gênant.
La case décochée ici (Confirmer les connexions non invitées avant acceptation), si elle est décochée, peut poser un problème. En effet, jusqu'à présent, si une personne essayait de prendre le contrôle de votre ordinateur, votre autorisation était sollicitée. Une fois cette case décochée, cette demande ne vous est plus faite. Donc si vous n'êtes pas devant votre ordinateur la personne aura tout loisir d'y faire ce qu'elle veut. Cette option est néanmoins utile si vous souhaitez vous même prendre le contrôle de votre ordinateur vu que dans ce cas vous ne serez pas devant votre écran pour accepter la connexion. Ceci, encore une fois, exige un mot de passe sécurisé.
La case Autoriser les connexions non invitées pour contrôler le bureau sert à définir si les personnes se connectant de manière non invitée sont simples spectateurs ou si elles peuvent piloter votre souris et votre clavier.
Dans l'onglet Session, l'option Toujours désactiver l'image d'arrière plan permet d'améliorer la réactivité du partage de bureau en n'envoyant pas à l'utilisateur distant l'image de votre fond d'écran.
Le dernier onglet permet de modifier le port que votre serveur VNC va écouter en attendant d'éventuelles connexions.
Version Xfce pour Xubuntu
Une solution consiste à faire la même chose que sous Gnome.
Test du serveur
Lancez dans une console :
/usr/lib/vino/vino-server
et connectez-vous depuis un client.
Lancement automatique du serveur à l'ouverture de la session Xfce
Allez dans le menu Paramètres → Applications démarrées automatiquement.
Pour Xubuntu 8.04 : Applications → Paramètres → Gestion des paramètres Xfce → Demarrage.
Faites ajouter, et mettre « /usr/lib/vino/vino-server » dans la case de la commande avec, par exemple, Vino comme Titre.
Connexion à une machine distante
Version Gnome pour Ubuntu
2 possibilités s'offrent à vous, la première est plus simple.
1) Bureau à distance
(Lucid) Aller dans Applications → Internet → Visionneur de bureaux distant.
Si vous êtes sur le même réseau, il trouvera automatiquement les machines avec vnc activé.
Sinon vous devrez définir la bonne adresse IP.
2) Terminal Server
Lorsque la machine distante est configurée, vous pouvez vous y connecter et prendre son contrôle en lançant un client VNC comme Terminal Server Client par exemple. Pour ce faire, allez dans le menu Applications → Internet → Terminal Server Client.
Entrez l'adresse de l'ordinateur auquel vous souhaitez vous connecter et choisissez VNC comme protocole.
En fonction de la configuration du serveur VNC distant, votre session démarrera automatiquement ou après acceptation par l'utilisateur du serveur distant.
Le cas échéant, entrez votre mot de passe.
Puis profitez du bureau à distance.
Pour plus d'informations, reportez vous à la page dédiée.
Version KDE pour Kubuntu
Une fois la machine distante configurée, vous pouvez en prendre le contrôle en lançant le client VNC de KDE : krdc. Cliquez sur menu K → Internet → Krdc (Connexion à un bureau distant).
Il ne vous reste plus alors qu'à taper l'adresse IP de la machine suivie du numéro d'écran (généralement, zéro) ou du port à utiliser. Exemple : vnc:/186.165.167.12:0
ou vnc:/186.165.167.12:5900
.
Vous pouvez remplacer l'adresse IP par le nom d'hôte si la machine en est pourvue.
Si l'écran sur lequel on se connecte en VNC a une résolution supérieure un problème se produit : la barre de défilement se met à descendre tout en bas quand on clique sur la barre de défilement sans possibilité de remonter à première vue (pas de possibilité de défilement avec la molette, normal sinon comment l'utiliser aussi avec vnc ?).
Néanmoins pour la faire remonter il suffit de cliquer sur le 3ème bouton de la souris ou à défaut sur le bouton droite et gauche en même temps.
En espérant que cela puisse être utile à quelqu'un …
Version windows
Il existe des logiciels VNC libres utilisables sous Windows :
- Ultravnc : http://www.ultravnc.fr/
- Ultravnc portable (sans besoin de l'installer ) : http://portableapps.com/node/2031
- Tight vnc (également en version portable ) : http://www.tightvnc.com/
Logiciel propriétaire VNC:
- Realvncviewer : http://www.realvnc.com/products/free/4.1/winvncviewer.html
Avec windows xp professionnel vous avez aussi par défaut un logiciel pour vous connecter "Terminal Serveur" (mais il faudra installer un paquet pour ubuntu - tsclient ).
VNC en plein écran
La touche F8 de votre clavier permet de contrôler VNC avec un menu contextuel qui apparaît sur frappe de la touche. Elle est très pratique car elle vous permet de quitter le mode plein écran par exemple.
Problèmes connus
Incompatibilité avec les effets de bureau
Vnc ne fonctionne pas si les effets de bureau sont activés depuis Jaunty Jackalope (9.04). Rapport de bug sur Launchpad. Lucid même Bug: Sous ,Hardy,Lucid, l'écran du serveur reste figé. Pour le contourner il suffit (pour le moment) d'arrêter les effets du bureau compiz avec : Système → Préférences → Apparence → Onglet "Effets visuels" et Cocher "aucun".
Où bien utiliser un autre serveur vnc que vino ici (à tester et donner vos avis).
Dysfonctionnement du pavé numérique du clavier sur la machine hôte (le serveur)
Après avoir contrôlé une machine à distance, il peut arriver que le pavé numérique du clavier change de fonctionnement. En effet au lieu des chiffres ce sont maintenant les mouvements de la souris qui sont contrôlés. Si cela vous arrive, pas de panique !
Il suffit de réactiver le pavé numérique en allant dans le menu : Système → Préférences → Accès Universel → Accessibilité du clavier. Puis dans l'onglet Touches de la souris et de décocher la case « Activer les touches de souris ». Si Accès Universel n'est pas disponible, rendez-vous sur : Système → Préférences → Outils d'accessibilité → Accessibilité du clavier. Puis dans l'onglet Touches de la souris et décocher la case « Activer les touches de souris ».
Ainsi votre pavé numérique retrouvera son fonctionnement habituel.
TODO : ajouter la procédure avec XFCE pour Xubuntu tu Ubuntustudio…
Liens externes
- Discussion VNC et prise de contrôle a distance
et surtout n'oubliez pas d'accepter les invitations reçues… et attendues
Contributeurs : .