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