Comment installer Pfsense dans VirtualBox pour créer un lab virtuel ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à installer Pfsense au sein d'une VM VirtualBox dans le but de créer un lab grâce à cette VM qui assurera le rôle de routeur et pare-feu virtuel. Grâce à cette machine virtuelle Pfsense, 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...
L'objectif va être de créer un réseau local virtuel, totalement isolé et correspondant au réseau 192.168.2.0/24, et qui pourra accéder à Internet par l'intermédiaire du pare-feu Pfsense. En effet, le pare-feu Pfsense va disposer de deux cartes réseau virtuelles : une carte connectée au réseau local virtuel (réseau interne) et une carte connectée au même réseau local que la machine physique afin de simuler l'évasion vers Internet (WAN).
Pour suivre ce tutoriel, vous avez besoin de plusieurs choses :
- Un hôte où VirtualBox est installé (voir ce tutoriel : installation de VirtualBox pas-à-pas)
- Une machine virtuelle où nous allons installer PfSense
- Une machine virtuelle (avec une interface graphique) sous le système de votre choix pour tester le réseau local virtuel et administrer le pare-feu
Ce qui donne le schéma suivant correspondant à notre cible :
Avant de commencer la configuration, je vous recommande de lire mon article ou regarder ma vidéo au sujet des différents types de réseau VirtualBox.
Vous pouvez aussi télécharger la dernière image ISO de Pfsense (à décompresser avec 7-Zip sur une machine Windows) sur le site officiel :
II. Créer une VM VirtualBox pour installer PfSense
Commençons par la création de la machine virtuelle qui va nous permettre d'accueil Pfsense. Ouvrez VirtualBox et cliquez sur le bouton "Nouvelle" pour lancer l'assistant.
Donnez un nom à cette VM, par exemple "Firewall PfSense" et choisissez le type de système "BSD" puis "FreeBSD (64-bit)" puisque PfSense est basé sur le système FreeBSD.
Choisissez la quantité de RAM. Disons que 1 Go ce sera suffisant pour faire tourner quelques services et héberger plusieurs VMs sur le réseau local virtuel. Vous pouvez ajuster dans le temps selon vos besoins et même partir sur 512 Mo dans un premier temps.
Créez un nouveau disque virtuel, au format VDI (ou un autre format selon vos préférences), alloué dynamiquement et de taille 16 Go à minima.
Poursuivez jusqu'à la fin.... Voilà, la machine virtuelle Pfsense est créée et enregistrée dans VirtualBox. Néanmoins, il faut que l'on ajuste la configuration... Sélectionnez la machine virtuelle dans l'inventaire et cliquez sur "Configuration".
Accédez à la section "Réseau", car nous devons configurer deux cartes réseau virtuelles sur notre pare-feu.
Commençons par "Adapter 1" que nous allons configurer en "Accès par pont" et qui correspondra à l'interface WAN de mon pare-feu, c'est-à-dire l'interface côté WAN (permettant d'atteindre Internet). Dans mon cas, le pont est monté sur la carte Wi-Fi "MediaTek Wi-Fi 6....", car elle est actuellement connectée à mon réseau local.
Ensuite, basculez sur l'onglet "Adapter 2" pour configurer la seconde interface réseau virtuelle correspondante à l'interface LAN. Choisissez le mode d'accès "Réseau interne" afin de créer un réseau local virtuel isolé, et nommez ce réseau interne "LAN_VM" (ou autrement).
C'est bon pour la partie réseau, mais nous devons encore faire une dernière chose : charger l'image ISO de PfSense. Cliquez sur "Stockage" puis sur le lecteur, et à droite utilisez le bouton en forme de CD pour ajouter cette image ISO (comme expliqué dans le tutoriel d'introduction à VirtualBox). Voici le résultat :
Il ne reste plus qu'à cliquer sur "OK", car cette fois-ci, la VM est prête !
III. Installer Pfsense dans la VM
Le système d'exploitation Pfsense doit être installé sur notre machine virtuelle fraîchement créée. Démarrez la VM... L'image ISO va se charger...
Vous arrivez sur le début de l'assistant d'installation de Pfsense. Appuyez sur "Entrée" pour valider. Lorsque vous allez cliquer dans la fenêtre de la VM, la souris sera capturée ! Pour relâcher la souris, appuyez simplement sur la touche "CTRL" de votre clavier.
Choisissez "Install" et validez avec Entrée. Si vous ne l'avez pas encore remarqué, toute l'installation s'effectue au clavier.
La première étape consiste à sélectionner la disposition du clavier. Vous pouvez prendre une disposition correspondante au français, mais au final, vous allez constater que le clavier sera en QWERTY tout de même. Positionnez-vous sur la ligne à sélectionner et appuyez sur Entrée.
Validez une seconde fois en étant positionné sur "Continue with fr.acc.kbd keymap".
Pour le partitionnement du disque, restez sur l'option par défaut à savoir "Auto (ZFS)" sauf si vous avez des besoins spécifiques. Sachez que ZFS est un système de fichiers open source plus moderne qu'UFS. Il va permettre de créer un pool de stockage logique.
Validez une nouvelle fois afin de procéder à l'installation dans les conditions par défaut.
Choisissez "stripe" afin de mettre en place le système uniquement sur notre disque, sans redondance, puisque notre VM dispose d'un seul et unique disque virtuel. Par l'intermédiaire de son système RAID-Z, le système de fichiers ZFS pourrait sécuriser le volume où Pfsense est installé sur plusieurs disques.
Appuyer sur la barre d'espace pour cocher la case "ada0" et sélectionner ce disque. Ensuite, appuyez sur Entrée pour valider.
Vous êtes sûr de vouloir écraser le contenu actuel du disque virtuel ? Oui, car il est vide, donc on sélectionne "Yes" et on appuie sur Entrée.
Patientez pendant l'installation de Pfsense...
Lorsque l'installation est terminée, sélectionnez "No" et validez, car nous ne souhaitons pas accéder au shell pour effectuer des opérations supplémentaires.
Validez pour redémarrer la machine virtuelle Pfsense !
Il y a des chances pour que la VM charge de nouveau l'image ISO.... Cliquez sur "Périphériques", puis sous "Lecteurs optiques" décochez l'ISO Pfsense afin de forcer son démontage. Forcez un redémarrage de la VM via VirtualBox si, effectivement, l'image ISO est de nouveau chargée.
La VM Pfsense démarre et lorsque le démarrage est terminé, un menu s'affiche comme sur l'image ci-dessous. Voyons comment configurer PfSense.
IV. Configuration de Pfsense
A. Configuration des interfaces LAN et WAN
Pour la configuration initiale de Pfsense, il y a la possibilité d'effectuer des tâches de base via la console depuis la VM en utilisant les différentes fonctions du menu. Néanmoins, Pfsense est un système qui se configure par une interface Web accessible depuis l'interface LAN, c'est-à-dire ici à partir d'une machine virtuelle connectée au réseau "LAN_VM".
Note : il existe plusieurs façons d'autoriser la gestion du pare-feu Pfsense depuis l'interface WAN, et donc depuis Internet, mais ce n'est pas recommandé.
Sur l'image ci-dessous, on peut voir que Pfsense a automatiquement affecté les deux cartes réseau de notre VM aux interfaces WAN et LAN. Dans le cas où l'affectation serait inversée, il faudrait utiliser l'option 1 (Assign Interfaces) pour inverser les deux cartes.
Pour ma part, c'est tout bon. Comment je le sais ? Et bien, l'interface WAN correspondante à "em0" (Adapter 1 de la VM) a obtenu l'adresse IP "192.168.1.29/24" via DHCP, ce qui signifie qu'elle est bien connectée au réseau en mode pont. Quant à l'interface LAN, elle bénéficie de l'adresse IP "192.168.1.1" qui est attribuée par défaut.
Nous allons changer l'adresse IP de l'interface LAN afin d'utiliser "192.168.2.1/24" donc choisissez l'option "2" et validez.
Afin de modifier l'interface LAN, indiquez "2" et validez, puis indiquez la nouvelle adresse IP. Ensuite, pour le masque, indiquez "24" et validez.
Pour la passerelle, laissez la vide, car on utilisera l'interface WAN pour accéder à Internet. Laissez vide également pour la partie IPv6. Enfin, VirtualBox vous demande si vous souhaitez activer le DHCP sur le LAN (faites-le en Web, c'est plus sympa) et si vous souhaitez définir le protocole HTTP comme protocole pour accéder à l'interface Web, indiquez "n" pour "non", car on va rester en HTTPS.
Pfsense nous indique que l'on peut accéder à l'interface Web de configuration via l'adresse suivante : https://192.168.2.1.
B. Accès à l'interface Web de Pfsense
Désormais, nous allons basculer sur la seconde machine virtuelle pour configurer Pfsense en mode Web.
Au même titre que l'interface LAN (Adapter 2) de notre pare-feu virtuel, la carte réseau de cette VM doit être configurée en mode "réseau interne" sur le réseau nommé "LAN_VM". Comme ceci :
Puis, sur cette même machine virtuelle, on configure une adresse IP fixe, car nous n'avons pas de serveur DHCP sur ce réseau interne. Il est indispensable d'utiliser une adresse IP sur le même réseau : 192.168.2.2/24, avec la passerelle 192.168.2.1, c'est très bien. Afin d'accéder à Internet, n'oubliez pas le DNS.
La bonne nouvelle, c'est que je parviens à effectuer un ping vers l'interface LAN de Pfsense.
À partir d'un navigateur, nous allons poursuivre la configuration de Pfsense en saisissant l'adresse IP dans la barre d'adresse. Par défaut, il faut s'authentifier avec l'utilisateur "admin" et le mot de passe "pfsense".
C. Configuration initiale via l'assistant Pfsense
Lors de la première connexion, un assistant s'exécute dans le but de configurer les options de base. Cliquez sur "Next".
Lors de cette seconde étape, plusieurs options sont proposées :
- Hostname : le nom de l'hôte Pfsense
- Domain : le nom de domaine, utilisez le même que votre nom de domaine Active Directory si vous envisagez de monter un annuaire
- Primary DNS Server : serveur DNS primaire utilisé par le pare-feu (serveur externe)
- Secondary DNS Server : serveur DNS secondaire utilisé par le pare-feu (serveur externe)
Voici un exemple :
À l'étape suivante, il est question de la date et de l'heure.
- Time server hostname : sur quel serveur de temps faut-il se synchroniser ? Vous pouvez utiliser "fr.pool.ntp.org" qui est un ensemble de serveurs en France pour se synchroniser.
- Timezone : le choix du fuseau horaire
À l'étape d'après, il est question de l'interface WAN. Par défaut, elle est configurée en DHCP et elle a pu obtenir une adresse IP via ma box puisqu'elle assure le rôle de serveur DHCP. En fonction de votre environnement et vos besoins, vous pourriez avoir envie d'utiliser une adresse IP statique sur cette interface WAN : c'est ici que ça se passe.
Avant de passer à l'étape suivante, il est indispensable de décocher les deux options suivantes : Block private networks and loopback addresses et Block bogon networks. Sinon, tout le trafic entrant sur l'interface WAN en provenance de réseaux privés (comme le réseau 192.168.1.0/24) sera bloqué, ce qui va nous poser problème dans le cadre de ce lab.
À l'étape suivante, c'est l'interface LAN. Il n'est pas nécessaire de modifier la configuration puisque nous avons déjà effectué la configuration de cette interface à partir de la console Pfsense.
Modifiez le mot de passe "admin" de Pfsense afin d'utiliser un mot de passe fort. Pour aller plus loin, je vous recommande de ne pas utiliser le compte admin par défaut et de créer plutôt un nouveau compte "admin".
Voilà, la configuration initiale de Pfsense est terminée !
Cliquez sur "Reload" afin de redémarrer Pfsense pour appliquer les changements.
Le pare-feu Pfsense est prêt et il ne demande qu'une chose : être exploité ! 🙂
D. Règles de NAT et de pare-feu par défaut
La VM connectée au réseau interne "LAN_VM" et que nous utilisons pour administrer le pare-feu Pfsense dispose d'un accès à Internet. Cela s'explique par le fait que le NAT (via la méthode du PAT) est configuré par défaut sur le pare-feu Pfsense. Pour le vérifier, accédez au menu "Firewall" puis à "NAT".
Cliquez sur l'onglet "Outbound" pour visualiser l'état du NAT sur les flux sortants. Ici, on voit que le mode actif est "Automatic outbound NAT rule generation" donc il y a une règle de NAT créée automatiquement et qui permet d'accéder à Internet. Au sein de cette règle, nous pouvons voir que le réseau "192.168.2.0/24" est bien déclaré. Afin de récupérer la main sur la gestion du NAT et des règles, il faut passer en mode "Manual Outbound".
Maintenant, cliquez sur "Rules" dans le menu "Firewall". Ensuite, cliquez sur l'onglet "LAN" pour visualiser les règles de pare-feu appliquées sur l'interface LAN. Ici, on peut voir qu'il y a trois règles :
- La première règle nommée "Anti-lockout Rule" sert à autoriser explicitement l'accès à l'interface de gestion du Pfsense, afin d'éviter de perdre la main si une règle trop restrictive est créée.
- La deuxième règle sert à autoriser tous les flux du LAN vers le WAN, en IPv4
- La troisième règle sert à autoriser tous les flux du LAN vers le WAN, en IPv6
Ainsi, par défaut, les machines virtuelles connectées au réseau local virtuel "LAN_VM" pourront utiliser tous les protocoles et tous les services en sortie du réseau, sans restriction. Il est préférable de brider les flux pour contrôler ce qui peut être fait ou non sur notre réseau local virtuel.
Le pare-feu virtuel Pfsense est prêt à l'emploi, tout comme notre lab VirtualBox dans son ensemble qui est prêt à accueillir de nouvelles VMs dans le réseau local virtuel "LAN_VM". À vous de jouer ! Pour aller plus loin avec Pfsense, je vous invite à consulter cette page : Tutoriels Pfsense.
Bonjour Florian, j’ai lu votre document avec beaucoup d’intérêt et ça m’a beaucoup servi, cependant j’ai un petit soucis qui est le suivant : j’ai fini d’activé le portail captif dans Pfsense, je veux maintenant l’utiliser dans le réseau local de l’entreprise afin que les clients puissent avoir avec,vu que j’ai travaillé avec virtuelbox, mais je ne sais comment.merci d’avance et excellente suite à vous
bonjour Florian
tu es le Meilleur mon cher ami
tres bon explicaion claire