Un VPN « client to site » (ou « remote access VPN ») est une méthode qui permet à un utilisateur distant de se connecter à un réseau privé via Internet, comme s’il était physiquement présent sur le réseau. Cela permet aux utilisateurs de travailler à distance tout en ayant accès aux ressources et services du réseau privé, comme si elles étaient sur place. Les communications entre le client et le site sont cryptées, ce qui protège les données échangées des regards indiscrets.

Voici un résumé de la configuration à mettre en place sur PFsense et sur la machine cliente

Infrastructure de base

  • Utilisation de Virtualbox pour le lab
  • Une VM qui héberge PFSense avec un WAN dans un réseau NAT customisé en 10.0.2.0/24 et un LAN interne connecté au serveur sur lequel le client voudra se connecter via le VPN
  • Une VM sous Ubuntu qui simulera le poste client (connecté au réseau NAT « NATVPN-Nomade ». Son adresse IP sera attribuée par DHCP.
  • Une VM qui héberge un serveur web qui sera accessible depuis le VPN de la machine « cliente ». Il se situera dans le réseau LanWebServer

Configuration des interfaces de PFSense

Voici la fenêtre de configuration de PFSense avec ses interfaces :

Pour gérer la configuration de PFSense on va devoir se connecter à son interface web depuis son adresse LAN sur le serveur Web.

Suivre les différentes étapes de la première configuration, puis modifier le mot de passe administrateur (cf tuto précédent sur la configuration d’un VPN site to site)

Création des certificats serveur

Ensuite rdv dans VPN -> Open VPN -> Wizards

Cliquer sur « Next »
Remplir les infos du certificat

Puis remplir les différentes infos de façon à avoir ces paramètres :

Dans les grandes lignes :

  • On commence par configurer les options d’encryption
  • Ensuite on définit les paramètres du tunnel en choisissant la plage d’adresse IP que le VPN crééra (exemple 172.31.10.0/24) et en indiquant le réseau qui sera accessible depuis ce tunnel (ici 192.168.1.0/24)

A l’étape suivante on peut demander la création automatique des règles de firewall qui s’appliqueront au tunnel :

Au final le résumé du serveur OpenVPN devrait ressembler à ça :

Pour voir les certificats du serveur, rdv dans System -> Certificates

Et les règles appliquées automatiquement au pare-feu :

En gros ici tous les utilisateurs peuvent accéder au port 1194 défini précédemment.

Idem, dans l’onglet « Firewall » -> « OpenVPN » on voit une règle créée dédiée au VPN en lui même qui autorise les accès à tout le monde :

Création des certificats utilisateurs

Maintenant il faut passer à la création des certificats utilisateurs qui seront installés sur les machines nomades. Aller dans « System » -> « User Manager » et cocher « Click to create a user certificate » (et ne pas oublier de lui attribuer un mot de passe !)

Puis créer le certificat

Ensuite, il va falloir exporter les certificats.

Mais par défaut PFsense ne le permet pas, il faut installer un package via « System » -> « Package Manager » et chercher « OpenVPN Client Export » puis l’installer :

Ensuite rdv dans « VPN » -> « Open VPN » -> « Client Export »

Un peu plus bas on va pouvoir récupérer le certificat « nomad-user » :

Pour l’installer sous Ubuntu il suffit de choisir « Most Clients »

Récupérer le certificat

Pour se connecter au PFsense depuis la machine « nomade » on va créer une règle temporaire dans le firewall :

Dans « Rules » onglet « WAN » on ajoute une règle qui permet aux machines d’accéder à Pfense via le protocole HTTPS:

Ensuite sur la machine Ubuntu nomade on va pouvoir aller dans « VPN » -> « OpenVPN » -> « Client Export » et récupérer le certificat :

Le fichier arrive dans le dossier téléchargements :

On lance un terminal depuis ce dossier téléchargement avec la commande

sudo openvpn pfSense-UDP4-1194-nomad-user-config.ovpn

Et on s’authentifie avec le login et pass de l’utilisateur créé sur PFsense :

Ensuite pour vérifier la bonne connexion on peut ouvrir une autre fenêtre de terminal et faire un ip a pour constater la bonne attribution de l’IP du VPN :

Désormais on peut communiquer avec le réseau local sur lequel se trouve le serveur web :

Ne pas oublier de fermer l’accès extérieur à PFSense en supprimant la règle WAN créé pour récupérer le certificat

Avec Windows

Sous Windows la procédure est plus simple :

  • Il suffit d’installer de récupérer le fichier du certificat dédié à Windows
  • Double-cliquer sur le certificat dans Windows pour installer la configuration
  • Enfin, via l’icône d’OpenVPN, faire un clic droit « se connecter » et utiliser les identifiants de l’utilisateur pour se connecter au tunnel

Un message indique qu’on est bien connectés :

Et on peut donc se rendre sur le serveur web :

Un petit ipconfig /all permet de vérifier la bonne attribution de l’adresse du VPN :

Et voilà, désormais on peut se connecter au serveur via un VPN depuis n’importe quel réseau extérieur !