OPNsense : Configuration d’un VPN SSL Road Warrior avec PKI

OPNsense : Configuration d’un VPN SSL Road Warrior avec PKI

Table of Content

Le but de cette documentation va être de configurer un serveur VPN dit SSL Road Warrior sur OPNsense (Un PFsense en mieux et totalement opensource :P). Les clients VPN pourront accéder à des ressources sur le réseau LAN distant de façon sécurisé.

Le serveur VPN sera OpenVPN et celui-ci sera configuré de façon à accepter les connexions sur le port HTTPS (TCP 443). De cette façon, l'accès pourra se faire de n'importe où car ce port n'est pas (ou très très très rarement) filtré sur une connexion standard à Internet.

Une autorité de certification sera créé pour délivrer un certificat afin de sécuriser les échanges.

Un exemple de configuration d'un client sous Windows 10 est traité à la fin.

Let's go !!!

Contexte

Voici la version utilisée d'OPNsense :

  • OPNsense 22.1.2_2-amd64
  • FreeBSD 13.0-STABLE
  • OpenSSL 1.1.1m 14 Dec 2021

Au niveau des interfaces de paramétrées :

  • LAN = 192.168.56.254/24
  • WAN = IP_PUBLIC

Aucune configuration particulière à été apportée après l'installation d'OPNsense à part l'adressage IP des interfaces WAN et LAN.

Tout le paramétrage sera à réaliser à travers l'interface web d'administration d'OPNsense.

PKI

Création de l'authorité de certification

  • Dans System (1), Trust (2), Authorities (3), cliquer sur + (4) pour ajouter une authorité de certification :

    image-20220712200137330

  • Sélectionner Create an internal Certificate Authority :

    image-20220712200934152

Je ne vais pas traiter la partie algorithme ni de type ou de longueur de clef. Je laisse les paramètres par défaut mais dans un contexte de production, il sera important de modifier ces différents paramètres.

  • Entrer une Descriptive name ainsi que le Common Name et les informations désirées.

  • Enregistrer la nouvelle authorité de certification :

    image-20220712201557684

Génération du certificat serveur

  • Dans Certificates (1), cliquer sur + (2) pour ajouter un nouveau certificat :

    image-20220712202909916

  • Sélectionner Create an internal Certificate :

    image-20220712212614382

Même remarque que précédement concernant la partie algorithme, clef...

  • Entrer une Descriptive name. Sélectionner le bon Certificate authority et le type Server Certificate.

  • Les informations provenant de l'authorité de certification doivent être pré-remplies.

  • Renseigner le Common Name :

    image-20220712204003467

  • Enregistrer le nouveau certificat :

    image-20220712204333253

OpenVPN

  • Dans VPN (1), OpenVPN (2), Servers (3), cliquer sur l'icône du Wizard (4) :

    image-20220712202051739

En passant par le wizard, il y aura la possibilité de créer automatiquement les 2 règles nécessaires pour autoriser le flux provenant des clients VPN.Sinon, il faudra les ajouter à la main, ça fonctionne très bien aussi.

  • Type de serveur d'authentification : Local User Access

  • Authorité de certification : OPNsense-CA

  • Certificat : OPNsense-VPN-Cert

  • Dans la partie General OpenVPN Server Information, renseigner les paramètres suivants :

    image-20220712205028162

  • Les clients se connecteront sur l'interface WAN d'OPNsense par le protocol TCP sur le port 443. Par défaut OpenVPN écoute sur le port 1194 en UDP. Pour que la connexion soit possible depuis n'importe quel réseau Internet, il faut bien modifier ce paramètre. C'est quasiment indétectablement par les pare-feux pour faire la différence avec du flux HTTPS (du stateful inspection permet de faire la différence).

  • Dans la partie Tunnel Settings, renseigner les paramètres suivants :

    image-20220712205937919

  • Dans IPv4 Tunnel Network, entrer le réseau virtuel qui sera attribué aux clients VPN.

  • Dans IPv4 Local Network, entrer le réseau LAN qui doit être accessible aux clients VPN.

Le reste des paramètres sont laissés par défaut. Ils pourront être définis si besoin mais ne seront pas traités dans cet article.

  • Passer à la prochaine étape en cliquant sur Next.

  • Cocher Firewall Rule et OpenVPN Rule pour générer les 2 règles adéquats dans le pare-feu :

    image-20220712210924817

  • Valider en cliquant sur Next puis Finish pour terminer le paramétrage du serveur VPN.

Utilisateur

Création d'un utilisateur

  • Dans System (1), Access (2), Users (3), cliquer sur + (4) pour ajouter un nouveau utilisateur :

    image-20220712211520676

  • Renseigner un Username et un Password :

    image-20220712211947305

  • Plus bas, cocher Click to create a user certificate :

    image-20220712212137535

  • Terminer en cliquant sur Save. Cela déclenche la génération d'un certificat.

Génération du certificat utilisateur

  • Sélectionner Create an internal Certificate :

    image-20220712212728988

  • Entrer une Descriptive name. Sélectionner le bon Certificate authority et le type Client Certificate.

  • Les informations provenant de l'authorité de certification doivent être pré-remplies.

  • Renseigner le Common Name.

  • Enregistrer le nouveau certificat.

  • Le certificat est maintenant associé à l'utilisateur :

    image-20220712213220067

  • Terminer en cliquant sur Save.

Client Windows

Exportation de la configuration client

  • Dans VPN (1), OpenVPN (2), Client Export (3), télécharger l'archive contenant la confirmation client d'OpenVPN avec le certificat utilisateur correspondant :

    image-20220712222650837

En cochant Windows Certificate System Store, un certificat .crt est récupéré. Malgré le faites de l'inscrire (ou d'inscrire le CA) dans le magasin (des certificats de l'ordinateur) des autorités de certification racines de confiance, celui-ci ne sera pas approuvé.

  • Le contenu de l'archive récupérée contient les éléments suivant :

    OPNsense_VPN_Server_batman_vpn-tls.key
    OPNsense_VPN_Server_batman_vpn.ovpn
    OPNsense_VPN_Server_batman_vpn.p12

Installation du client

Sur le poste client en Windows 10 :

  • Télécharger le client OpenVPN Community : https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.7-I602-amd64.msi

  • Installer le client OpenVPN (Attention, il faudra des droits d'administrateur sur le poste Windows).

  • Un message d'avertissement indique qu'il n'y a aucun profil de connexion.

  • Copier le contenu de l'archive préalablement exporter dans le répertoire %USERPROFILE%\OpenVPN\config :

    image-20220712225016759

  • Se connecter :

    image-20220712225229212

  • Un message peut survenir indiquant que l'utilisateur Windows doit faire partie du groupe local de la machine OpenVPN Administrators :

    image-20220712225549618

Si contexte de domaine, une GPO peut appliquer ce paramètre automatiquement.

  • S'identifier avec le compte utilisateur créé précédement dans OPNsense :

    image-20220712225737892

  • La connexion VPN est établie :

    image-20220712230430443

Les commentaires sont fermés.