VPN sous linux

Dernière mise à jour : 02/05/2002

    Je vais tenter de d√©crire dans cet article la m√©thode pour faire une connection VPN des plus efficaces entre deux plateformes linux. L'une d'entre elle est votre Gateway (au travail) et l'autre peut etre toute machine ayant une connection √† internet. La premi√®re partie de cet article d√©crit la m√©thode dite du 'shared-secret', il s'agit d'une phrase qui vous permet de reconna√ģtre deux machines entre elles. Voyons tout d'abord les liens avec le code n√©cessaire :
Freeswan - Serveur

    Pour installer correctement Freeswan, vous allez devoir recompiler le kernel. Si vous utilisez un kernel que vous avez d√©j√† compil√©, c'est parfait, passez directement √† la seconde partie. Si vous utilisez un nouveau kernel, assurez-vous qu'il compile avec toutes vos optimisations, c'est primordial avant m√™me d'installer Freeswan. Nous allons commencer par le serveur.

    Freeswan utilise IPSec. Tout ce que vous avez besoin de faire est de d√©compacter quelque part le patch dont le lien est en d√©but de cette page et taper : make menugo. Freeswan lance alors le make menu du kernel, sauvez et le script commence la compilation du kernel. Recopiez alors le kernel une fois termin√© en utilisant lilo ou grub et fa√ģtes un make install toujours √† partir du r√©pertoire Freeswan, celui-ci va cr√©er les binaires ipsec et les script init n√©cessaires au d√©marrage d'IPSec. Red√©marrez ensuite votre linux avec le nouveau kernel.

    Pour vous assurer que tout s'est bien pass√©, apr√®s red√©marrage, tapez : dmesg |grep -i ipsec. S'il ne retourne rien, vous avez fait une erreur quelque part, mauvais kernel ou compilation rat√©e, recommencez. Sinon, le code Freeswan 1.92 devrait s'afficher, indiquant que la machine est pr√™te.

    Editez ensuite votre /etc/ipsec.conf et rajoutez ceci :
    Il ne vous reste ensuite qu'√† rajouter la ligne suivante dans votre /etc/ipsec.secrets :
    Cette phrase doit correspondre sur le client et le serveur, assurez-vous qu'elle soit suffisemment s√©curis√©e et qu'elle contient des chiffres et des majuscules. Fa√ģtes ensuite un : chmod 600 /etc/ipsec.secrets. Cette m√©thode est bien s√Ľr conseill√©e uniquement pour la connection d'une machine mais pas de plusieurs. Lorsque tout vous semble bon, d√©marrez (ou red√©marrez) script init : ipsec. Pour v√©rifier que tout va bien, tapez : ipsec whack --status.


Freeswan - Client

    Pour le client, reprenez l'√©tape du serveur pour la compilation du serveur et l'installation du patch. Une fois cette √©tape finie, il ne vous reste qu'√† rajouter ceci dans votre /etc/ipsec.conf :
    Comme vous le remarquez, √† part la ligne 'left', tout le reste est identique √† la configuration de votre serveur. Rajouter √©galement la m√™me ligne dans votre /etc/ipsec.secrets. Encore une fois, fa√ģtes un chmod 600 /etc/ipsec.secrets afin de prot√©ger la cl√© le mieux possible.

    Il est temps de connecter votre client, pour se faire, d√©marrez votre connection internet et red√©marrez ensuite le script init ipsec. V√©rifiez que tout va bien par la commande : ipsec whack --statusw. S'il ne retourne aucune erreur, il est temps d'activer le tunnel : ipsec --auto up shared-1. Comme vous le remarquez, la ligne de commande prends en param√®tre le nom de la connection d√©finie dans votre ipsec.conf

    Essayez de faire un ping vers une machine √† l'int√©rieur du r√©seau et si elle r√©pond c'est gagn√© ! Mettez √† jour votre /etc/hosts pour rentrer les noms intranet dont vous avez besoin et bon surf !

Freeswan avec Windows, Linux et X509

    Je tiens √† remercier Sylvain Boily pour l'envoi de ce document que je colle tel quel dans cette section car je n'ai toujours pas eu le temps de compl√©ter cet article.

    Avant toute chose, il faut v√©rifier que vous avez bien tout les utilitaires suivants :

Installation de Freeswan sous linux

    Il faut d√©compresser les deux packages r√©cup√©r√©s, le patch X509 et freeswan-1.97, puis copier le freeswan.diff dans le r√©pertoire freeswan-1.97.

    Puis un make menugo, on configure le kernel on fait un exit. Puis une fois la compilation fini, un make kinstall, par pr√©caution je copie mon nouveau kernel dans /boot puis lilo et redemarrage du PC. Dans le dmesg on doit avoir freeswan 1.97. Une fois freeswan install√© on va faire le certificat.

    G√©n√©ration Certificat ROOT :

    Premi√®re chose √† faire est de cr√©er un certificat root, avec la commande suivante : ( sous debian ). Avant toute chose nous allons changer quelques valeurs. Dans le /etc/ssl/openssl.cnf on va changer le 1024 en 2048 et le 365 en 3650, de 1 an √† 10 ans.

    Apr√®s cette partie, vous avez g√©n√©r√© les certificats, il ne reste plus qu'√† faire quelques manipulations :

    Assurez vous de bien enlever les lignes de -----BEGIN CERTIFICATE REQUEST----- jusqu'√† la fin. Il faut maintenant cr√©er les r√©pertoires :

    Copie des fichiers au bon endroit :

    Une fois toutes les clefs mise en place on va √©diter le fichier de config ipsec.secrets, mettre :

    Changez ensuite les permissions sur le fichier par la commande : chmod 600 /etc/ipsec.secrets. Editez par la suite le fichier ipsec.conf et entrez les param√®tres suivants :

    Il ne reste plus qu'√† v√©rifier la configuration que l'on a mis en place par les commandes suivantes :

    Pour configurer un client, vous n'avez pas besoin de g√©n√©rer un certificat ROOT, tout le reste est par contre √† reproduire. Vous replacer ensuite sur la machine serveur et faire les commandes suivantes :

    Ne pas oublier d'enlever les lignes suivantes : -----BEGIN CERTIFICATE REQUEST-----. Vous devez ensuite √©ditez le fichier de configuration du client (/etc/ipsec.conf) et copier plus ou moins ce qui suit :

    Une fois le fichier de configuration mis en place faire :

    Et l√† vous √™tes connect√© normalement ;-) Faire un ping afin de v√©rifier.

Clients sous Windows


    N'oubliez pas d'enlever les lignes -----BEGIN CERTIFICATE REQUEST----- jusqu'√† la fin. Afin de pouvoir mettre le certificat sous windows il faut faire un p12, gr√Ęce aux commandes suivantes :

    La syntaxe du ipsec.conf de windows :

    Enfin, voici quelques sources qui ont servies √† faire ce document :

C'est fini ?

    Comme promis, j'ai rajout√© la section sur la g√©n√©ration de certificats X.509 bien que je sois pas l'auteur de la proc√©dure, je remercie donc encore une fois Sylvain pour avoir partag√© son exp√©rience et m'avoir permis de publier l'article.