Ceci est une ancienne révision du document !



VPNC ou « libérer » sa connexion VPN Cisco Systems®

On peut déjà constater l'usage par des étudiants et des universitaires d'un client VPN Libre compatible avec le Client VPN Cisco Systems® : le Client VPN Vpnc.

Comparé au client VPN Cisco Systems®, la procédure d'installation est plus simple. Mais l'avantage principal réside dans le fait que la connexion VPN reste fonctionnelle même après les mises à jour du noyau système, contrairement au Client VPN Cisco Systems®.

À titre d'information, nous décrivons une procédure générique pour Debian/Ubuntu issue de diverses sources disponibles sur Internet (sites Web d'universités, forums, blogs, etc.).

Installez le paquet vpnc en cliquant sur le lien

Le poste étant connecté à Internet, on place le fichier-profil Cisco Systems® avec l'extension « .pcf » correspondant au fournisseur de réseau VPN dans son Dossier personnel (le répertoire /home/NOM_DE_L'UTILISATEUR ). Puis on lance un terminal et on tape :

/usr/share/vpnc/pcf2vpnc NOM_DU_PROFIL_CISCO.pcf

Le résultat ressemble a ceci :

## generated by pcf2vpnc
IPSec ID XXXXX
IPSec gateway XXX.XXX.XXX.XXX
IPSec secret XXXXXXXX

IKE Authmode psk

