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 :
-
Sélectionner Create an internal Certificate Authority :
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 :
Génération du certificat serveur
-
Dans Certificates (1), cliquer sur + (2) pour ajouter un nouveau certificat :
-
Sélectionner Create an internal Certificate :
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 :
-
Enregistrer le nouveau certificat :
OpenVPN
-
Dans VPN (1), OpenVPN (2), Servers (3), cliquer sur l'icône du Wizard (4) :
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 :
- 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 :
- 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 :
- 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 :
-
Renseigner un Username et un Password :
-
Plus bas, cocher Click to create a user certificate :
- 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 :
- 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 :
- 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 :
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
: -
Se connecter :
-
Un message peut survenir indiquant que l'utilisateur Windows doit faire partie du groupe local de la machine
OpenVPN Administrators
:
Si contexte de domaine, une GPO peut appliquer ce paramètre automatiquement.
-
S'identifier avec le compte utilisateur créé précédement dans OPNsense :
-
La connexion VPN est établie :