Règles firewall pfSense : isoler plusieurs LAN et une DMZ

Ajouter une DMZ ou un réseau invité à pfSense ne sert à rien si les règles laissent tout passer, ou bloquent tout sans que l'on sache pourquoi. Tout tient dans trois principes : le sens, l'ordre et le refus par défaut.

Schéma : pfSense entre LAN, DMZ et INVITES ; l'onglet DMZ laisse passer le DNS vers pfSense et Internet, et rejette la DMZ vers le LAN avec l'alias RESEAUX_PRIVES
Illustration schématique — ne reproduit aucune interface réelle.

Le pare-feu (firewall) de pfSense décide ce qui passe d'un réseau à l'autre. Avec un seul LAN, la configuration par défaut suffit souvent ; dès qu'une DMZ ou un réseau invité s'ajoute, il faut écrire ses propres règles. Ce tutoriel explique comment le firewall pfSense lit ses règles, puis construit un jeu de règles pour trois réseaux internes.

Une règle mal placée peut couper l'accès à l'interface d'administration. Travaillez d'abord sur un lab et sauvegardez la configuration avant toute modification en production.

Comment pfSense lit ses règles

La documentation Netgate pose quelques principes qu'il faut connaître avant d'écrire la première règle.

Les onglets n'ont pas tous le même poids. Netgate indique l'ordre de traitement des règles de niveau 3 : d'abord les règles Floating, puis les règles des groupes d'interfaces, enfin les règles de chaque interface. Un blocage dans un groupe ne peut donc pas être annulé par une règle d'onglet d'interface.

Ce que contient pfSense par défaut

OngletRègles présentes après installationEffet
WANblocage des réseaux privés et des bogons, si activéstout le trafic entrant non sollicité est refusé
LANrègle anti-lockout, « Default allow LAN to any » en IPv4 et IPv6le LAN sort partout et garde l'accès à l'interface web
nouvelle interface (OPT)aucune règletout ce qui y entre tombe dans le refus par défaut

La dernière ligne surprend souvent : une DMZ fraîchement créée ne peut même pas résoudre un nom DNS. C'est le comportement attendu d'une politique de refus par défaut, que Netgate présente comme la bonne pratique : n'autoriser que le strict nécessaire.

Le lab : trois réseaux internes

RéseauInterface pfSenseAdresse pfSenseCe qui doit passer
LAN (administration)LAN192.168.10.1/24tout, y compris vers la DMZ
DMZ (serveurs exposés)OPT1, renommée DMZ192.168.30.1/24DNS vers pfSense, Internet, rien vers les réseaux internes
INVITES (Wi-Fi)OPT2, renommée INVITES192.168.20.1/24DNS vers pfSense, Internet seulement

Si vous partez de zéro, installez d'abord pfSense dans VirtualBox et ajoutez une carte par réseau. Une fois les interfaces affectées et nommées, leurs onglets apparaissent sous Firewall > Rules avec leur nom descriptif.

Étape 1 : un alias pour les réseaux privés

Netgate recommande les alias pour garder un jeu de règles court. Créez sous Firewall > Aliases un alias de type réseau, par exemple RESEAUX_PRIVES, contenant les trois blocs RFC 1918 : 10.0.0.0/8, 172.16.0.0/12 et 192.168.0.0/16. Une seule règle pourra ainsi refuser tous les réseaux internes, présents et futurs.

Étape 2 : les règles de la DMZ

Sur l'onglet DMZ, ajoutez les règles dans cet ordre exact :

OrdreActionProtocoleSourceDestinationPortRôle
1PassTCP/UDPDMZ subnetsThis firewall (self)53résolution DNS par pfSense
2RejectAnyDMZ subnetsRESEAUX_PRIVEStousaucun accès aux réseaux internes
3PassAnyDMZ subnetsAnytousaccès à Internet

L'ordre fait tout. Une requête DNS correspond à la règle 1 et passe. Une connexion vers le LAN ne correspond pas à la règle 1, correspond à la règle 2 et est rejetée. Une connexion vers Internet n'est ni du DNS vers pfSense ni une destination privée : elle atteint la règle 3. Inversez les règles 2 et 3, et la DMZ joint le LAN.

Quelques champs méritent attention dans l'éditeur de règle :

Étape 3 : les invités et le LAN

L'onglet INVITES reprend exactement le même schéma, avec la source « INVITES subnets ». Si un portail captif avec authentification RADIUS est actif sur ce réseau, la règle 1 (DNS) est indispensable : sans résolution DNS, la page de connexion ne s'affiche jamais.

Côté LAN, la règle par défaut « allow LAN to any » laisse déjà passer le trafic vers la DMZ. Pour aller plus loin, Netgate conseille de remplacer cette règle permissive par des autorisations précises, et de réserver l'accès à l'administration de pfSense à un alias d'hôtes de confiance avant de désactiver l'anti-lockout.

Ne désactivez pas la règle anti-lockout (System > Advanced) avant d'avoir créé et testé la règle qui vous garde l'accès à l'interface web : sinon, vous vous enfermez dehors.

Block ou reject ?

Block jette le paquet sans réponse ; le client attend l'expiration de son délai. Reject répond par un TCP RST ou, pour l'UDP, un ICMP « unreachable ». Netgate recommande block sur le WAN et reject sur les interfaces internes.

ContexteAction conseillée
Règles du WANBlock
Refus entre réseaux internes (DMZ vers LAN)Reject

Vérifier que les règles font ce que vous croyez

Voir aussi la configuration de pfSense, le comparatif OPNsense vs pfSense et la rubrique réseau et pare-feu.

Questions fréquentes

Dans quel ordre pfSense applique-t-il les règles ?

D'abord les règles Floating, puis celles des groupes d'interfaces, enfin celles de chaque interface. Sur un onglet d'interface, la première règle qui correspond, lue de haut en bas, s'applique et l'évaluation s'arrête.

Pourquoi ma nouvelle interface DMZ ne laisse rien passer ?

Une interface ajoutée n'a aucune règle. Tout ce qui y entre tombe dans le refus par défaut. Ajoutez au minimum une règle pour le DNS vers pfSense et une pour l'accès voulu.

Faut-il créer des règles pour le trafic retour ?

Non. pfSense est un pare-feu à états : quand une connexion est autorisée, la table d'états laisse passer automatiquement les réponses. Les règles sortantes ne sont jamais nécessaires sur les onglets d'interface.

Comment empêcher la DMZ d'accéder au LAN ?

Sur l'onglet DMZ, placez une règle reject vers un alias des réseaux privés RFC 1918 au-dessus de la règle qui autorise l'accès à Internet. L'ordre est décisif : la première règle qui correspond l'emporte.

Block ou reject sur pfSense ?

Netgate recommande block sur le WAN, pour ne donner aucune réponse à Internet, et reject sur les interfaces internes, pour que les applications échouent tout de suite au lieu d'attendre l'expiration du délai.