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.