IPsec Tools – RoadWarrior Client

Introduction

Dans cette section, nous verrons la configuration de Racoon et plus généralement des IPsec-tools et du client VPN Cisco pour arriver à se connecter sur un concentrateur VPN/IPsec configuré grâce à ce document: RoadWarrior Server.

 

Préliminaires

Plusieurs cas vont se présenter:

  • Sous Linux, il faudra remplir les conditions énoncées dans le document Dépendances Noyau
  • Sous Windows, il suffira d’installer le client VPN Cisco

Attention, le client VPN Cisco n’est pas libre !!! Et pas non plus gratuit il semblerait…

En tous cas, il est dans la section download du site Cisco une fois que l’on est authentifié… je n’ai pas étudié sa licence…

Ne piratez pas les logiciels…. Utilisez des logiciels libres !!!

Pour FreeBSD 6.2, IPsec-tools est dans une version assez récente pour être utilisé dans ce mode de configuration.

Mais il fallait bien un « mais »…. Il y a un patch noyau à mettre pour le support du NAT traversal.

Il se récupère à l’adresse suivante: http://ipsec-tools.sourceforge.net/freebsd6-natt.diff

Puis on l’applique en se mettant dans le répertoire /usr/src/sys avec la commande patch et on recompile son noyau.

Promis un de ces jours, je ferais une doc sur la compilation noyau sur FreeBSD.

Client Linux

Configuration de Racoon

Il sera biensûr nécessaire d’avoir installer les paquets racoon et ipsec-tools.

Il est nécessaire de modifier la MTU de l’interface que l’on utilise pour pour la connexion VPN/IPsec ! Pour cela, utiliser la commande ifconfig ou encore mieux, c’est à mettre dans la configuration pour que cela soit appliqué automatiquement au démarrage ! Une bonne valeur pour la MTU est 1400.

Le fichier de configuration de racoon va fortement ressembler à celui du serveur. Le voici ci-dessous avec ses commentaires.

# Répertoire où sont stockés les certificats
path certificate "/etc/racoon/certs";

# Le socket Unix sur lequel Racoon va écouter pour l'établissement manuel des connexions
# Il appartient à "root" et au group "operator"
listen {
        adminsock "/var/run/racoon/racoon.sock" "root" "operator" 0660;
}

# Définition d'un noeud distant
# L'adresse IP de notre concentrateur VPN
remote 82.238.15.148 {
        # Définition du mode pour la phase 1
        # Doit être à aggressive pour une config roadwarrior
        exchange_mode aggressive;
        # Le certificat du CA qui nous permet de signer le certificat du concentrateur
        # Permet au client de vérifier le certificat du serveur
        ca_type x509 "cacert.pem";
        # Pour que le client soit "esclave" de ce que propose le concentrateur sur les paramètres de la phase 1
        proposal_check obey;
        # On active le NAT traversal avec détection automatique si cela est nécessaire ou non.
        nat_traversal on;
        # workaround pour les firewalls qui posent problème avec les paquets IKE fragmentés.
        ike_frag on;
        # On active le mode cfg pour que Racoon récupère les informations réseau
        mode_cfg on;
        # Les deux scripts qui vont permettre d'ajuster la configuration réseau du PC client 
        # en fonction des informations envoyées par le concentrateur
        # Ils se trouvent tous les deux dans /usr/share/doc/racoon/examples/samples/roadwarrior/client/
        script "/etc/racoon/phase1-up.sh" phase1_up;
        script "/etc/racoon/phase1-down.sh" phase1_down;
        # Proposition pour l'encryption et l'authentification
        proposal {
                # Encryption en AES
                encryption_algorithm aes;
                # hashage en SHA1
                hash_algorithm sha1;
                # le type d'authentification
                authentication_method hybrid_rsa_client;
                # le groupe Diffie-Hellman utilisé
                dh_group 2;
        }
}

# Spécifications pour le SA "anonymous"
# Comme précedement, en roadwarrior on connait pas la source
sainfo anonymous {
        # le groupe Diffie-Hellman utilisé
        pfs_group 2;
        # Durée de vie d'une association
        lifetime time 1 hour;
        # Encryption en AES
        encryption_algorithm aes;
        # Authentification par SHA1
        authentication_algorithm hmac_sha1;
        # Compression activée
        compression_algorithm deflate;
}

