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.).
Installation
Installez le paquet vpnc en cliquant sur le lien
Conversion d'un profil Cisco Systems® en profil Vpnc
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>
host ADRESSE_DU_SITE_WEB
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".
Configuration du Client VPN Vpnc
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/
Lancement du Client VPN 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 ! 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.
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, …