Tutoriels
27
juin
2022
OpenVPN site à site avec OPNsense

Introduction

OpenVPN est un logiciel libre permettant de créer un réseau privé virtuel (VPN).

OpenVPN permet à des pairs de s'authentifier entre eux à l'aide d'une clé privée partagée à l'avance, de certificats électroniques ou de couples de noms d'utilisateur/mot de passe. Il basé sur un mode de fonctionnement client-serveur. Qu'un OPNsense soit défini comme client ou comme serveur ne changera strictement rien d'un point de vue réseau. Il utilise également de manière intensive la bibliothèque d'authentification OpenSSL ainsi que le protocole SSLv3/TLSv1. Disponible avec une multitude d'environnements tels que Solaris, OpenBSD, FreeBSD, NetBSD, Linux (Debian, Redhat, Ubuntu, etc.), Mac OS X, Windows 2000, XP, Vista, 7, 8 et 10, il offre de nombreuses fonctions de sécurité et de contrôle.

OpenVPN n'est pas compatible avec IPsec ou d'autres logiciels VPN. Le logiciel contient un exécutable pour les connexions du client et du serveur, un fichier de configuration optionnel et une ou plusieurs clés suivant la méthode d'authentification choisie.

Cet article montre comment créer une connexion site à site en utilisant OpenVPN et comment acheminer la connexion Internet du site A (client) vers le site B (serveur) avec OPNsense.

Schéma du VPN souhaité

schéma OpenVPN site à site avec pfSense

Notre ordinateur client a pour IP 10.10.9.9 et se trouve donc dans le réseau local 10.10.9.0/24.

L'objectif est de pouvoir se connecter au réseau LAN 10.10.10.0/24 du OPNsense02 par le biais d'OpenVPN.

Dans notre cas, les routeurs pfSense seront des OPNsense.

Configuration du serveur OpenVPN

page des serveurs OpenVPN sur OPNsense

Accédez à l'onglet VPN > OpenVPN > Servers. Cliquez sur bouton ajouter pour créer un nouveau serveur OpenVPN.

Configurer les options suivantes :

  • Description : Description pour ce VPN. Apparaît dans différents endroits où le VPN peut être choisi dans une liste, comme VPN > OpenVPN > Connection Status ou Interfaces > Diagnostics > Packet Capture .
  • Server ModePeer to Peer (Shared Key)
  • ProtocolUDP - TCP n'est pas adapté à un environnement VPN car en cas de pertes de paquets ceux-ci devront être retransmis. Ce qui n'est pas forcément souhaité. La conséquence serait un ralentissement du lien VPN à cause d'une forte ré-émission de paquets. TCP est principalement utilisé pour éviter les pare-feux qui filtrent en sortie tous les ports de destination sauf le 443 en TCP pour le HTTPS. Dans ce cas, le port local doit être réglé sur 443. Le protocole doit correspondre chaque côté.
  • Device Modetun
  • Interface : Selon l'interface serveur utilisée pour les connexions entrantes. Typiquement on utilise l'interface WAN , mais cela peut être une interface OPT.
  • Local port : C'est le port serveur d'écoute d'OpenVPN. Le port par défaut est 1194 pour OpenVPN. Chaque serveur nécessite un port unique. Assurez-vous de ne pas utiliser un port déjà en cours d'utilisation par un autre service sinon des problèmes peuvent survenir. Si vous utilisez le port 443 , assurez vous que l'interface Web n'utilise pas déjà ce numéro de port.
  • Shared Key : Les clés peuvent être créées dans l'interface graphique. Cochez la case "Générer automatiquement une clé partagée.", puis lorsque les paramètres seront enregistrés, la clé sera générée. Il faudra ensuite copier / coller celle-ci vers le client.
  • Encryption algorithm : Ce paramètre doit être le même des deux côtés. Le choix de l'algorithme est moins vaste lorsque l'on utilise un VPN Peer to Peer (Shared Key). AES-256-CBC est un bon choix avec un routeur tel que le Noah V2.
  • Auth Digest Algorithm : Ce paramètre doit être le même des deux côtés. L'alogirthme par défaut, SHA1 (160-bit) n'est plus vraiment sûr depuis 2020 et il vaut mieux choisir SHA256 (256-bit).
  • IPv4 Tunnel Network : IP sur lequel le VPN va circuler. La valeur par défaut proposée dans l'interface graphique de 10.0.8.0/24 est suffisante, mais l'utilisation d'un réseau aléatoire à l'intérieur de l'espace de la RFC1918 est recommandé. Pour le site à site partagé, seul un /30 est utilisé, pas la totalité d'un /24, même si /24 est spécifié.
  • IPv6 Tunnel Network : Il n'est pas nécessaire de saisir quoi que ce soit ici si vous ne comptez pas utiliser IPv6 pour vous connecter au travers du VPN.
  • Redirect Gateway : Ne pas cocher. C'est une option utilisée pour un VPN client-serveur.
  • IPv4 Remote Network : Entrez ici le réseau LAN du côté client. Pour accéder à plus d'un réseau, ajoutez-les tous ici, séparés par une virgule seule et sans espace (par exemple 10.10.9.0/24,192.168.9.0/24 ).
  • IPv6 Remote Network : Ici non plus, il n'est pas nécessaire de saisir quoi que ce soit ici si vous ne comptez pas utiliser IPv6 avec le VPN. Si oui, entrez ici le réseau LAN du côté client. Pour plus d'un réseau, ajoutez-les tous ici, séparés par une virgule seule et sans espace.
  • Concurrent connections : N'est pas important et peut être laissé vide.
  • Compression : Permet d'activer la compression LZO sur l'ensemble des flux transitant par ce tunnel VPN. Si les données transitant dans ce tunnel VPN sont principalement des données déjà chiffrées (HTTPS, SSH, etc.), cocher cette option ne fera qu'ajouter une surcharge inutile aux paquets.
  • Type-of-Service : Cocher cette case indique de reprendre dans les paquets envoyés par OpenVPN la valeur du champ TOS des paquets encapsulés traversant le tunnel. Cette option peut être considérée comme présentant un risque potentiel de sécurité. Aussi, ne recommandons nous pas nécessairement son utilisation.

