VPN Site-to-Site IPsec entre deux Pfsense

  I. Présentation

Un VPN (Virtual Private Network) Site-to-Site (aussi appellé LAN-to-LAN) est un VPN qui permet de joindre deux réseaux de type LAN distants de manière à faire en sorte qu'ils puissent communiquer comme s'ils étaient sur le même réseau et qu'un simple routeur les séparait. On peut trouver ce genre de VPN entre des agences et un siège d'entreprise par exemple. Les agences doivent pouvoir se connecter aux ressources du siège de manière transparente malgré leur distance. On établie alors un VPN au travers Internet afin de joindre les deux réseaux mais également de manière à sécuriser ces flux au travers un chiffrement.

Il existe plusieurs outils et technologies permettant de faire du VPN LAN-to-LAN. On peut par exemple citer OpenVPN que j'ai déjà présenté dans un précédent tutoriel (Installation d'OpenVPN). Nous allons ici travailler avec IPSEC (Internet Protocol Security) qui est un ensemble de protocoles utilisant des algorithmes permettant le transport de données sécurisées sur un réseau. Il se caractérise comme étant un standard ouvert travaillant sur la couche 3 et supportant de multiple algorithmes de chiffrement et d'authentification.

II. Architecture

Pour illustrer la mise en place de notre VPN Site-to-Site entre nos routeurs, nous allons utiliser le pare-feu Pfsense et se baser sur le schéma de test suivant  :

PFIPSEC01

Nous aurons donc une interface WAN (192.168.1.0+24) et LAN (172.16.X.0+24) sur chacun de nos Pfsense, le but final sera donc que les deux clients (172.16.1.10 et 172.16.2.10) puissent communiquer entre eux via ce tunnel. J'effectue ce tutoriel sur des Pfsense version 2.1 et les clients seront des simples machines Debian 7 en CLI. On part donc du principe que les Pfsense et les clients sont déjà en place et que ces derniers ont déjà un accès au WAN via un simple NAT des Pfsense.

III. Mise en place

On commence donc par accéder à l'interface d'administration de notre premier Pfsense (172.16.1.10 dans mon cas). On se rend directement dans le menu "VPN" puis dans "IPsec" :

PFIPSEC02

On va commencer par cocher la case "Enable IPsec" qui se situe dans le cadre puis sur "Save". On va ensuite cliquer sur le "+" pour ajouter une nouvelle configuration IPsec à ce tableau :

PFIPSEC03

On se retrouve alors avec beaucoup d'options, toutes ont leur importance et leur pertinence mais il n'est pas utile de toute les modifier. Nous allons ici nous contenter de faire un VPN simple et fonctionnel, la compréhension, la modification et l'utilisation des différentes options dépend de votre cadre d'utilisation. On commence par remplir l'IP de notre partenaire VPN. Étant sur mon Pfsense 192.168.1.10, je mets l'IP 192.168.1.12. On peut également y mettre une description :

PFIPSEC04

Dans le second cadre qui se nomme "Phase 1 proposal", on va remplir le champ "Pre-Shared Key" et ce parce que le champ "Authentication method" est positionné sur "Mutual PSK", on aurait pu choisir "Mutual RSA" mais cela n'entre pas dans le cadre du tutoriel :

PFIPSEC05

Note : On peut également choisir l'algorithme de chiffrement qui par défaut est 3DES (112 ou 168bits), l'algorithme de hashage qui par défaut est SHA1 et le groupe Diffie Helmann. Pour une simple utilisation, il est possible de laisser ces trois valeurs par défaut.

On fini par cliquer sur "Save" puis sur "Apply changes" sur la page suivante. On va alors cliquer sur le "+" présent en dessous de la première ligne du tableau qui se situe sur la page :

PFIPSEC06

Puis à nouveau sur le "+" au bout de cette nouvelle ligne. On arrive sur une nouvelle page de configuration  sur laquelle nous allons remplir le champ "Remote Network" dans lequel nous allons mettre la plage IP du LAN distant :

PFIPSEC07

A nouveau, il n'est pas nécessaire de modifier les autres paramètres si vous ne savez pas à quoi ils correspondent. On clique sur "Save" puis sur "Apply changes" sur la page suivante. Si on redéveloppe le tableau principal avec le "+", nous aurons quelque chose qui ressemble à cela :