Il n’y pas de configuration à faire dans le fichier /etc/ipsec-tools.conf dans la mesure où les « routes ipsec » seront générées dynamiquement.

Il ne faudra pas oublier de mettre le certificat du CA dans le répertoire /etc/racoon/certs/. Si vous avez suivi Création de l’autorité de certification, il se trouve dans le sous répertoire demoCA et le nom du fichier est cacert.pem.

Pour racoon, il va maintenant falloir créer un lien contenant le hash du CA. Il suffit de taper la commande suivante dans le répertoire /etc/racoon/certs/:

# ln -s cacrt.pem `openssl x509 -noout -hash -in cacrt.pem`.0

 

Activer les modifications

il ne reste plus qu’à redémarrer Racoon avec la commande suivante sur une Debian:

# /etc/init.d/racoon restart

 

Etablissement de la connexion

La facon la plus propre de faire est que les utilisateurs qui ont le droit d’établir la connexion soit dans le groupe « operator », celui à qui appartient le socket unix de Racoon.

Ensuite, il ne reste plus qu’à lancer la commande suivante:

$ /usr/sbin/racoonctl vc -u <user_name> <IP du concentrateur>
$ password: <Taper le password correspondant au user_name>
$ Bound to address: 192.168.254.130

La connexion devrait s’établir sans soucis malgré le petit message d’erreur !

Attention, si vous utilisez une interface de type « ppp » au tous autres interfaces qui n’étaient pas configurées au moment du démarrage de Racoon, vous devez vous assurez que Racoon a bien été redémarré après la configuration de l’interface en question sinon Racoon n’écoutera pas sur cette interface et la connexion partira en timeout !

La première utilisation de la connexion après son établissement peut être un peu longue car la phase 2 de IPsec est négociée au moment où cela est nécessaire… la commande racoonctl vc … n’établie que la phase 1.

 

Fin de la connexion

Il suffira de taper la commande suivante avec un utilisateur qui est dans le groupe « operator »:

$ /usr/sbin/racoonctl vd <IP du concentrateur>
$ VPN disconnected

 

Client Windows

Configuration du client

Il suffit de se procurer le client VPN IPsec Cisco. Il faudra ensuite l’installer en utilisant le bouton « suivant » un certain nombre de fois !! 😉

Quand il vous demande de redémarrer le PC, dites non et allez modifier la MTU de l’interface qui sert à la connexion VPN/IPsec. Cela économise un redémarrage !

Une bonne valeur à mettre est 1400.

L’utilitaire pour modifier la MTU se trouve dans le menu démarrer dans le répertoire Cisco VPN client.

Redémarrez l’ordinateur.

Lancer le client VPN Cisco.

Il faudra importer le certificat du CA: cacert.pem. Pour cela cliquez sur « certificates » puis « import ».

Choisir « import from file », choisir le fichier avec « browse » puis cliquez sur « import », il n’y a pas de password.

Cliquez sur New pour créer une nouvelle connexion.

il faudra lui mettre un nom et une description au choix puis mettre le nom ou l’adresse IP du concentrateur VPN.

Choisir « Mutual group authentification » à la place de « Group authentification »

Taper un login et un mot de passe de groupe.

Cela n’est pas utilisé par le concentrateur Linux, mais il le remplir sinon à chaque connexion il le demandera !

Sauvegarder la connexion.

 

Établissement de la connexion

Sélectionnez la connexion dans le client VPN Cisco et cliquez sur « Connect »

Au bout de quelques secondes, la bannière apparait et vous êtes connecté.

 

Fin de la connexion

l y a un petit icône correspondant au client VPN Cisco dans la barre de taches à côté de l’heure, cliquez avec le bouton droit dessus, puis choisissez « Disconnect »

Après quelques secondes, vous êtes déconnecté !

 

TODO

Valider tout cela sur FreeBSD.

 

Mot de la fin

Cette configuration en roadwarrior n’autorise pas le « split tunneling » ce qui veut dire qu’une fois connecté, tout le trafic venant du PC client vers un autre réseau que son réseau local passe par la connexion VPN…

Donc par exemple, pour surfer sur Internet, les requêtes passent par la connexion VPN et sortent par la ligne Internet associée au concentrateur VPN et les réponses passent donc par le même chemin en inverse !

Attention donc à une éventuelle saturation de ligne Internet du côté du concentrateur VPN.

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s