Un VPN site à site est une connexion sécurisée et cryptée qui permet de relier deux réseaux locaux distincts à travers Internet, comme si ils étaient sur le même réseau local. Cette connexion permet à des machines situées sur des réseaux différents de communiquer entre elles de manière sécurisée.

Exemple simple :

  1. Vous avez deux machines Ubuntu, Ubuntu 1 et Ubuntu 2, situées sur deux réseaux locaux différents.
  2. Chaque réseau local est protégé par une machine PFsense qui sert de routeur et de pare-feu.
  3. Vous souhaitez que Ubuntu 1 et Ubuntu 2 puissent communiquer entre elles de manière sécurisée, comme si elles étaient sur le même réseau local.

Pour cela, vous allez configurer un VPN site à site entre les deux machines PFsense en utilisant la fonctionnalité IPSec.

IPSec va permettre de chiffrer et sécuriser les données qui transitent entre les deux réseaux locaux à travers Internet. Une fois la connexion VPN établie, Ubuntu 1 pourra communiquer avec Ubuntu 2 de manière sécurisée, comme si elles étaient sur le même réseau local.

IPSeco ? Kézaco ?

IPSec, qui signifie « Internet Protocol Security« , est un ensemble de protocoles utilisés pour sécuriser les communications Internet en authentifiant et en chiffrant chaque paquet d’une session de communication. IPSec peut être utilisé pour protéger des flux de données entre un couple d’hôtes (mode transport), entre un couple de réseaux (mode tunnel), ou entre un hôte et un réseau.

IPSec utilise les méthodes suivantes pour sécuriser les communications :

  1. Authentification : Elle garantit que les données ont bien été envoyées par la source revendiquée, et qu’elles n’ont pas été altérées pendant le transfert. IPSec utilise des algorithmes de hachage (comme SHA-1, SHA-256) pour réaliser l’authentification.
  2. Confidentialité : Elle assure que les données ne peuvent pas être lues par des tiers non autorisés. Pour cela, IPSec utilise des algorithmes de chiffrement (comme AES, 3DES) pour rendre les données illisibles sans la clé de déchiffrement appropriée.
  3. Intégrité : Elle assure que les données n’ont pas été modifiées pendant leur transfert. IPSec utilise également des algorithmes de hachage pour vérifier l’intégrité des données.
  4. Anti-rejeu : Cette fonctionnalité empêche les attaques de type « replay » où un attaquant intercepte et retransmet des paquets pour tenter de tromper le destinataire.

Le fonctionnement d’IPSec implique l’établissement de SAs (Security Associations) qui sont des ensembles de paramètres de sécurité partagés utilisés pour sécuriser les communications.

Installation / mise en place du lab de test

  • Une machine sur Ubuntu (Ubuntu 1) qui sera connectée au Lan1 avec l’adresse IP 192.168.1.100
  • Une machine sous PFsense (PFsense 1) dont le WAN sera connecté à un réseau NAT custom (SiteToSiteVPN) en 10.0.2.4 (en gardant le DHCP actif sous virtualbox cette adresse peut varier) et le LAN au réseau Lan1 avec l’IP 192.168.1.1
  • Une machine sur Ubuntu (Ubuntu 2) qui sera connectée au Lan2 avec l’adresse IP 172.16.1.100
  • Une machine sous Pfsense (PFsense 2) dont l’interface WAN sera connectée au réseau NAT custom (SiteToSiteVPN) en 10.0.2.5 et son interface LAN au réseau Lan2 avec l’adresse IP 172.16.1.0

Etape 1 : Installation de PFsense & Ubuntu sur les différentes VM

Pas besoin d’entrer dans les détails : PFsense s’installe assez facilement en suivant le mode guidé, et Ubuntu… Ben c’est Ubuntu quoi ! :-))

Configuration de PFsense :

Voici une capture d’écran de la config du PFsense 1 comme indiqué plus haut :

Et PFsense 2 :

Ubuntu 1 :

Et Ubuntu 2 :

Paramétrage du tunnel et du Firewall sous PFsense 1

Dans « VPN -> IPSec »

Voilà la config détaillée de la phase 1 (en indiquant l’interface qui se trouve de l’autre côté du tunnel ^^) :

Attention à bien définir une clé sécurisée dans le champ « Pre-shared Key » qui devra être la même sur PFSense 2

Voici la config détaillée de la phase 2 (qui indique vers quel réseau local on va se diriger) :

Configuration du Firewall pour laisser passer un test de ping (on va tout mettre en open bar pour le test, mais penser à créer des restrictions par la suite)

Rdv dans « Firewall » -> « Rules » -> « IPSec »

Paramétrage du tunnel et du Firewall sous PFsense 2

On fait les mêmes manips mais en renseignant les adresses de PFsense 1 et du réseau local qui lui est lié

Ne pas oublier de mettre la même clé dans « Pre-Shared Key » qu’auparavant !!

Idem pour les règles de Firewall :

Activation du Tunnel

Aller dans « Status » -> « IP Sec » et cliquer sur « Connect P1 et P2 ». La connexion devrait se faire sur les 2 interfaces directement :

Contrôle / Ping de test

Sur la machine Ubuntu 1 (qui est en 192.168.1.0) on peut faire un ping vers la machine Ubuntu 2 (en 172.16.1.0).

Et voilà, vous avez paramétré un VPN « Site à site » entre 2 réseaux qui ne sont pas directement reliés, grâce à PFsense et sa fonction de tunneling via IPSec.

En conclusion, IPSec est un ensemble robuste de protocoles qui permet de sécuriser les communications Internet en authentifiant, chiffrant, et en assurant l’intégrité et l’anti-rejeu des données.