## To add your username and password,
## use the following lines:
# Xauth username <your username>
# Xauth password <your password>
Parfois, la ligne IPSec gateway est donné en adresse du site Web (avec des lettres), si ca ne marche pas, on la convertit alors en adresse IP en ouvrant un Terminal puis en tapant (connexion Internet requise…) :
host ADRESSE_DU_SITE_WEB
En décommentant (enlever le symbol #) les lignes Xauth et en remplaçant <your username> par votre identifiant et <your password> par votre mot de passe vous n'aurez plus à les saisir à chaque connexion, mais cela constitue aussi un trou de sécurité (car ils apparaissent "en clair" sur votre ordinateur et uniquement protégé par votre mot de passe administrateur pour les visualiser. S'ils servent à d'autres accès VPN plus sensibles qu'une connexion Internet, c'est potentiellement dangereux. Sécurité ou ergonomie : au choix de chacun.

On sauvegarde le résultat dans un fichier texte simple en lui rajoutant une extension « .conf » : le profil Vpnc est créé.

Pour la suite de ce tutoriel, nous nommerons ce fichier "vpn.conf".

On place en tant que superutilisateur le fichier-profil « vpn.conf » dans le répertoire « /etc/vpnc/ ».

Une commande dans un Terminal permet de copier simplement le fichier vpn.conf depuis son Dossier personnel (le répertoire /home/NOM_DE_L'UTILISATEUR ).

sudo cp vpn.conf /etc/vpnc/

Connexion Manuelle

Le client Vpnc peut être lancé en tapant ces lignes dans un Terminal :

  • connexion :
    sudo vpnc-connect vpn.conf

    (On remarquera que l'extension .conf n'est pas obligatoire )

  • déconnexion :
    sudo vpnc-disconnect

Connexion "clic-clic"

On crée un Lanceur-raccourcis en cliquant avec le bouton droit de la souris sur le bureau puis « Créer un Lanceur » puis en entrant comme commande :

gksudo "xterm -e vpnc-connect --no-detach vpn.conf"

Quand on clique sur le lanceur-raccourcis une demande de mot de passe super-utilisateur apparait puis un Terminal avec les demandes d'identifiant et mot de passe VPN (le mot de passe ne s'affiche pas quand on le tape, c'est normal). Valider à chaque fois en tapant sur Entrée. La connexion est établie si la phrase "VPNC started in foreground…" s'affiche et elle se termine si l'on ferme la fenêtre du Terminal.

Connexion "clic-clic intelligent"

Cette solution permet de lancer une déconnexion avant de relancer une nouvelle connexion, notamment utile si votre débit est faible et que la connexion est instable. Bien sûr vous pouvez ajouter d'autres commandes dans ce script.

On crée un dossier vpn et le fichier de connexion dans le répertoire home:

mkdir ~/vpn && touch ~/vpn/vpn.sh

Ensuite on remplis le fichier texte contenant les commandes :

echo -e 'vpnc-disconnect\nxterm -e vpnc-connect vpn.conf\n' | tee ~/vpn/vpn.sh

pour voir le résultat :

cat ~/vpn/vpn.sh

Puis on crée un Lanceur-raccourcis en cliquant avec le bouton droit de la souris sur le bureau puis « Créer un Lanceur » puis en entrant comme commande :

gksudo bash /home/NOM_DE_VOTRE_SESSION/vpn/vpn.sh

(gksudo est remplacé par kdesu si on est sous KDE)

Connexion via Network Manager

On utilise Kvpnc ou l'extension VPN de Network-manager.⇒ Tutoriel à faire ! FIXME NB : cette dernière solution peut ne pas fonctionner avec certains systèmes et pilotes de cartes WIFI.

Probleme de connexion

Il se peut que le logiciel vpnc demande deux mots de passe :

root@pc:/etc/vpnc# vpnc-connect vpn.conf 
Enter username for xxx.xxx.xxx.xxx: xxxx
Enter password for xxxx@xxx.xxx.xxx.xxx: 
Password for VPN xxxx@xxx.xxx.xxx.xxx: 
Password for VPN xxxx@xxx.xxx.xxx.xxx: 
vpnc-connect: authentication unsuccessful

Ceci veut dire que vous avez fait une erreur dans votre login ou mot de passe.

Problèmes avec firestarter

L'interface graphique de firestarter ne permet pas d'autoriser les flux lorsque vpnc est lancé. Il faut modifier le fichier /etc/firestarter/user-pre pour qu'il contienne les commandes iptables suivantes:

iptables -A INPUT -j ACCEPT -s w.x.y.z -p esp
iptables -A INPUT -j ACCEPT -s w.x.y.z -p udp -m multiport -sports isakmp, 10000
iptables -A INPUT -j ACCEPT -i tun+
iptables -A OUTPUT -j ACCEPT -d w.x.y.z -p esp
iptables -A OUTPUT -j ACCEPT -s w.x.y.z -p udp -m multiport -sports isakmp, 10000
iptables -A OUTPUT -j ACCEPT -o tun+

il faut remplacer w.x.y.z par l'adresse IP de votre passerelle IPSEC. Il faut autoriser le protocole esp (données encryptées) dans les 2 sens. Il faut autoriser IKE (isakmp) dans le sens PC→passerelle. Certaines configurations de passerelles utilisent le port UDP/10000 pour encapsuler le flux ESP. Au lancement de firestarter, ces commandes sont prises en compte, et les connexions IPSEC sont autorisées.

Connexion à l'ouverture de session

Dans un cas courant, il peut être utile de se connecter automatiquement à l'ouverture de la session utilisateur de la machine (en supposant que l'interface réseau est déjà initialisée). Pour atteindre cet objectif, une des solution consiste à créer un petit programme qui sera exécuté en root par l'utilisation du bit setuid. Son rôle est de placer aussi l'EUID, le GID et l'EGID à 0 (root), de sorte à pouvoir lancer vpnc à partir de l'espace utilisateur.

Attention : ce programme sera exécuté en root, ne pas l'utiliser sans prendre toutes les précautions nécessaires

Le code source du programme, baptisé usvpnc pour l'occasion (User-Space vpnc), est le suivant :

/*******************************************************************************
 *
 * Lanceur du client VPN Cisco vpnc en user-space
 * Les options en ligne de commande sont passees directement a vpnc
 *
 * Le binaire resultant de la compilation de ce code doit appartenir a
 * l'utilisateur root et avoir son bit setuid a 1.
 *
 * == Rappels ==
 * 
 * Pour compiler:                      gcc -Wall -o usvpnc usvpnc.c
 *
 * Pour changer les droits: (en root)  chown root:root usvpnc
 *                                     chmod u+s usvpnc
 *
 * Il est ensuite possible de placer l'executable dans /usr/sbin (pour faire
 * plus propre), puis de l'ajouter dans Systeme->Preferences->Session (sous
 * Gnome).
 * 
 ******************************************************************************/

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main(int argc, char **argv)
{
	// UID est deja a 0 (=root) avec le bit setuid sur le binaire
	
	// placement de UID, GID et EGID a 0 aussi
	setuid(0);
	setgid(0);
	setegid(0);
	
	// positionnement de argv[0] a la valeur "vpnc"
	argv[0] = "vpnc";
	
	// execution de vpnc
	execvp("vpnc", argv);
	
	// execute si le exec() s'est mal termine
	fprintf(stderr, "Impossible d'executer vpnc\n");
	
	return EXIT_FAILURE;
}

Copiez ce code dans un fichier usvpnc.c et compilez le avec la commande :

gcc -Wall -o usvpnc usvpnc.c

Passez ensuite dans un terminal root et placez les droits adaptés sur le fichier :

chown root:root usvpnc
chmod u=rws,g=rx,o=rx usvpnc

Au passage, vous pouvez le copier dans un des répertoires standard :

cp usvpnc /usr/local/sbin

Et voila ! Vous pouvez désormais utiliser la commande usvpnc à partir d'un terminal utilisateur (non administrateur) avec les même arguments que la commande vpnc (ils sont passés de manière transparente). Une des utilisations possible est de configurer Gnome pour lancer la connexion VPN automatiquement au démarrage de la session (Système→Préférences→Session) :


Contributeurs : andatiep, NerOlph, Mike17, wsmind, guigouz, …

  • vpnc.1222204029.txt.gz
  • Dernière modification: Le 18/04/2011, 14:38
  • (modification externe)