Configuration du client OpenVPN

page des clients OpenVPN sur OPNsense

Accédez à l'onglet VPN > OpenVPN > Clients. Cliquez bouton ajouter pour créer un nouveau client OpenVPN.

Configurer les options suivantes : 

  • Description : Vous pouvez donner un nom pour ce VPN.
  • Server ModePeer to Peer (Shared Key)
  • Protocol : Faire correspondre avec le réglage du côté serveur.
  • Device modetun
  • Interface : Interface à utiliser pour le trafic sortant. Typiquement WAN, mais peut être une interface WAN OPT.
  • Remote server > Host or address : IP ou nom de domaine complet de l'interface publique du serveur OpenVPN
  • Remote Server > Port : Le port utilisé par le serveur OpenVPN.
  • Local port : Laissez ce champ vide pour un port aléatoire. Le port de ce client OpenVPN va utiliser cette valeur comme port source de son côté. Chaque processus nécessite un port unique. Assurez-vous de ne pas utiliser un port en cours d'utilisation par un autre service ou des problèmes peuvent survenir. Laisser ce champ vide est le meilleur choix.
  • Shared Key : Copiez / collez la clé à partir du serveur. Retourner dans les paramètres du serveur pour récuperer la clé.
  • Encryption Algorithm : Faire correspondre avec le réglage du côté du serveur.
  • Auth Digest Algorithm : Faire correspondre avec le réglage du côté du serveur.
  • IPv4 Tunnel Network : Faire correspondre avec le réglage du côté serveur.
  • IPv6 Tunnel Network : Faire correspondre avec le réglage du côté serveur.
  • IPv4 Remote Network : Entrez ici le reseau LAN du côté serveur. Pour accéder à plus d'un réseau, ajoutez-les tous ici séparés par une virgule seule et sans espace (par exemple 10.10.9.0/24,192.168.9.0/24 ).
  • IPv6 Remote Network : Entrez ici le reseau LAN IPv6 côté du serveur. Pour plus d'un réseau, ajoutez-les ici séparés par une virgule seule et sans espace.
  • Compression : Faire correspondre avec le réglage du côté serveur.
  • Type-of-Service : voir le même paramètre dans la section du serveur.

Configuration des règles de pare-feu

La configuration côté client et serveur est terminée. Il nous reste simplement à penser à autoriser ou filtrer nos flux transitant à travers notre nouvelle interface OpenVPN. Pour cela, se rendre dans Firewall > Rules > OpenVPN.

Pour les logs du firewall, rendez vous dans Status > System logs > Firewall.

Traduction de source document OPNsense.