Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 414 minIntermédiaire

Règles de pare-feu pfSense : ordre, alias et journalisation

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • dérouler l'ordre dans lequel pfSense évalue un paquet ;
  • remplir chaque champ d'une règle et choisir entre Block et Reject ;
  • créer des alias pour des adresses, des réseaux et des ports ;
  • savoir quand utiliser une règle flottante, un groupe ou un horaire ;
  • décider quoi journaliser.

4 exercices corrigés1 schéma

Une règle de pare-feu pfSense décide du sort des paquets qui entrent par une interface : les laisser passer (Pass), les jeter sans réponse (Block) ou les refuser en prévenant l'émetteur (Reject). Les règles d'une interface sont lues de haut en bas et la première qui correspond s'applique ; ce qui ne correspond à aucune règle est bloqué. Ce chapitre explique l'ordre d'évaluation complet, chaque champ d'une règle, les alias, les règles flottantes, la journalisation et les horaires.

Où se trouvent les règles

Firewall > Rules affiche un onglet par interface (WAN, ADMIN, POSTES, SERVEURS…), plus des onglets spéciaux :

  • Floating : les règles flottantes, qui peuvent s'appliquer à plusieurs interfaces et dans les deux sens ;
  • un onglet par groupe d'interfaces (par exemple INTERNES) ;
  • un onglet par type de VPN : IPsec, OpenVPN, WireGuard ; chacun regroupe le trafic qui sort des tunnels de ce type (chapitres 9 et 10).

Une modification n'est active qu'après Apply Changes, le bandeau qui s'affiche en haut de la page : tant que tu n'as pas cliqué, l'ancienne politique reste en place.

L'ordre d'évaluation

Pour un paquet qui arrive, pfSense regarde d'abord la table d'états : s'il appartient à une connexion déjà autorisée, il passe sans lire aucune règle (chapitre 1). Sinon, les règles sont évaluées dans cet ordre :

  1. les règles automatiques que pfSense ajoute lui-même et n'affiche pas toutes : blocage des réseaux privés et des bogons sur le WAN, règle anti-lockout, accès au serveur ou au relais DHCP, règles des VPN ;
  2. les règles flottantes (onglet Floating) ;
  3. les règles des groupes d'interfaces ;
  4. les règles de l'interface, de haut en bas : la première qui correspond décide ;
  5. la règle de blocage par défaut (Default deny rule IPv4, Default deny rule IPv6), invisible, qui bloque et journalise tout le reste.
Paquet qui entre par l'interface POSTESTable d'étatsle paquet appartient-il à une connexion connue ?ouiPasse aussitôtaucune règle luenon1. Règles automatiquesanti-lockout, bogons, DHCP, VPN, portail captif2. Règles flottantesonglet Floating, option Quick cochée3. Règles des groupes d'interfacesonglet du groupe, par exemple INTERNES4. Règles de l'onglet POSTESlues de haut en basaucune ne correspondDefault deny rule IPv4bloqué et journaliséUne règle correspondelle décide seule :Pass : ligne d'état crééeBlock ou Rejectles suivantes ne sont pas lues
L'ordre d'évaluation : la table d'états d'abord, puis les règles, la première qui correspond décide

