easy-rezo
  • Accueil
  • Réseau

Application

Sécuriser VNC via SSL 

Une des difficultés d’un administrateur système et réseau est la prise en main à distance sur les serveurs. Pour un environnement Microsoft, la solution ne se pose pas puisque Terminal Serveur existe. Mais comment faire quand nous disposons de plusieurs plate-formes dans un même réseau ? Comment se connecter sur un Windows server 2003 à partir d’une distribution Linux ? 

VNC (Virtual Network Computing) est un protocole permettant la connexion sur un ordinateur distant. Nous disposons donc, d’une interface graphique, d’un clavier et d’une souris. 

VNC est en open source (GNU/GPL). Il est indépendant de la plateforme (on peut se connecter sur windows à partir d’un mac). 

Par défaut, le protocole VNC ne déploie pas de solution de sécurité. Les conséquences sont qu’une personne malveillante peut se connecter sur votre VNC Serveur … donc sur votre ordinateur. 
Actuellement les solutions existent via les différents serveurs et clients : 
Ultra VNC dans sa version gratuite permet le chiffrement partiel ou total des données. 

Si les solutions existent alors pourquoi utiliser SSL ? 

Car pour sécuriser une connexion VNC il faut que le couple server-viewer VNC soit compatible (principalement les systèmes de cryptologies). Ce qui n’est pas toujours le cas sur des plateformes et Systèmes d’exploitations différents. 

Entre autres, SSL version 3.0 va nous permettre de déployer une très grande sécurité. 
- Cryptage des données 
- Double authentification (serveur et viewer) 
- Intégrité des données 

Pour réaliser cette application, il nous faudra tout d’abord nous prémunir des outils suivants : 
- Un serveur et un viewer VNC comme Ultra VNC 
- stunnel, qui permettra d’ouvrir le tunnel SSL. 
- OpenSSL qui va gérer le cryptage des données ainsi que la créations des certificats (Autorité de certification, Serveur, Client) 

Note : Il y a également la solution via SSl explorer qui est un VPN SSL pure et dur. En gros vous avez une interface https sur lequel vous pouvez configurer des connexions de types VNC, proxy HTTP, Terminal server etc … Mais on est ici pour apprendre et SSL explorer ne permet pas de comprendre le fonctionnement du protocole. 

Voici l’application mise en image : 

Tout ce passe comme pour un tunnel SSH ou HTTP. 

Stunnel (client) écoutera sur le port 5900 et transmettra les requêtes du VNC viewer sur le port 443. 
Stunnel (serveur) écoutera sur le port 443 et transmettra les requêtes du stunnel (client) sur le port 5900 

I. Installation des applications

Nous verrons ici l’installation et la configuration des applications. Je ne présenterai pas l’installation du serveur et du client VNC pour la bonne raison qu’il y a tellement d’application que cela serait une pure perte de temps de les énumérer. 

Il faut juste savoir que par défaut que le serveur VNC écoute sur le port TCP 5900. 

     a. Stunnel

On passe aux choses sérieuses. Vous trouverez cette application ici. Installer le sur c:\Program Files\stunnel sur le client et le serveur et … c’est tout. 

     b. OpenSsl

Vous trouverez OpenSsl ici (en bas de page). Vous l’installerez dans c:\Program Files\OpenSsl. Il faut également y ajouter le script ca.bat et le fichier de configuration Openssl.conf et les placer dans c:\Program Files\OpenSsl

Nous allons maintenant créer les différents certificats (autorité, serveur, client). Les certificats contiennent tout un tas d’informations et notamment la paire clé publique-privé que nous avons étudiée précédemment. 

Note : Il est important de réaliser les différents certificats sur le même ordinateur. 

    Certificat d’autorité 

Faute de pouvoir se payer un certificat signé par une autorité de certification, nous allons générer nous-même. Dans ce cas, nous aurons forcément confiance en se certificat puisque c’est nous même qui l’avons créé. 

lancé le script ca.bat se trouvant dans c:\Program files\openssl\ca genca

ATTENTION : Il vous sera demandé un mot de passe pour le fichier “pem”. Ce mot de passe vous sera demandé lors de la génération des deux autres certificats. 
Vous aurez donc compris qu’il est confidentiel puisqu’il permet la duplication de certification à partir du de l’autorité de certification. 

Nous disposons maintenant de la clé publique et privé de l’autorité de certification. 
Le fichier est stocké dans le répertoire c:\CA\private\Cacert.pem 


    Certificat du serveur 

lancé le script ca.bat se trouvant dans c:\Program files\openssl\ca server



Il est bon de rajouter que openssl permet de protégé la clé privé avec un mot de passe. Le problème résidant au niveau de stunnel qui n’a pas les moyens de fournir le mot de passe pour retrouver la clé privé. 

Le fichier est stocké dans le répertoire c:\CA\temp\vnc_server\server.pem

    Certificat du client

