OPNSense : VPN Site-to-Site via IPSec

OPNSense : VPN Site-to-Site via IPSec

15 mars 2022 0 Par Mairien Anthony

VPN S2S via IPSec sur OPNSense.

Comme dit dans le titre, aujourd’hui nous allons utiliser OPNSense pour réaliser un VPN Site-to-Site via IPSec. Sans plus attendre, allons-y !

I) L’installation d’OPNSense

Ici rien de très sorcier, ou presque. La seule subtilité et qu’après avoir booté sur l’ISO, il convient de se loguer en console avec les credentials installer / opnsense pour lancer l’installation, ou bien root / opnsense pour tester en LiveCD. L’installation se fait de manière classique, avec par la suite un Wizard via l’interface web. Si vous désirez justement joindre cette WebUI via l’interface WAN, le plus simple est d’ouvrir un shell en console et de tapez cette commande-ci pour désactiver entièrement les règles de firewall :

pfctl -d

Rajoutez le -e pour le ré-activer après avoir rajouté la bonne règle de pare-feu qui va bien 😉

Côté lab, j’ai donc installé deux OPNSense avec comme IPs respectives :

  • opnsense-01 :
    • WAN: 192.168.10.50/24 ;
    • LAN: 192.168.20.1/24 ;
  • opnsense-02 :
    • WAN: 192.168.10.60/24 ;
    • LAN: 192.168.30.1/24 ;

Rien de très complexe donc.

II) Le protocole IPSec en bref

IPSec signifie Internet Protocol Security. Son fonctionnement se résume comme suit, un premier canal est ouvert sur les ports 500 et 4500 en UDP (IKEv2). Ensuite, suivant le choix un second canal sera ouvert avec soit le protocole ESP soit le protocol AH, le premier permettant l’intégrité et la confidentialité, le second ne permettant que l’intégrité.

Pour plus d’informations, je vous invite à consulter les différentes RFC ou simplement la page Wikipédia de cette suite procolaire/divers tutos sur Internet la vulgarisant :p

III) Configuration de la phase une sur opnsense-01

Après ce petit rappel théorique, connectons à notre opnsense-01 et rendons-nous dans VPN, IPSec, puis Paramètres du Tunnel :

Ici nous allons rajouter la phase 1 en cliquant sur le bouton « + » :

Ici rien de très compliqué, on choisi bien la version V2 pour des raisons de sécurité/performances, on choisi IPv4/IPv6, l’interface, et enfin l’adresse IP/le domaine de notre opnsense-02. A noter que si l’on encode un FQDN, cocher la case Passerelle dynamique peut devenir intéressante.

Petite astuce supplémentaire, on notera le bouton aide complète en haut à droite qui rajoute une ligne d’info en dessous de chaque paramètre 😉

On paramètre ensuite la partie Authentification :

On choisi la méthode d’authentification en premier lieu, pour les besoins de ce tutoriel ce sera une simple clé pré-partagée (PSK), mais l’idéal étant bien-sûr l’utilisation de certificats. On encode ensuite la fameuse clé (ici un simple diceware de plusieurs mots), on choisi l’algorithme de chiffrement voulu, idem pour le hashage, la durée de vie avant re-négociation (nous laissons la valeur par défaut), et concernant les autres paramètres sur la capture d’écran cela dépend de vos besoins, pour de plus amples informations cliquez simplement sur l’icône « ? » pour en savoir plus, mais en général elles ne sont utilisées que dans des contextes bien précis.

On poursuit en scrollant encore vers le bas pour arriver à cela :

Nous laissons ici la plupart des options par défaut, qui conviennent très bien. On notera tout de même que les options de Timeout ou de Retry peuvent être intéressantes.

On sauvegarde, et c’est tout bon !

IV) Configuration de la phase deux sur opnsense-01

Toujours sur opnsense-01 donc, on retourne au menu générique IPSec et ici il faut un peu chercher pour rajouter la phase deux… contrairement à ce que dit la documentation, dans la version la plus récente (à l’heure où j’écris ces lignes), il convient de cliquer juste ici pour rajouter la seconde phase :

Dès lors, la configuration peut commencer :

Toute la configuration tient sur cette capture d’écran, et est relativement aisée ici aussi. On choisi le mode utilisé (ici tunnel IPv4), une petite description, le type de réseau à relier (ici ce sera notre subnet LAN), puis le subnet distant, et concernant les options relatives à l’échange de clés, les valeurs par défaut sont suffisantes. Libre à vous de vous renseigner sur les points forts/faiblesses des divers algorithmes proposés, ici le seul changement opéré est le passage de SHA-256 à SHA-512, mais encore une fois, rien de très trenscendant.

On peut sauvegarder et poursuivre !

V) Configuration des phases une & deux sur opnsense-02

A ce stade, vous devriez obtenir ceci sur le pare-feu 01 :

Si c’est bien le cas, on peut poursuivre et configurer la même chose de l’autre côté ! A noter que concernant les règles de firewall nous verrons cela en fin d’article, et vous pouvez d’ailleurs d’ores et déjà cocher la case « Enable IPSec » et appliquer les changements.

Bien, une fois sur notre second pare-feux, on recommence la même chose en utilisant les même paramètres que pour le numéro un, c’est-à-dire même paramètres de chiffrement, même clé pré-partagée, etc. Veillez simplement à bien changer le subnet du LAN distant !

Une fois fait, on peut valider le tout et cocher la case Enable IPsec 😉

VI) Autorisation du trafic IPSec

La première étape est d’autoriser la communication de notre LAN-01 vers notre LAN-02, et vice versa :

Sur opnsnense-01
Sur opnsense-02

Rien de très compliqué ici encore. Et ensuite, il convient d’autoriser le protocole IPSec lui-même sur l’interface WAN… sauf que c’est d’ores et déjà fait de manière automatique en cochant la case « Enable IPSec » !

Il ne nous reste donc plus qu’à autoriser le trafic dans le tunnel lui-même, en ajoutant une règle autorisant l’entièreté du trafic sur l’interface virtuelle IPsec :

Bien entendu, libre à vous d’affiner cette règle, cela va de soit.

Si l’on démarre ensuite un client Windows 10 sur chaque LAN, le ping devrait passer !

Comme on peut le voir, le PC du LAN-01 (à gauche) sait ping l’interface LAN ainsi que le client du LAN-02 ! C’est donc tout bon !

VII) Conclusion

Cet article touche désormais à sa fin, j’espère comme d’habitude vous avoir appris quelques bricoles voir plus ! C’était (de mémoire?) le premier article sur IPSec, qui n’a rien à envier à OpenVPN sur bien des points, et aussi l’un des rares articles sur OPNSense. J’espère que vous apprécierez cette diversité dans les solutions utilisées, histoire de ne pas voir que du pfSense 😉

*Si vous désirez en savoir plus, ne vous fiez pas totalement à la doc’ de chez OPNSense, cette dernière concernant IPSec en tout cas ne semble pas être totalement à jour !