Le trafic émis par le pare-feu lui-même (ses requêtes DNS, ses mises à jour, l'envoi de ses journaux) est autorisé en sortie par une règle automatique : on ne filtre que ce qui entre.

Les champs d'une règle

Firewall > Rules > POSTES > Add (la flèche vers le haut ajoute la règle en haut de la liste, la flèche vers le bas en bas) :

ChampValeursÀ savoir
ActionPass, Block, RejectVoir plus bas la différence entre Block et Reject
DisabledCaseDésactive la règle sans la supprimer : pratique pour un test
InterfacePOSTESL'interface d'entrée du trafic
Address FamilyIPv4, IPv6, IPv4+IPv6
ProtocolTCP, UDP, TCP/UDP, ICMP, ESP, Any…Pour ICMP, on peut choisir les sous-types (echo request pour le ping)
Sourceany, Single host or alias, Network, This Firewall (self), POSTES subnets, POSTES address…Invert match inverse la condition (« tout sauf »)
Source Port Rangeany par défaut, caché derrière Display AdvancedPresque toujours any : le port source d'un client est tiré au hasard
DestinationMêmes choix que la source
Destination Port RangeUn port, une plage, un alias de portsSeulement pour TCP et UDP
LogCase Log packets that are handled by this ruleÉcrit chaque correspondance dans le journal
DescriptionTexte libreIndispensable : c'est elle qui s'affiche dans le journal
Advanced OptionsHoraire (Schedule), passerelle, type d'état, limites…Voir plus bas

Les objets automatiques simplifient l'écriture et suivent les changements d'adresse :

ObjetCe qu'il désigne chez Sorbier
POSTES subnetsLe réseau de l'interface : 192.168.10.64/26
POSTES addressL'adresse du pare-feu sur cette interface : 192.168.10.126
This Firewall (self)Toutes les adresses du pare-feu, sur toutes ses interfaces
WAN addressL'adresse publique : 203.0.113.17

Block ou Reject ?

BlockReject
Ce que fait le pare-feuJette le paquet en silenceJette le paquet et répond : TCP RST pour TCP, ICMP « port injoignable » pour UDP
Ce que voit l'émetteurRien : il attend, puis abandonne après plusieurs secondesUn refus immédiat
Où l'utiliserSur le WAN : ne rien révéler à un balayage de portsEntre zones internes : un poste qui tente un accès interdit reçoit une erreur tout de suite, au lieu de bloquer l'application

Le refus implicite de pfSense est un Block. Pour les règles de refus que tu écris entre zones internes, Reject évite les délais d'attente et les tickets « l'application est lente ».

Les alias

Un alias donne un nom à une adresse, un réseau, une liste d'adresses ou de ports. Firewall > Aliases, onglets IP, Ports et URLs. Les avantages :

  • les règles deviennent lisibles : SRV_DC plutôt que deux adresses ;
  • une modification se fait à un seul endroit : un nouveau contrôleur de domaine ? On l'ajoute à l'alias, toutes les règles suivent ;
  • une seule règle remplace plusieurs règles identiques à l'adresse près.
TypeContenuExemple
Host(s)Adresses ou noms DNS (résolus régulièrement par pfSense)Les deux contrôleurs de domaine
Network(s)Réseaux en notation CIDR, ou adressesTous les réseaux internes
Port(s)Ports et plages (49152:65535)Les ports d'Active Directory
URL (IPs), URL Table (IPs)Une liste d'adresses ou de réseaux téléchargée régulièrementUne liste de blocage publiée par un organisme de sécurité
URL (Ports), URL Table (Ports)Une liste de ports téléchargéePlus rare

Le nom d'un alias ne contient que des lettres, des chiffres et des tirets bas (SRV_DC). Un alias peut contenir d'autres alias. Diagnostics > Tables montre le contenu réel d'un alias tel que le pare-feu l'utilise : utile pour un alias de noms DNS ou une liste téléchargée.

Voici les alias de Sorbier, utilisés dans tout le cours :

AliasTypeContenu
SRV_DCHost(s)192.168.10.177, 192.168.10.181 (srv-ad, srv-ad2)
SRV_FICHIERSHost(s)192.168.10.178
SRV_GESTIONHost(s)192.168.10.179
SRV_JOURNAUXHost(s)192.168.10.180 (Wazuh, Zabbix, Grafana)
SRV_WEBHost(s)192.168.10.225
BASTIONHost(s)192.168.10.210 (bastion d'administration)
DC_MACONHost(s)192.168.20.10 (contrôleur en lecture seule de Mâcon)
SRV_MACONHost(s)192.168.20.11 (fichiers et DHCP de Mâcon)
SERVEURS_MACONHost(s)DC_MACON, SRV_MACON (un alias peut contenir d'autres alias)
RESEAUX_INTERNESNetwork(s)192.168.10.0/24, 192.168.20.0/24 (Mâcon), 10.8.0.0/23 (les deux réseaux VPN nomades)
PORTS_AD_TCPPort(s)53, 88, 135, 389, 445, 464, 636, 3268, 3269, 49152:65535
PORTS_AD_UDPPort(s)53, 67, 88, 123, 389, 464
PORTS_WAZUHPort(s)1514, 1515
PORTS_ADMINPort(s)22, 443, 3389
PORTS_DFSRPort(s)135, 49152:65535 (réplication DFS-R, qui passe par RPC)
PORTS_WEBPort(s)80, 443

10.8.0.0/23 couvre 10.8.0.0 à 10.8.1.255, donc les deux réseaux VPN 10.8.0.0/24 et 10.8.1.0/24 d'un coup.

Les règles flottantes

L'onglet Floating accueille des règles qui diffèrent des règles d'interface sur trois points :

  • elles peuvent s'appliquer à plusieurs interfaces à la fois (champ Interface à choix multiple) ;
  • elles ont une direction : in, out ou any, là où les règles d'interface ne voient que le trafic entrant ;
  • l'option Quick change la logique : cochée, la première règle qui correspond décide, comme ailleurs ; décochée, la règle ne s'applique que si aucune autre règle ne correspond ensuite (« la dernière qui correspond gagne »). Coche Quick dans presque tous les cas.

Les règles flottantes entrantes sont lues avant les règles des interfaces. Usages typiques : une interdiction qui doit valoir partout quelles que soient les règles des interfaces (bloquer une liste d'adresses malveillantes dans les deux sens), le classement du trafic pour la qualité de service (action Match), ou le filtrage du trafic émis par le pare-feu lui-même. Pour le reste, préfère les onglets d'interface : une politique dispersée dans les règles flottantes devient illisible.

Journaliser

Deux sources alimentent le journal du pare-feu (Status > System Logs > Firewall) :

  • la règle de blocage par défaut, journalisée par défaut (réglage Default Firewall "block" Rules dans Status > System Logs > Settings) : tout ce qui est refusé faute de règle y apparaît ;
  • les règles dont la case Log est cochée.

Que journaliser ? Toutes les règles de refus explicite (elles signalent des tentatives), les règles d'autorisation sensibles (administration, accès depuis la DMZ, VPN), et ponctuellement une règle que tu mets au point. Ne journalise pas tout le trafic autorisé courant : le journal local tourne vite (500 Kio par fichier par défaut) et les lignes utiles s'y noient. Les journaux partent de toute façon vers Wazuh, qui les conserve et les analyse (chapitre 15).

Dans le journal, une icône devant chaque ligne indique l'action ; un clic dessus affiche la règle qui a décidé. Les icônes Easy Rule ajoutent en un clic une règle qui autorise (ou bloque) la source ou le flux de la ligne : pratique en maquette, à manier avec prudence en production, car la règle créée est souvent plus large que nécessaire.

Les horaires

Firewall > Schedules définit des plages horaires (jours, heures), que l'on choisit ensuite dans le champ Schedule des options avancées d'une règle. Une règle Pass associée à un horaire n'autorise que pendant cette plage. Chez Sorbier, l'accès Internet du Wi-Fi invité n'est ouvert que du lundi au samedi, de 7 h à 20 h. À la fin de la plage, pfSense supprime par défaut les états des connexions ouvertes par cette règle : les visiteurs sont déconnectés.

Organiser un onglet

Un onglet bien tenu se relit en une minute :

  • les règles sont regroupées par destination ou par service, séparées par des séparateurs (bouton Separator) titrés : « Annuaire », « Serveurs métier », « Internet » ;
  • chaque règle a une description qui dit le besoin, pas la technique : « Postes vers application de gestion » plutôt que « TCP 443 vers 179 » ;
  • l'onglet se termine par un refus explicite journalisé, avec une description qui nomme l'interface : la ligne du journal dit alors « Refus final POSTES » plutôt que « Default deny rule IPv4 » ;
  • les règles inutiles sont supprimées, pas seulement désactivées, après une période d'observation.

Exercices

Exercice 1 sur 4 Quelle règle s'applique ? Réussi À revoir

Onglet POSTES, dans l'ordre :

N°ActionProtocoleSourceDestinationPort
1PassTCPPOSTES subnetsSRV_FICHIERS445
2RejectAnyPOSTES subnetsRESEAUX_INTERNES*
3PassTCPPOSTES subnetsanyPORTS_WEB
4PassTCPPOSTES subnetsSRV_GESTION443

Pour chaque flux, dis quelle règle s'applique et le résultat : (a) 192.168.10.80 vers 192.168.10.178:445 ; (b) 192.168.10.80 vers 192.168.10.179:443 ; (c) 192.168.10.80 vers 203.0.113.200:443 ; (d) 192.168.10.80 vers 192.168.10.225:443.

Voir la réponseMasquer la réponse de l'exercice 1
  • (a) Règle 1 : autorisé.
  • (b) Règle 2 : 192.168.10.179 fait partie de RESEAUX_INTERNES (192.168.10.0/24) ; le flux est refusé, et la règle 4 n'est jamais lue. Il faut remonter la règle 4 au-dessus de la règle 2.
  • (c) Règle 3 : 203.0.113.200 n'est pas dans RESEAUX_INTERNES, la règle 2 ne correspond pas ; la règle 3 autorise HTTPS vers any.
  • (d) Règle 2 : le serveur web de la DMZ a une adresse interne, 192.168.10.225, comprise dans RESEAUX_INTERNES ; refusé. S'il faut l'autoriser, une règle précise vers SRV_WEB port 443 au-dessus de la règle 2.

Tu avais trouvé ?

Exercice 2 sur 4 Remplir une règle Réussi À revoir

Les postes doivent pouvoir envoyer les événements de leur agent Wazuh à srv-journaux. Remplis les champs pfSense : action, interface, famille d'adresses, protocole, source, destination, port de destination, journalisation, description. Où places-tu la règle ?

Voir la réponseMasquer la réponse de l'exercice 2
ChampValeur
ActionPass
InterfacePOSTES
Address FamilyIPv4
ProtocolTCP
SourcePOSTES subnets (port source any)
DestinationSingle host or alias : SRV_JOURNAUX
Destination Port RangePORTS_WAZUH (1514 pour les événements, 1515 pour l'enrôlement de l'agent)
LogNon coché : flux autorisé, courant et volumineux
Description« Postes vers Wazuh (agent) »

Elle va au-dessus du refus vers RESEAUX_INTERNES, sinon elle ne serait jamais lue.

Tu avais trouvé ?

Exercice 3 sur 4 This Firewall ou POSTES address ? Réussi À revoir

Un technicien veut que les postes puissent pinguer leur passerelle pour les diagnostics. Il écrit : Pass, ICMP, source POSTES subnets, destination This Firewall (self). Qu'autorise réellement cette règle ? Corrige-la.

Voir la réponseMasquer la réponse de l'exercice 3

This Firewall (self) désigne toutes les adresses du pare-feu : la règle permet aux postes de pinguer aussi 192.168.10.222 (ADMIN), 192.168.10.238 (DMZ) et l'adresse publique. Ce n'est qu'un ping, mais cela révèle l'existence des autres réseaux, et la même erreur avec un port TCP ouvrirait l'interface d'administration. Correction : destination POSTES address, protocole ICMP, sous-type echo request.

Tu avais trouvé ?

Exercice 4 sur 4 Block, Reject, et l'utilisateur qui attend Réussi À revoir

Les comptables se plaignent : quand ils cliquent sur un ancien raccourci vers \\192.168.10.185\archives (un serveur retiré), l'explorateur se fige une vingtaine de secondes avant d'afficher une erreur. La dernière règle de l'onglet POSTES est Block, any, vers RESEAUX_INTERNES, journalisée. Explique le phénomène et propose une correction.

Voir la réponseMasquer la réponse de l'exercice 4

Block jette le paquet SYN sans répondre : le poste ne sait pas que l'accès est refusé, il retransmet plusieurs fois, puis abandonne après le délai d'attente, d'où le blocage de l'explorateur. Avec Reject, le pare-feu répond immédiatement par un TCP RST : l'erreur s'affiche tout de suite. Entre zones internes, Reject est préférable ; on garde Block sur le WAN. On peut aussi supprimer le raccourci obsolète, ou le rediriger (DFS) vers le nouvel emplacement des archives.

Tu avais trouvé ?

Chapitre terminé !

Fais les 4 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : De la matrice des flux aux règles : la politique de SorbierRevoir le sommaire du cours