Virtualiser OPNsense sur Proxmox VE

Au sommaire :

  • 1-Qu'est-ce que OPNsense ?
  • 2-Objectif du tutoriel
  • 3-Création de la machine virtuelle
  • 4-Installation
  • 5-Configuration des interfaces
  • 6-Accéder à Interface web
  • 7-Conseils de lecture

Aujourd'hui nous allons voir comment installer le routeur/pare-feu OPNsense sur Proxmox VE, la solution concurrente à pfSense qui a été abordé il y a quelques jours dans ce tutoriel.

Guide d’installation de pfSense
Au sommaire : * 1-Qu’est-ce que pfSense ? * 2-Objectif du tutoriel * 3-Création de la machine virtuelle * 4-Installation * 5-Configuration des interfaces * 6-Accéder à Interface web * 7-Post-installation 1-Qu’est-ce que pfSense ? pfSense est une solution réseau basé sur FreeBSD utilisé principalement comme routeur/pare-feu. Sortis en 2006, c’est un fork de M0n0wall, projet d’interface graphique basé

1-Qu'est-ce que OPNsense ?

En quelques points :

  • OPNsense est un routeur/pare-feu 100% open-source basé sur un fork de pfSense sorti en 2015 et développé par la société hollandaise Deciso
  • C'est un fork du projet pfSense (lui même un fork de m0n0wall) sorti en janvier 2015 et maintenu par la société
  • Il est basé sur HardenedBSD, un fork de FreeBSD plus axé sécurité (les systèmes macOS, iOS, PS3, PS4 se base également sur FreeBSD)
  • Le projet a reçu le soutient de Manuel Kasper, fondateur du projet M0n0wall
  • Le cycle de publication des mises à jours se compose de deux versions majeures par an (janvier et juillet pour la version communautaire, avril et octobre pour la version Business)
  • L'interface web (plus moderne que pfSense) est en Model View Controller (MVC)
  • Le framework utilisé par l'interface web est PHP Phalcon
  • Le backend est écrit en Python (configd) qui sert à contrôler les services, générer des processus et les fichiers de configuration de services à partir de modèles Jinja2
  • Aucune commande exécuté en mode root via l'interface web contrairement à pfSense
  • Les fichiers de configurations XML peuvent être portés de pfSense vers OPNsense (nécéssite quelques modifications)
  • Sauvegarde dans le cloud

Elle bénéficie d'un regain d’intérêt depuis le changement de politique de Netgate qui souhaite promouvoir davantage pfSense Plus (qui n'est pas open-source) au détriment de la version communautaire pfSense CE.

Pour en savoir plus sur le changement de politique de Netgate.

Avec pfSense Plus, l’avenir de pfSense ne sera pas (que) open-source - Provya
Netgate, l’éditeur du logiciel pfSense a annoncé en janvier 2021 de grands changements dans le cycle de développement du logiciel pfSense avec l’arrivée d’un nouveau logiciel propriétaire : pfSense Plus.<br/> On fait le point.

2-Objectif du tutoriel

Pour ce premier tutoriel, nous allons voir ensemble les étapes suivantes :

  • Préparation de la machine virtuelle,
  • Installation,
  • Configuration des interfaces "WAN" et "LAN",

Sachez également qu'il existe 3 méthodes pour utiliser OPNsense :

  • VirtIO,
  • PCI passthrough,
  • SR-IOV,

Nous allons essentiellement utiliser la première méthode qui permet d'utiliser les SDN (Software Defined Network) Open vSwitch et Linux Bridge ainsi que de pouvoir placer OPNsense en front des machines virtuelle en reliant ces dernières directement via l'interface réseau virtuelle LAN.

3-Création de la machine virtuelle

Avant toute chose, procurez vous une carte réseau avec chipset Intel (Realtek étant mal supportés par les distros BSD). Vous pouvez trouver des cartes dual NICs pour environs 25-30 euros environs sur Aliexpress.

Note : j'ai eu cette carte en 2020 pour 15 euros mais pénurie et inflation oblige, les prix augmente donc ne tardez pas trop.

24.12€ |Adaptateur de carte réseau, carte lan pour INTEL 1000pt 1000 pt PCI E 9402 pt 9402PT 82571 NC360T 0X3959, double Port PCI E | AliExpress
Achetez malin, vivez mieux! Aliexpress.com

Créez les ponts "vmbr1" et "vmbr2" qui correspondront aux interfaces réseaux physiques 1 et 2 de la carte.

Dans Proxmox VE, cliquez sur "Create VM" puis indiquez un nom et un VMID à votre machine virtuelle.

