{{tag>réseau sécurité vpn}}
----
====== 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® : [[https://www.unix-ag.uni-kl.de/~massar/vpnc/|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 =====
[[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **vpnc** [[apt://vpnc|{{apt.png}}]]
Pour utiliser l'interface graphique dans les paramètres de gnome installez également **network-manager-vpnc-gnome** [[apt://network-manager-vpnc-gnome|{{apt.png}}]]
===== Création du fichier de conf =====
Votre administrateur vous a peut-être fournis les infos qui composent le
IPSec gateway
IPSec ID
IPSec secret
Xauth username
Xauth password
puis [[vpnc#configuration_du_client_vpn_vpnc]]
===== 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
Si vous avez comme retour 'bash: usr/share/vpnc/pcf2vpnc: Aucun fichier ou dossier de ce type', essayez cette commande
/usr/bin/pcf2vpnc 'Chemin/et/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
# Xauth password
Parfois, la ligne IPSec gateway est donné en adresse du site Web (avec des lettres), si ça 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 symbole #) les lignes Xauth et en remplaçant par votre identifiant et 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".//
Avec les versions récentes de vpnc, si vous avez le message:
vpnc: no response from target
vous pouvez améliorer vos chances de connexion en ajoutant :
NAT Traversal Mode cisco-udp
à la fin du fichier vpn.conf
===== Configuration du Client VPN Vpnc =====
[[:sudo|On place en tant que super-utilisateur]] 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 vpn.conf
(On remarquera que l'extension .conf n'est pas obligatoire ).
* De plus si vous créez un lien symbolique "**''/etc/vpnc/default.conf''**" qui pointe vers votre fichier "**''vpn.conf''**", alors pour se connecter il suffira de taper:
* sudo vpnc
* 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** apparaît 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 remplit 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 - DRAFT ====
On utilise Kvpnc ou l'extension VPN de Network-manager (#aptitude install network-manager-vpnc)
NB : cette dernière solution peut ne pas fonctionner avec certains systèmes et pilotes de cartes WIFI.
Après avoir installé vpnc et converti le profil Cisco System®, ouvrir le **Network-manager** et aller dans l'onglet **vpn**.
On a uniquement besoin des informations données dans le terminal, l'étape de sauvegarde n'est donc pas nécessaire.
Toutes ces informations sont aussi dans le fichier *.pcf, mais sous des noms différents.
Cliquer sur **Ajouter**
{{:02-bis.png|}}
Dans le menu déroulant choisir //VPN Compatible Cisco (vpnc)//
Enter un nom voulu pour la connexion vpn et compléter en utilisant les informations récoltées dans le terminal :
{{:06.png|}}
Dans le second onglet, **Paramètre IPv4**, sous //ID client DHCP//, entrer : dh2
Clquer sur **Valider** et c'est configuré.
Pour se connecter, il suffit d'un petit clic gauche sur l'icône de connexion, et choisir la connexion vpn fraîchement configurée.
Par défaut, le network manager **efface** les mots de passe, il faudra soit les entrer à chaque tentative de connexion, soit les sauvegarder dans le trousseau.
Si vous obtenez le message "Pas de secrets VPN valides" et que vous utilisez une connexion de type VPNC vous devez patcher le fichier de configuration du network-manager (dans /etc/dbus-1/system.d/) avec le fichier suivant et redémarrer NetworkManager (sudo pkill -9 NetworkManager puis sudo NetworkManager) --- nm-vpnc-service.conf.fixed 2009-04-18 17:56:45.000000000 -0500
+++ nm-vpnc-service.conf 2009-04-18 17:57:37.000000000 -0500
@@ -6,6 +6,10 @@
+
+
+
+
Si la connexion échoue, c'est que les paramètres //Méthode de chiffrement// et/ou //Traversée du NAT// ne sont pas configurés correctement.
Le plus simple est d'utiliser le protocole de connexion manuelle, suivant l'erreur retournée, on peut déterminer ces paramètres.
vpnc-connect: peer selected (single) DES as "encrytion" method.
This algorithm is considered to weak today
If your vpn concentrator admin still insists on using DES
use the "--enable-1des" option.
Utiliser l'option //Faible// dans //Méthode de chiffrement//
use the "--enable-no-encryption" option.
Utiliser l'option //Aucun// dans //Méthode de chiffrement//
use the "--natt-mode cisco-udp" option.
Utiliser l'option //UDP Cisco// dans //Traversée du NAT//
use the "--natt-mode none" option.
Utiliser l'option //Désactivé// dans //Traversée du NAT//
Tous ces paramètres sont aussi dans le fichier *.pcf, mais certains (tels le **mot de passe groupe**) sont cryptés.
==== Problème de connexion: Deux mots de passe demandes ====
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.
Exemple d'erreur (un peu tordue) de login :
Sur un domaine Windows, il faut parfois écrire dans le fichier de conf.
Xauth username nom_du_domaine\utilisateur
au lieu et place de
Xauth username utilisateur
Domain nom_du_domaine
==== 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 -d w.x.y.z -p udp -m multiport --dports 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 solutions 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'exécutable dans /usr/sbin (pour faire
* plus propre), puis de l'ajouter dans Système->Préférences->Session (sous
* Gnome).
*
******************************************************************************/
#include
#include
#include
#include
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 ouvrez un terminal.
Si vous n'avez pas le paquet build-essential, installez-le : [[apt://build-essential|{{apt.png}}]]. Puis, placez vous dans le répertoire ou vous avez créé usvpnc.c et compilez-le avec la commande suivante :
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
chmod u=rws,g=rx,o=rx /usr/local/sbin/usvpnc
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->Ajouter) :
{{:usvpnc-gnome.png|}}
----
//Contributeurs : andatiep, NerOlph, Mike17, wsmind, guigouz, ...//