Installer le firewall OPNsense sur Hyper-V pour créer un lab virtuel
I. Présentation
Pour finir ce cours, nous allons apprendre à installer OPNsense au sein d'une VM Hyper-V dans le but de créer un environnement de laboratoire basé sur un pare-feu virtuel open source.
Ce lab sera l'occasion de manipuler une nouvelle fois la création et la configuration d'une machine virtuelle, ainsi que la configuration d'un commutateur virtuel. Par la suite, grâce à cette machine virtuelle OPNsense, vous allez pouvoir vous exercer sur différents sujets notamment : la gestion d'un pare-feu (autoriser ou refuser les flux du réseau local vers Internet, et inversement), faire du NAT, créer des règles de redirection de ports, monter un serveur DHCP, effectuer la mise en place d'un proxy, d'un reverse proxy, la création d'une DMZ, etc...
Notre objectif va être le suivant :
- Créer un réseau virtuel interne (192.168.10.0/24 - LAN), qui pourra accéder à internet, par l'intermédiaire du pare-feu OPNsense
- Activer et configurer le NAT pour que les VM du réseau virtuel interne soit en mesure d'accéder à Internet
- Activer et configurer le serveur DHCP sur OPNsense pour distribuer une configuration IP aux futures machines connectées au réseau virtuel interne
- Configurer le pare-feu pour autoriser uniquement les flux sortants du LAN vers WAN en HTTP (80) et HTTPS (443).
- Configurer le pare-feu pour autoriser le LAN virtuel à utiliser OPNsense comme résolveur DNS (53).
L'interface WAN, qui nous permettra de simuler l'évasion vers internet, sera rattachée à un commutateur virtuel "Externe". Cette interface WAN se verra attribuer une configuration IP (adresse IP, masque de sous-réseau, passerelle et serveur DNS) par le serveur DHCP présent sur le réseau local auquel est connecté l'Hyper-V (votre box opérateur, par exemple).
Le schéma de notre lab virtuel est présenté ci-dessous :
II. Prérequis
Pour réaliser ce lab virtuel, vous aurez besoin :
- Un hôte sur lequel Hyper-V est installé, que ce soit sur Windows Server ou Windows.
- L'image ISO d'installation de OPNsense à télécharger depuis le site officiel (sélectionnez "DVD" comme type d'image pour obtenir une image ISO).
- Une machine virtuelle depuis laquelle tester notre configuration réseau, sous l'OS de votre choix. Vous pouvez réutiliser la VM nommée "VM-WS-2022-01" créée précédemment.
Remarque : sur IT-Connect, nous avions déjà appris à créer un lab sur VMware Workstation et VirtualBox en utilisant la solution PfSense comme pare-feu. Dernièrement, l'entreprise Netgate, propriétaire du projet PfSense, a pris la décision de changer la façon dont PfSense doit être télécharger et installé, y compris dans sa version gratuite. Pour télécharger PfSense, il faut désormais créer un compte sur la boutique en ligne et procéder à un achat fictif. Pour vous éviter toutes ces manipulations, nous utiliserons OPNsense : un fork de PfSense, également très complet.
III. Mise en place de la VM OPNsense sur Hyper-V
Avant de commencer, veillez à télécharger l'image ISO d'installation d'OPNsense. Suite au téléchargement, vous obtenez une archive ".bz2" qu'il convient de décompresser avec une application telle que 7-Zip. En résulte le fichier "OPNsense-24.1-dvd-amd64.iso".
A. Préparer les commutateurs virtuels Hyper-V
D'abord, nous allons configurer les commutateurs virtuels sur Hyper-V pour qu'ils correspondent à nos besoins. Nous devons avoir deux commutateurs virtuels :
- Un commutateur virtuel de type "Externe" qui sera utilisé pour l'interface WAN du firewall OPNsense. Il doit être associé à la carte réseau physique connectée au réseau local, afin de fournir un accès à Internet. Pour ma part, il s'agit d'un switch virtuel nommé "WAN".
- Un commutateur virtuel de type "Privé" qui sera utilisé pour l'interface LAN du firewall OPNsense et pour connecter les VM à ce réseau virtuel isolé. Ainsi, pour accéder à Internet, les machines virtuelles de ce réseau devront forcément passer par le firewall OPNsense. Pour ma part, il s'agit d'un switch virtuel nommé "LAN".
B. Créer la VM OPNsense
À partir du "Gestionnaire Hyper-V", créez un nouvel ordinateur virtuel. Nommez cette VM, par exemple "OPNsense", tout simplement.
Choisissez la "Génération 2" car OPNsense est compatible avec cette configuration, bien qu'il supporte aussi la génération 1.
Affectez de la mémoire vive à cette VM. Pour effectuer un lab, 1 Go soit 1024 Mo, ce sera suffisant et c'est aussi le minimum recommandé pour OPNsense.
Ensuite, vous devez connecter la VM au réseau. Attribuez la carte réseau virtuel au commutateur virtuel "WAN". Par la suite, nous allons ajouter une seconde interface réseau à la VM pour l'affecter au réseau "LAN".
Choisissez de créer un nouveau disque virtuel pour cette VM. Vous pouvez indiquer 32 Go ou une taille supérieure, le minimum recommandé étant 8 Go. Pour rappel, ce disque virtuel sera alloué de façon dynamique, donc la taille du fichier VHDX va grossir au fur et à mesure que l'espace disque est consommé dans la VM.
Pour finir, spécifiez le chemin vers l'image ISO d'OPNsense téléchargée précédemment.
Poursuivez jusqu'à la fin pour créer la VM... Puis accédez aux paramètres de celle-ci. Nous devons ajouter une carte réseau supplémentaire, donc cliquez sur "Ajouter un matériel" puis sur "Carte réseau" avant de cliquer sur le bouton "Ajouter.
Cette seconde carte réseau doit être affectée au commutateur virtuel "LAN", comme le montre l'image ci-dessous.
Pour finir, cliquez sur l'onglet "Sécurité" afin de désactiver le démarrage sécurisé, sinon la VM ne fonctionnera pas.
Voilà, la machine virtuelle va pouvoir être lancée afin de procéder à l'installation du système.
C. Installer le système OPNsense
Connectez-vous à la VM et lancez le démarrage de celle-ci. Pendant quelques secondes, l'écran présenté ci-dessous sera visible dans la fenêtre. Laissez la VM démarrer.
L'image OPNsense va être chargée dans la VM, afin que le système soit accessible en "live", c'est-à-dire qu'il est mis en mémoire de façon temporaire.
Finalement, vous arrivez sur une interface similaire à celle ci-dessous. Connectez-vous à l'aide du login "installer" et du mot de passe "opnsense". Attention, le clavier est en QWERTY pour le moment. À ce moment-là, nous allons commencer le processus d'installation d'OPNsense.
Un nouvel assistant s'affiche à l'écran. La première étape consiste à sélectionner la disposition du clavier correspondante à votre configuration. Pour un clavier AZERTY, sélectionnez l'option "French (accent keys)" dans la liste puis validez par deux fois.
La seconde étape consiste à choisir la tâche à effectuer. Ici, nous allons effectuer une installation en utilisant le système de fichiers ZFS. Positionnez-vous sur la ligne "Install (ZFS)" et validez avec Entrée.
À la troisième étape, sélectionnez "stripe" puisque notre machine est équipée d'un seul disque : il n'y a pas de redondance possible pour sécuriser le stockage du firewall et ses données. Ceci est surtout pertinent lors de l'installation sur une machine physique pour se prémunir contre une panne matérielle d'un disque, via le principe du RAID.
À la quatrième étape, appuyez simplement sur Entrée pour valider.
Enfin, validez en sélectionnant "YES" puis avec la touche Entrée.
Désormais, vous devez patienter pendant l'installation d'OPNsense... Ce processus nécessite environ 5 minutes.
Une fois l'installation terminée, nous pouvons de changer le mot de passe "root" avant de redémarrer. Sélectionnez "Root Password", appuyez sur Entrée et indiquez un mot de passe "root" par deux fois.
Enfin, sélectionnez "Complete Install" et appuyez sur Entrée. Profitez-en pour éjecter le disque du lecteur DVD de la VM. Dans les paramètres de la VM, vous pouvez aussi positionner en premier le démarrage sur le disque.
La machine virtuelle va redémarrer et charger le système OPNsense à partir du disque virtuel puisque nous venons de procéder à l'installation. Connectez-vous avec le compte "root" dans la console, et votre nouveau mot de passe (sinon le mot de passe par défaut est "opnsense").
Ensuite, vous allez arriver sur l'écran présenté ci-dessous. Faites le choix "1" et appuyez sur Entrée pour associer les cartes réseaux de la VM aux interfaces d'OPNsense.
D'abord, l'assistant propose de configurer une agrégation de liens et des VLANs, indiquez "n" pour refuser, et à chaque fois, validez votre réponse avec Entrée. Ensuite, vous devez affecter les deux interfaces : "hn0" et "hn1" au WAN et au LAN. En principe, "hn0" correspond au WAN et l'autre interface au LAN.
Voici la marche à suivre :
Désormais, nous avons :
- L'interface LAN associée à la carte réseau "hn1" et avec l'adresse IP par défaut d'OPNsense, à savoir 192.168.1.1/24.
- L'interface WAN associée à la carte réseau "hn0" et avec une adresse IP récupérée via DHCP sur le réseau local (grâce à notre commutateur virtuel externe).
Nous allons pouvoir nous connecter à l'interface Web d'OPNsense pour la suite des opérations. Par défaut, l'administration est autorisée seulement depuis le LAN, pour des raisons de sécurité. Pour administrer temporairement OPNsense depuis le WAN, et donc depuis l'Hyper-V, basculez en mode shell via l'option "8" et exécutez la commande suivante :
pfctl -d
Cette commande sert à désactiver temporairement le firewall d'OPNsense. Par exemple, un simple redémarrage d'OPNsense réactivera les règles et la fonction de firewall.
D. Accès à l'interface de gestion d'OPNsense
Depuis l'Hyper-V, l'interface d'administration d'OPNsense est accessible en HTTPS, via l'adresse IP de l'interface WAN. Vous arrivez sur une page de connexion où il convient de se connecter avec le compte "root" et le mot de passe sélectionné précédemment.
Patientez quelques secondes... Vous serez invité à suivre un assistant pour effectuer la configuration de base du firewall. Cliquez sur "Next" pour continuer.
La première étape consiste à définir le nom d'hôte, le nom de domaine, à choisir la langue et à définir aussi le(s) serveur(s) DNS à utiliser pour la résolution de noms. Le fait de conserver l'option "Enable Resolver" permettra d'utiliser le firewall en tant que résolveur DNS, ce qui sera utile pour les machines de notre LAN virtuel.
Passez à l'étape suivante. L'assistant vous offre la possibilité de définir un serveur NTP pour la synchronisation de la date et l'heure, bien qu'il y ait déjà des serveurs configurés par défaut. De plus, il est essentiel de choisir le fuseau horaire correspondant à votre emplacement géographique (sauf besoin particulier).
Ensuite, vient une étape importante : la configuration de l'interface WAN. Actuellement, elle est configurée en DHCP et elle va rester dans ce mode de configuration, sauf si vous souhaitez définir une adresse IP statique.
Toujours sur la page de configuration de l'interface WAN, ce qui est important dans le cadre de ce lab, c'est de décocher l'option "Bloquer l'accès à des réseaux privés via le WAN". En effet, notre WAN correspond à un réseau privé donc si cette option est cochée, nous ne pourrons pas accéder à Internet.
Ensuite, vous pouvez définir un mot de passe "root", mais c'est facultatif parce que nous l'avons déjà fait.
Poursuivez jusqu'à la fin afin d'enclencher le rechargement de la configuration. Vous devez retourner sur le terminal d'OPNsense afin de réexécuter la commande pour désactiver le pare-feu, sinon, vous n'aurez plus la main depuis le WAN.
Voilà, la configuration initiale est terminée !
E. Configuration du DHCP
Nous avons pour objectif d'utiliser le serveur DHCP d'OPNsense pour distribuer des adresses IP sur le LAN virtuel. Pour cela, nous devons accéder à cet emplacement du menu : Services > ISC DHCPv4 > [LAN].
Nous pouvons constater que le DHCP est déjà activé par défaut sur le LAN ! Si ce service ne vous intéresse pas, il conviendra de le désactiver. Bien qu'il soit déjà activé et que nous voulons l'utiliser, il est important de réviser sa configuration.
Vous pouvez éventuellement modifier la plage d'adresses IP à distribuer : 192.168.10.10 à 192.168.10.245, selon les paramètres actuels.
Nous pouvons constater aussi que les champs "Serveurs DNS", "Passerelle", "Nom de domaine", etc... sont vides par défaut. En fait, il y a un héritage automatique de certaines options et des valeurs par défaut pour ces différents champs. Par exemple, pour le serveur DNS, l'adresse IP de l'interface LAN sera distribuée ce qui permettra d'utiliser le firewall OPNsense en tant que résolveur DNS.
Sauvegardez la configuration après avoir apporté des modifications, si nécessaire.
Désormais, nous allons pouvoir tester le bon fonctionnement de notre serveur DHCP à partir du LAN virtuel. Connectez la carte réseau d'une VM sur le commutateur virtuel nommé "LAN", comme ceci :
Cette VM doit récupérer une adresse IP à partir du serveur DHCP d'OPNsense et notre machine doit avoir accès au réseau. Néanmoins, elle n'a pas encore accès à Internet : pourquoi ? Nous pouvons comprendre ici qu'il nous reste le NAT à configurer, ou que cela peut être lié au fait que l'on ait désactivé la fonction de firewall pour accéder à OPNsense depuis le WAN.
Remarque : les baux DHCP actuellement délivrés sont visibles à partir de l'interface d'administration d'OPNsense. Pour cela, accédez à l'emplacement suivant : Services > ISC DHCPv4 > Baux.
F. Configuration du NAT et des règles de firewall
La bonne nouvelle, c'est que désormais, nous pouvons accéder à l'interface d'administration d'OPNsense à partir du LAN.
https://192.168.1.10
Après s'être connecté à OPNsense, partons à la découverte de la configuration du NAT. Accédez à cet endroit : Pare-feu > NAT > Sortant. Ici, vous avez le choix entre la création de règles de NAT sortantes automatiques (mode par défaut) ou la création manuelle.
Dans le cadre de ce lab, choisissez le mode automatique via l'option "Génération automatique des règles NAT sortantes" et cliquez sur "Sauvegarder" (en principe, cette configuration est déjà celle active). À présent, la VM connectée au LAN virtuel a bien accès à Internet ! Le fait de cliquer sur le bouton "Sauvegarder" a réactivé le pare-feu, ce qui a réactivé aussi les règles de NAT automatique.
Pour le moment, tous les ordinateurs connectés au LAN virtuel "192.168.10.0/24" peuvent accéder à Internet sans restriction. Toutefois, notre objectif est de limiter l'accès vers le WAN aux seuls protocoles HTTP et HTTPS, ainsi que le DNS sur l'interface LAN du firewall.
Ainsi, nous devons créer des règles de pare-feu... Parcourez le menu de cette façon : Pare-feu > Règles > LAN.
Par défaut, il y a deux règles pour autoriser tous les flux sortants du réseau LAN, en IPv4 et en IPv6. Désactivez ces deux règles en cliquant sur la flèche verte tout à gauche, au début de chaque ligne.
Puis, créez trois nouvelles règles pour :
- Autoriser le réseau LAN (soit "LAN net") à accéder à toutes les destinations en HTTP.
- Autoriser le réseau LAN (soit "LAN net") à accéder à toutes les destinations en HTTPS.
- Autoriser le réseau LAN (soit "LAN net") à solliciter OPNsense sur son interface LAN (soit "LAN adresse"), via le protocole DNS (ceci implique d'utiliser le firewall comme DNS), sinon autoriser votre résolveur DNS via son adresse IP.
Ce qui donne le résultat suivant :
Il ne reste plus qu'à cliquer sur "Appliquer les changements" pour basculer en production les nouvelles règles de pare-feu. Sachez que tous les flux qui ne sont explicitement autorisés seront bloqués par défaut.
La VM connectée au LAN virtuel peut accéder à Internet, en naviguant en HTTP et HTTPS. Tous les autres protocoles seront bloqués.
IV. Conclusion
En suivant ce chapitre et l'intégralité de ce cours, vous devriez être en mesure de mettre en place ce lab basé sur OPNsense ! Une fois cette structure en place, vous pouvez ajouter et configurer de nouveaux services, que ce soit sur le firewall en lui-même, ou sur d'autres VMs.
Il vous permettra de mettre en pratique différentes notions évoquées tout au long de ce cours, et donc de valider vos nouvelles compétences.