Idem que pour le serveur. Les clés seront stockés dans le répertoirec:\CA\temp\vnc_client\client.pem

    Configuration du serveur 

On passe maintenant à la configuration du Stunnel (serveur). Vous trouverez le fichier de configuration dans le fichier suivant 
c:\Program Files\stunnel\stunnel.conf

Nous allons rajouter ces lignes dans le fichier de configuration. 

CAfile = CAcert.pem 
CApath = certificates 
cert = server.pem 
client = no 
verify = 3 

[vnc] 
accept = 443 
connect = 127.0.0.1:5900 

Pour résumé, ces lignes définissent les éléments suivants : 
- Le nom du fichier du certificat de l’autorité de certification. 
- Le nom du certificat server. 
- Le chemin du certificat 
- Le niveau de vérification. Le niveau 3 correspond à l’authentification des deux partis. 
- La règle de transmission des requêtes. “Les requêtes sur le port TCP 443 sont transmises au serveur VNC” 

Nous allons maintenant charger le certificat client. Pour compléter le processus de détermination du nom du certificat client, il faut utiliser une nouvelle fois openssl. 

Voici une procédure toute faite qui doit être réalisé sur l’ordinateur ou vous avez généré le certificat: 

> cd c:\CA\temp\vnc_client 
>”c:\Program Files\openssl\openssl” x509 -hash -noout -in client.crt 
value 
> copy client.crt value.0 

 

Le fichier doit être placé dans le répertoire C:\Program File\Stunnel\certificates 

La dernière étape consiste à déplacer les fichiers Cacert.pem et server.pem dans le répertoire C:\Program Files\Stunnel\ 

Voici l’arborescence : 

C:\Program Files\Stunnel\ 
     Cacert.pem 
     server.pem 

C:\Program Files\Stunnel\certificates 
     value.0 

    Configuration du client 

Voici la configuration du client. Vous remarquerez que la configuration est presque identique que sur le serveur. 

Sur le client, vous devez rajouter les lignes suivantes dans le fichier C:\Program Files\Stunnel\stunnel.conf 

CAfile = CAcert.pem 
CApath = certificates 
cert = client.pem 
client = yes 
verify = 3 

[vnc] 
accept = 127.0.0.1:5900 
connect = VNC_server_IP_address:443 

La première partie est identique au serveur. Cependant la partie de la règle est un peu différente. Toutes les requêtes sur le port 5900 seront transmises au serveur sur le port 443 (port ssl par défaut). 

Maintenant nous allons changer le nom du certificat du serveur. 

> cd C:\CA\temp\vnc_server 
> C:\progra~1\openssl\openssl x509 -hash -noout -in server.crt 
value 
> copy server.crt value.0



 

Le fichier doit être placé dans le répertoire C:\Program File\Stunnel\certificates 

La dernière étape consiste à déplacer les fichiers Cacert.pem et server.pem dans le répertoire C:\Program Files\Stunnel\ 

Voici l’arborescence : 

C:\Program Files\Stunnel\ 
     Cacert.pem 
     client.pem 

C:\Program Files\Stunnel\certificates 
     value.0 

   :Test de la connexion 

Il faut maintenant lancer les deux stunnel. 
Pour s’assurer que s’assurer que stunnel fonctionne bien, nous pouvons réaliser la commande
 netstat -an sur la commande MS-DOS 
-Client : “tcp 0.0.0.0:5900 0.0.0.0:0 LISTENING” 
-Serveur : “tcp 0.0.0.0:443 0.0.0.0:0 LISTENING”
 

Nous pouvons maintenant lancer le serveur VNC et s’assurant bien qu’il accepte les connexions en local. 
Par sécurité, certains serveurs (comme UltraVNC) permettent de n’accepter que les connexions en local. 

Il ne reste plus qu’a se connecter avec le VNC viewer sur l’adresse local 127.0.0.1 avec le port tcp 5900. 

Dans le cas ou la connexion serait en échec, essayer de vous connecter directement sans passer par le tunnel SSL. 
Pour tester la connexion SSL, nous pouvons ajouter la ligne suivante “debug = 7″ dans le fichier stunnel.conf (nécessite un redémarrage de stunnel)

  • Pages

    • Réseau
      • Introduction à IPsec
        • Protocole
        • Négociation
        • Application
      • Introduction à SSL/TLS et HTTPS
        • Fonctionnalité de HTTPS
        • Mécanisme de SSL
        • Chiffrement
        • Certificat
        • Condensé (hache)
        • Application
      • Introduction au WI-FI
        • Mode de fonctionnement
        • Mode Infrastructure
        • Couche Liaison de données
        • Recettage de wifi pré N selon Apple
  • Blogoliste

    • http://thomasgallinari.e3b.org
Copyright © 2010 easy-rezo All Rights Reserved
RSS XHTML CSS Connexion
Wp Theme by n Graphic Design
Powered by Wordpress