PFIPSEC08png

 

Nous avons donc un résumé de notre configuration VPN. Il faut maintenant effectuer exactement la même configuration du coté de notre deuxième Pfsense en adaptant bien entendu les IP et les plages IP précisées et ne cochant la case "Enable PFsense" uniquement après avoir saisi les configurations.

Sur nos deux routeurs, on va alors aller dans "Firewall" puis "rules" pour aller dans l'onglet "IPsec" et cliquer sur le "+" à droite du tableau pour ajouter une règle qui va autoriser tous les flux à arriver depuis l'interface IPsec (ceci est bien entendu à adapter selon vos besoins) la configuration de votre règle doit ressembler à cela :

PFIPSEC09png

Une fois ces deux configurations faites, on peut attendre une bonne minute que les pare-feu négocient la construction du VPN.

Note : Si comme moi dans le cadre de mon test les réseaux WAN ont des plages IP de réseaux internes (comme ceux définis dans le RFC 1918) veillez bien à décocher la case " Block private networks" dans les pages "Interfaces" > "WAN" des deux routeurs sinon le pare-feu va tout simplement bloquer les paquets arrivant du WAN et ainsi bloquer la négociation du VPN.

 

IV. Test du VPN

Afin de tester le fonctionnement de nos Pfsense, nous pouvons dans un premier temps nous rendre dans la partie "Status" puis "IPsec" :

PFIPSEC10png

L'icône vert dans "Status" indique ici que le VPN est fonctionnel. Vous trouverez également des informations utiles dans "Status" puis "System Logs" et enfin dans l'onglet "IPsec" des deux machines afin de débugger si besoin.

On peut également effectuer un ping entre les deux machines clientes pour vérifier leur bonne communication :

PFIPSEC11png

Notre VPN est donc bien fonctionnel et les deux LAN arrivent désormais à communiquer au travers de notre tunnel IPsec !

 

 

 

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Fondateur d'IT-Connect.fr et d'Information-security.fr. Auditeur sécurité chez Amossys.

    mickael a publié 475 articles sur IT-Connect.See all posts by mickael

    7 réactions sur “VPN Site-to-Site IPsec entre deux Pfsense

    • 20/08/2014 à 12:45
      Permalink

      suis ravi de votre tutoriel,

      imaginons les WAN est de deux FAI différents comment se fera la configuration.

      ex: WAN 1 : 41.207.122.X LAN: 192.168.1.x

      WAN 2 : 172.40.3.X LAN: 192.168.10.x

      merci d’avance

      Répondre
      • 15/03/2015 à 11:57
        Permalink

        vous avez pu trouver une solution pour votre configuration ?

        Répondre
        • 22/12/2016 à 17:21
          Permalink

          Bonjour,

          Je pense qu’il faut passer le routeur du FAI en mode « bridge » et configurer l’adresse IP du WAN (pfsense) manuellement … J’ai pu tester au boulot mais via des machines virtuelles et ce n’est pas possible pour moi d’effectuer la config dont je vous parle au dessus étant donné que nous avons ici un FW Juniper déjà présent.

          à vous d’essayer et de me dire si ça fonctionne ..

          Répondre
      • 21/02/2017 à 15:16
        Permalink

        deja le WAN 2 est une adresse privée et donc ne communiqueras jamais avec la 41.207…

        Répondre
    • 14/04/2015 à 13:01
      Permalink

      Bonjour,
      je viens de finaliser une configuration similaire à la votre avec deux ipcop version 2.
      vpn ipsec site-to-site. Je cherche un client vpn pour établir la connexion en vain. J’ai utilisé shrewSoft vpn client. Mais à ma grande surprise un login et un mot de passe m’est demandé. Ce qui me surprend car je n’ai pas spécifier de login pendant les config. J’ai générer un certificat sur chaque site et j’ai fait connaître les deux serveurs. Le vpn est bien ouvert.

      Répondre
    • 01/06/2015 à 19:22
      Permalink

      Bonjour,

      Très bon article, juste une question, est-il possible de réaliser ce VPN entre deux clusters pfsense, c’est-à-dire que le VPN s’établisse entres deux IPs virtuels ?

      Merci d’avance 🙂

      Répondre

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *