version PDF - Flash informatique
Transcription
version PDF - Flash informatique
Se connecter à l’EPFL sans client VPN propriétaire de Cisco Sebastien.Cevey@epfl.ch, section informatique, Marc.Poulhies@epfl.ch, section informatique & Cyril.Jaquier@epfl.ch, section informatique Jusqu’à très récemment, l’utilisation du client VPN propriétaire de Cisco était indispensable pour profiter pleinement de l’accès au réseau de l’EPFL depuis les prises jaunes et le réseau sans-fil (wifi). Plusieurs solutions libres existent désormais et deux d'entre elles seront présentées ici: l’une basée sur l’établissement d’un tunnel SSH à travers tremplin et l’autre utilisant un client VPN libre. Ces solutions fonctionnent sur une plus large gamme de systèmes/architectures que le client Cisco (GNU/Linux, FreeBSD, OpenBSD, Solaris pour VPNC, la plupart des systèmes possédant les outils nécessaires pour la méthode basée sur SSH). Motivations Bien que pour beaucoup, le client de Cisco semble parfaitement convenir à leurs besoins, il existe certains cas de figure où il n’est pas utilisable: ❚ Système d’exploitation ou plate-forme non-supportés (Opie, *BSD, GNU/Linux sur PPC, ARM, alpha, etc). ❚ Client existant mais payant (Mac OS 9 et antérieurs, PalmOS, Windows CE, etc). ❚ Utilisateur originaire d’un pays n’ayant pas le droit d’utiliser le client de Cisco (sur restriction du gouvernement des États-Unis) [1]. ❚ Nature propriétaire du client : instabilité du logiciel, incompatibilité idéologique. Solution basée sur SSH et Tremplin Cette solution consiste à accéder à l’extérieur au travers de tremplin [2]. Tremplin permet d’ouvrir des tunnels SSH depuis l’extérieur du réseau EPFL vers l’intérieur, et réciproquement. Il est possible de faire transiter toutes les requêtes par tremplin, ce qui permet ainsi d’accéder au réseau EPFL et à Internet sans restriction interne. L'utilisation de SSH permet en outre de crypter les communications qui passent dans les fils ou les airs ! Comme on peut le voir sur la figure 1, l’ouverture d’un tunnel SSH entre l’utilisateur (hôte) et tremplin permet de sécuriser le transfert entre les deux machines. Puis la requête est transférée au serveur voulu, par exemple sur Internet. Ce transfert est effectué dynamiquement vers le bon serveur et le bon port de ce serveur, en fonction de la requête et du protocole (HTTP, SSH, etc) utilisé, grâce à SOCKS. C’est le support tout récent des tunnels SOCKS par SSH qui permet cette solution. fig. 1 – tunnel par tremplin vers l’extérieur L’utilisateur n’a donc besoin que d’un client SSH (qui supporte les tunnels SOCKS) et de programmes supportant les proxies SOCKS. En pratique La mise en place de cette solution est très simple. Elle requiert les outils libres suivants: ❚ Un client SSH permettant le proxying dynamique (OpenSSH v3.7p1+[5], Putty v0.54+[6]) ❚ tsocks (pour rendre le tunnel transparent aux applications) [4]. En pratique, ce logiciel n’est nécessaire que pour les applications ne supportant pas nativement SOCKS. SSH ayant été porté sur un très grand nombre de systèmes, il est normalement possible d’utiliser cette méthode sur des plates-formes très diverses, qu’il s’agisse de GNU/Linux, Unix, *BSD, MacOS X, Windows (R), etc. Ouverture du tunnel SSH Avant toute chose, il faut aller activer son compte SSH sur tremplin par le site Gaspar [7]. Après s’être logué, cliquer sur prestations sécurisées puis compte SSH, où il vous sera demandé d’entrer un mot de passe. Une fois le compte demandé, il faudra attendre quelques minutes pour qu’il soit activé. Ensuite, avec OpenSSH, il suffit de lancer la commande suivante pour ouvrir le tunnel : $ ssh -D <portlocal> <sciper>@tremplin Par exemple si votre numéro SCIPER (voir votre carte Camipro) est 123456, et que vous voulez ouvrir le tunnel sur le port local 9050: $ ssh -D 9050 123456@tremplin Pour les utilisateurs de Windows (R), Putty (version 0.54 ou plus récente) permet de faire la même chose depuis le menu principal. fi 5 – 1er juin 2004 – page 3 Se connecter à l’EPFL sans client VPN propriétaire de Cisco donc nécessaire, il suffit de configurer le programme (menu Tools / Options / General / Connection Settings) pour qu’il utilise localhost comme serveur proxy et le port choisi (par exemple 9050) comme port de proxy (voir figure 3). Il existe cependant une solution encore plus élégante fonctionnant aussi pour les programmes ne supportant pas SOCKS: tsocks [4]. Ce petit programme permet à tous les programmes d’utiliser SOCKS de manière transparente, pour peu qu’ils soient linkés dynamiquement. Il fonctionne en interceptant les appels aux librairies réseau et en les déviant pour qu’ils passent par le proxy SOCKS. Il suffit donc de le lancer pour que les programmes puissent avoir accès normalement au réseau ! Après l’avoir installé, il faut le configurer depuis le fichier /etc/socks/tsocks.conf: server = localhost server_port = 9050 server_type = 5 Ensuite, il suffit de le démarrer avec fig. 2 – configuration de Putty Dans Connection / SSH / Tunnels (fig. 2), il faut donner le port local à utiliser pour ouvrir le tunnel (ici 9050) et spécifier le type de tunnel (sélectionner Dynamique). En cliquant sur Add, le tunnel s’ajoute à la liste, le port étant préfixé d’un D. Note: Attention, si vous effectuez cette configuration, puis chargez un nouveau profil depuis le menu Session, la configuration du tunnel aura probablement disparu ! Il faut sauver la configuration du tunnel dans le profil pour qu’il soit chargé directement. Utilisation de SOCKS fig. 3 – configuration de Firefox Certaines applications (par exemple Mozilla Firefox [8]) supportent l’utilisation d’un proxy SOCKS dans leur configuration. Aucun autre programme supplémentaire n’est fi 5 – 1er juin 2004 – page 4 $ source /usr/bin/tsocks on On peut contrôler que tsocks soit bien prêt à intercepter les appels réseau des programmes avec cette commande: $ tsocks show LD_PRELOAD="/usr/lib/libtsocks.so" Dès maintenant, si le tunnel SSH est bien ouvert, on peut utiliser les divers programmes habituels (wget, ftp, etc) vers le reste du réseau ! Pour arrêter l’utilisation de tsocks, il suffit de faire $ source /usr/bin/tsocks off Note: tsocks ne fonctionne que pour le shell dans lequel il a été lancé ! Solution basée sur VPNC Depuis peu, une nouvelle solution libre permet de se connecter au réseau de l’EPFL sans avoir recours au client propriétaire de Cisco. Il s’agit de vpnc, développé par Maurice Massar de l’université de Kaiserslautern. Voici ses principaux avantages: ❚ il est disponible sur plus de systèmes que le client Cisco: GNU/Linux x86/ppc/autres, FreeBSD, OpenBSD (bientôt Solaris). ❚ sa simplicité d’installation: disponible de base sur la plupart des systèmes supportés. ❚ il est plus stable. ❚ c’est un Logiciel Libre, sous licence GPL. Le gain de stabilité est rendu possible grâce à l’utilisation des fonctionnalités de base du système, sans avoir à rajouter du code propriétaire. De plus, le programme s’exécutant totalement dans l’espace utilisateur, l’impact sur le système est limité en cas d’erreur. Il n’est donc plus nécessaire de compiler le module Cisco. Vpnc requiert simplement le support du périphérique TUN [9] qui est déjà présent dans le noyau de la plupart des distributions (sinon il est possible de le compiler en tant que module dans le noyau). Toutes les opérations de chiffrements sont fournies par la bibliothèque libgcrypt [13] issue de GNUPrivay Guard. Se connecter à l’EPFL sans client VPN propriétaire de Cisco Installation Exemple de fonctionnement Si vpnc n’est pas disponible pour votre système (ou avec une version pas suffisamment à jour, c’est-à-dire plus vieille que la 0.2-rm+zomb-pre9), l’installation à partir des sources est nécessaire. Celle-ci est très simple et se décompose en quelques commandes. Si vous disposez d’une version à jour, vous pouvez passer directement à l’étape de configuration. ❚ télécharger l’archive sur le site de Maurice Massar [10] et la décompresser. Voici un exemple de fonctionnement de vpnc réalisé depuis le réseau sans-fil de l'EPFL. $ wget http://www.unix-ag.uni-kl.de/ %7Emassar/vpnc/vpnc-0.2-rm+zomb-pre9.tar.gz $ tar zxf vpnc-0.2-rm+zomb-pre9.tar.gz # vpnc-connect /etc/vpnc.conf Enter password for xxxxxx@vpn-epfl.epfl.ch: VPNC started in background (pid: 10390)... En principe, la connexion sécurisée est établie et vous devriez être capable d’accéder au réseau EPFL et à Internet. La déconnexion se fait simplement par: # vpnc-disconnect Terminating vpnc daemon (pid: 10390) La figure 4 résume le fonctionnement de vpnc. ❚ compiler vpnc. $ cd vpnc-0.2-rm+zomb-pre9 $ make gcc -W -Wall -O -g ‘-DVERSION="0.2-rm+zombpre9"’ -c -o vpnc.o vpnc.c [...] Si vous obtenez des messages d’erreurs à cette étape, vérifiez que la bibliothèque libgcrypt est correctement installée (fichiers de développement compris). ❚ installer vpnc. En général, les programmes compilés sont mis dans /usr/local/, mais cela n’a rien d’obligatoire. # cp vpnc vpnc-connect vpnc-disconnect /usr/ local/sbin Pour éviter d’avoir à faire ceci, nous avons mis à disposition [12] des paquets pour certains systèmes (actuellement Debian GNU/Linux et Gentoo Linux). Fichier de configuration Il faut tout d’abord se rendre sur la page du DIT [11] pour récupérer un modèle de fichier de configuration qu’il suffira de copier dans /etc/. Si vous comptez utiliser ce client sur plusieurs réseaux, il peut être judicieux de mettre les différentes configurations dans le répertoire /etc/vpnc en les nommant de façon explicite (epfl.conf par exemple). Il vous suffit ensuite d’éditer ce fichier en remplaçant #No SCIPER\# par votre propre numéro SCIPER. Concentrateur VPN Conclusion Nous avons donc vu deux solutions alternatives au client propriétaire de Cisco. À vous de choisir celle qui vous convient le mieux, en fonction de la situation. D’un côté, l’option -D de ssh est très puissante. C’est d’ailleurs un excellent moyen pour sécuriser une connexion (notamment wireless) jusqu’à un serveur-relais plus sûr, que ce soit à l’EPFL ou chez soi. Cette méthode est disponible sur un très grand nombre de plates-formes, pour peu qu’il y existe un client SSH la supportant, et on peut donc y recourir pour monter rapidement une connexion ou pour mettre en ligne une machine un peu exotique. Par opposition, le client VPN libre n’est disponible que sur un nombre limité de plates-formes mais il permet un confort supérieur et une accessibilité aux ressources du réseau VPN de l’EPFL identique à celle du client Cisco. C’est donc une alternative très complète à considérer pour tous les utilisateurs de systèmes GNU/Linux ou *BSD. Vous trouverez des liens vers les versions complétées et tenues à jour de ces solutions sur la page des contributions du réseau de l’EPFL: http://network.epfl.ch/contrib/. Remerciements Merci au DIT pour sa coopération, et plus particulièrement à Martin Ouwehand pour son aide, Jacques Virchaux pour son support et Anne Possoz pour ses encouragements! Google Bibliographie WLAN / Internet Interface Réseau Noyau TUN VPNC Communications chiffrées Mozilla http://www.google.com Communications non chiffrées fig. 4 – communications par VPN [1] https://network.epfl.ch/vpn/cisco_usa.html [2] http://tremplin.epfl.ch/ [3] http://www.socks.permeo.com/ [4] http://tsocks.sourceforge.net/ [5] http://www.openssh.org/ [6] http://www.chiark.greenend.org.uk/~sgtatham/putty/ [7] https://gaspar.epfl.ch/ [8] http://www.mozilla.org/products/firefox/ [9] http://sourceforge.net/projects/vtun/ [10] http://www.unix-ag.uni-kl.de/~massar/vpnc/ [11] http://network.epfl.ch/contrib/vpnc.html [12] http://icwww.epfl.ch/~poulhies/vpn/ [13] http://www.gnupg.org/ ■ fi 5 – 1er juin 2004 – page 5