Sélectionnez votre image (version 22.1.2 au moment où j'écris ce tutoriel).

Indiquez comme pilote graphique le protocole SPICE. Vous pouvez utiliser NoVNC mais SPICE est plus économe en ressources et permet de transférer des fichiers (comme une configuration en .xml) à la machine virtuelle OPNsense.

Voir mon tutoriel sur le protocole SPICE pour en connaitre les nombreux avantages.

Proxmox VE : SPICE, le protocole d’affichage à distance open-source
C’est sympa le RDP (Remote Desktop Protocol) sauf quand il y a des failles de sécurité.... Comprendre et prévenir les attaques RDP, en hausse depuis le début de l’épidémie - SiliconLe protocole RDP (Remote Desktop Protocol) est l’un des moyens techniques utilisés pour permettre aux collaborateurs d…

Cochez les options "SSD emulation" et "Discard" pour indiquer à la machine virtuelle quelle tourne sur un SSD et pouvoir supprimer les blocs inutilisés (jamais testé sur les distributions BSD, je vous ferait un retour dessus).

Mettez 2 cores au minimum et "Westmere" ou "Host" comme type de processeur pour bénéficier des instructions AES-NI pour le chiffrement/déchiffrement matériel du trafic VPN.

Pour votre culture générale, Westmere est la première micro-architecture d'Intel qui supporte les instructions AES-NI. C'est celle utilisé dans les premiers séries de Core i3, i5 et i7.

Je conseille "Westmere" car votre machine virtuelle sera compatible sur tout type de processeurs Intel sortis depuis 2010. Vous aurez donc une portabilité maximale.

Le mode "Host" donne un accès direct au processeur mais une portabilité moindre car si vous êtes sur un processeur récent (Intel 12th gen) et que vous migrer votre machine virtuelle sur une architecture plus ancienne (Intel 8th gen par exemple), vous aurez des instructions manquantes (les plus récentes) et donc des risques que ça ne démarre pas correctement.

Pour en savoir plus.

Westmere — Wikipédia
Jeu d’instructions AES — Wikipédia

Mettez 1024 Mib au minimum et davantage si vous comptez installer des paquets comme ntop ou squid.

Note : l'interface web de OPNsense ne consomme pas tant de ressources contrairement à ce que je pensais.

En ce qui concerne le vNIC, décochez la case "Firewall" car OPNsense étant déjà un pare-feu, il ne dois pas dépendre de celui de Proxmox VE (iptable/netfilter).

La première interface réseau utilisera le pont "vmbr0" qui servira d'interface "WAN" côté OPNsense.

Validez la configuration en cliquant sur "Finish".

Ajoutez un deuxième vNIC pour l'interface réseau "LAN".

Vous devriez avoir une configuration identique à celle-ci.

Note : pour ce tutoriel, il n'y aura qu'une interface réseau physique avec le pont "vmbr0" configuré dessus.

N'oubliez pas que la bonne pratique est d'avoir minimum deux interfaces réseaux physiques. Une pour le "WAN" et une autre pour le "LAN" qui servira à véhiculer vos différents VLANs.

Enfin, désactivez le mode "tablet" dans les options qui consomme des ressources inutilement.

Maintenant que tout est prêt, installons OPnsense.

4-Installation

Démarrez la machine virtuelle OPNsense.

Vous allez arriver dans le monde "Live CD". Pour installer OPNsense, il faudra indiquer les identifiants suivants.

  • login : installer
  • password : opnsense

Sélectionnez "French" si vous avez un clavier AZERTY et validez par "Continue with fr.kbd keymap".

Sélectionnez "Install (UFS pour Unix File System)" qui est le système de fichier par défaut dans les distributions Unix.

Unix File System — Wikipédia

Un message d'avertissement apparaîtra pour vous avertir que la mémoire vive alloué est trop faible. Validez par "Proceed anyway" car à part si vous installez des paquets gourmands en ressources, vous serez rarement en manque de mémoire vive.

Sélectionnez le disque de 32 Gb et validez deux fois par "Yes" avec la création d'une partition swap de 8 Go et le formatage total du contenu de volume (qui est vide de toute manière).

L'installation s'effectue.

Lorsque c'est fini, changez le mot de passe par défaut (chiffres, lettres, minuscules, majuscules, caractères spéciaux, salade, tomate, oignon) et validez une seconde fois.

Enfin, validez l'installation en sélectionnant "Complete Install".

5-Configuration des interfaces

Après le redémarrage, authentifiez vous :

  • Login : root,
  • Password : opnsense ou votre mot de passe personnalisé à la fin de l'installation,

Vous allez arriver à l'écran principal.

Vous allez devoir assigner les interfaces "WAN" et "LAN". Suivez les indications suivantes :

  • Enter an option: 1
  • Do you want to configure LAGGs now ?: N (agrégation d'interfaces réseaux),
  • Do you want to configure VLANs now ?: N

Pour "vtnet0" et "vtnet1" :

  • "vtnet0" pour l'interface "WAN",
  • "vtnet1" pour l'interface "LAN",

Appuyez sur "Entrée" pour indiquer qu'il n'y a aucune autre interface réseau à configurer puis validez par "y".

Configuration du port WAN

Vous allez indiquer que l'interface "WAN" récupère son adresse en IPv4 du serveur DHCP de votre réseau local, que vous ne souhaitez pas d'adresse en IPv6, ni utiliser le protocole HTTP pour l'interface web, ne pas générer un nouveau certificat et enfin de ne pas restaurer les paramètres par défaut.

  • Enter an option: 2,
  • Enter the number of the interface to configure: 2,
  • Configure IPv4 address WAN interface via DHCP?: y
  • Configure IPv6 address WAN interface via DHCP6?: n,
  • Enter the new WAN IPv6 address. Press <ENTER> for none,
  • Do you want to change the web GUI protocol from HTTPS to HTTP?: n,
  • Do you want to generate a new self-signed web GUI certificate?: n,
  • Restore web GUI access defaults?: n,

Configuration du port LAN

Vous allez indiquer une adresse statique en IPv4 pour votre interface "LAN" avec un masque de 24.

Pour cette interface, vous avez le choix entre activer ou non le serveur DHCP. Activez le puis créez une plage d'attribution. Pour ma part, je le désactive car je me sert de l'interface "LAN" pour créer mes VLANs (nous le verront dans un prochain tutoriel).

Idem qu'avec l'interface "WAN", pas d'adresse en IPv6, ni de protocole HTTP pour l'interface web, pas de nouveau certificat et aucune restauration des paramètres par défaut.

  • Enter an option: 2,
  • Enter the number of the interface to configure: 1,
  • Configure IPv4 address LAN interface via DHCP?: n
  • Enter the new LAN IPv4 address: 192.168.1.1,
  • Enter the new LAN IPv4 subnet bit count (1 to 32): 24,
  • For a LAN, press <ENTER> for none:
  • Configure IPv6 address LAN interface via DHCP6?: n,
  • Enter the new LAN IPv6 address. Press <ENTER> for none,
  • Do you want to enable the DHCP server on LAN? y,
  • Enter the start address of the IPv4 client address range: 192.168.1.20,
  • Enter the end address of the IPv4 client address range: 192.168.1.50,
  • Do you want to change the web GUI protocol from HTTPS to HTTP?: n,
  • Do you want to generate a new self-signed web GUI certificate?: n,
  • Restore web GUI access defaults?: n,

L'interface web sera accessible à l'adresse https://192.168.1.1

Mise à jour de OPNsense

Choisissez l'option 12 pour mettre à jour OPNsense et validez par "y". Le système redémarrera automatiquement.

Vous pouvez le faire aussi via l'interface web. Le point intéressant c'est que vous aller obtenir beaucoup plus d'informations comme le journal des modifications (changelog) ainsi que la liste des paquets qui seront installés. L'interface web apporte une vrais valeur ajouté pour le coup.

6-Accéder à l'interface web

Connectez vous avec un poste physique ou une machine virtuelle puis accédez à l'interface web (https://192.168.1.1).

Note : j'indique une adresse IP statique pour accéder à l'interface web de OPNsense via une machine virtuelle Manjaro-XFCE (c'est le système D chez moi haha). Lorsque j'aurai créer un VLAN, j'aurai juste à indiquer le tag du VLAN dans l'interface réseau de Manjaro pour qu'il reçoive automatiquement une adresse IP (on verra ça prochainement).

Cliquez sur suivant.

indiquez les informations suivantes et modifiez selon votre convenance :

  • Hostname : opnsense
  • Domain : lan
  • Language : english,
  • Primary/Secondary DNS : mettez par exemple ceux de Cloudflare ou Quad9 (1.1.1.1, 8.8.8.8),
  • Override DNS : faire que les DNS renseignés soient prioritaires à celui fournis par le serveur DHCP,

OPNsense propose un serveur DNS récursif par défaut (Unbound). Cela veut dire que ce dernier va répondre à vos requêtes en interne.

Si vous avez déjà votre propre serveur DNS, indiquez l'adresse IP dans ce cas.

Pas besoin d'activer le DNSSEC.

Choisissez votre zone (Europe/Paris).

Lors de la configuration de l'interface WAN, laissez tout par défaut et décochez les deux dernières options :

  • RFC1918 Network : permet aux réseaux privés (LAN, VLANs) d'accéder à l'interface "WAN",
  • Block bogon networks : bloque le trafic d'adresses réservées,

MAJ : ne décochez pas ces deux options pour l'interface WAN. Selon le livre OPNsense Beginner to professional :

  • RFC1918 Network : Lorsqu'elle est cochée, cette option bloque tout le trafic provenant de l'espace réseau privé RFC1918 ainsi que l'adresse réservée loopback (127.0.0.0/8) et les adresses NAT de classe opérateur (100.64.0.0/10). Ne l'utilisez pas dans les interfaces de réseau local ! Vous pouvez cocher cette option dans les interfaces WAN.
  • Block bogon networks : Lorsque cette option est cochée, elle bloque les adresses réservées (non encore attribuées par l'IANA), ce qui n'inclut pas la RFC1918. Vous pouvez cocher cette option dans les interfaces WAN.
Interface configuration — OPNsense documentation

Laissez la configuration de l'interface "LAN" tel que vous l'avez configuré.

passez cette étape si vous avez déjà changer votre mot de passe.

Reload Configuration

Cliquez sur "Reload".

Félicitation ! Votre routeur/pare-feu OPNsense est désormais opérationnel.

Admirez moi cette interface web!!!!

7-Conseils de lecture

Si vous souhaitez vous former sur cette solution, le livre "OPNsense: Beginner to Professional" sorti tout récemment en juin 2022 par les éditions Packtpublishing est fait pour vous.

Vous le trouverez sur le site des éditions Packt.

OPNsense Beginner to Professional | Packt
Work with one of the most efficient open-source FreeBSD-based firewall and routing solutions to secure your network with ease

Et en bonus, un commentaire en allemand sur amazon.com qui en dis beaucoup de bien.

"Comparé au seul livre en allemand actuellement disponible sur OPNsense, celui-ci, bien que rédigé en anglais, est pour moi beaucoup plus compréhensible et bien meilleur en termes de clarté. Il est construit de manière exemplaire et écrit dans un langage très clair. Dans les premiers chapitres en particulier, les "Proposed exercises" fournissent des instructions étape par étape pour la réalisation de tâches prédéfinies. Au début de chaque chapitre, il est fait référence aux connaissances préalables nécessaires concernant les contenus, de sorte que l'on puisse combler d'éventuelles lacunes. Souvent, des liens concrets sont indiqués pour trouver des informations complémentaires. À la fin de nombreux chapitres, il y a des sections de dépannage qui sont très utiles, car on fait certainement plus souvent l'expérience au début que les choses ne fonctionnent pas du premier coup comme on l'avait espéré. En ce qui concerne l'étendue et le détail des fonctions du programme, la description ne laisse rien à désirer. J'ai l'impression que les possibilités très complexes de paramétrage et de configuration d'OPNsense sont presque entièrement présentées (sauf dans le chapitre 13 "Web Proxy", où cela ne serait tout simplement pas possible sans faire exploser le volume du livre).
Une seule chose m'a manqué : dans le chapitre 5 ("Pare-feu"), qui est probablement l'un des plus importants pour les débutants, on est bien guidé dans la mise en œuvre pratique des règles de pare-feu, mais les règles utiles et la meilleure façon de les configurer pour protéger son réseau ne sont pas expliquées. Je suis conscient qu'il n'est pas possible de donner des conseils universels sur les règles à suivre, car chaque réseau a ses propres conditions. Mais quelques suggestions sur les choses à faire et à ne pas faire ou sur les meilleures pratiques, peut-être illustrées par des exemples construits, auraient été très appréciées. Vu le sous-titre "Beginner to Professional", je les espérais (naïvement ?).
Ce livre est donc avant tout un manuel d'utilisation de premier ordre, complet et très bien écrit, avec de nombreuses informations de fond. Je le recommande !"

OPNsense Beginner to Professional: Protect networks and build next-generation firewalls easily with OPNsense: Camargo, Julio Cesar Bueno de: 9781801816878: Amazon.com: Books
OPNsense Beginner to Professional: Protect networks and build next-generation firewalls easily with OPNsense [Camargo, Julio Cesar Bueno de] on Amazon.com. *FREE* shipping on qualifying offers. OPNsense Beginner to Professional: Protect networks and build next-generation firewalls easily with OPNsen…

Sources :

OPNsense® a true open source security platform and more - OPNsense® is a true open source firewall and more
High-end Security Made Easy™