FLASH INFORMATIQUE FI



Se connecter à l’EPFL sans client VPN propriétaire de Cisco




Sébastien CEVEY

Marc POULHIES

Cyril JAQUIER


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.

JPEG - 3.5 ko
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. [3]

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+ [4], Putty v0.54+ [5])
• tsocks (pour rendre le tunnel transparent aux applications) [6]. 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.

JPEG - 10.8 ko
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

JPEG - 8.9 ko
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 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 [9] . 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

$ 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 [10] 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 [11] issue de GNUPrivay Guard.

Installation

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 [12] et la décompresser.

$ 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

• compiler vpnc.

$ cd vpnc-0.2-rm+zomb-pre9
$ make
gcc -W -Wall -O -g &#8216;-DVERSION="0.2-rm+zomb-pre9"' -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 [13] 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 [14] 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.

JPEG - 6.3 ko
fig. 4
Communications par VPN

Exemple de fonctionnement

Voici un exemple de fonctionnement de vpnc réalisé depuis le réseau sans-fil de l’EPFL.

# 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.

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 !

[1] https://network.epfl.ch/vpn/cisco_usa.html

[2] http://tremplin.epfl.ch/

[3] http://www.socks.permeo.com/

[4] http://www.openssh.org/

[5] http://www.chiark.greenend.org.uk/ sgtatham/putty/

[6] http://tsocks.sourceforge..net/

[7] https://gaspar.epfl.ch/

[8] http://www.mozilla.org/products/firefox/

[9] http://tsocks.sourceforge.net/

[10] http://sourceforge.net/projects/vtun/

[11] http://www.gnupg.org/

[12] http://www.unix-ag.uni-kl.de/ massar/vpnc/

[13] http://icwww.epfl.ch/ poulhies/vpn/

[14] http://network.epfl.ch/contrib/vpnc.html



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.