Port Guard
os-portguard · Protection
Bloque un appareil par son adresse MAC au niveau du pare-feu - la première partie de règles de couche 2 pour les ports du pare-feu.
Dans le menu
- Avec os-xgs-npu installé : XGS: Port Guard
- Sans os-xgs-npu : Firewall: Port Guard

Les appareils bloqués sont une liste d'adresses MAC, chacune une adresse complète ou ses trois à cinq premiers octets - tous les appareils d'un même fabricant. Le plugin tient à partir de la liste un alias MAC, portguard_blocked ; OPNsense le résout en adresses IPv4 et IPv6 que ses tables ARP et NDP, ou sa découverte d'hôtes, ont vu chaque appareil utiliser, et les tient à jour.
Les règles sont enregistrées par le plugin à chaque rechargement du filtre : rien d'un appareil listé ne traverse le pare-feu, sur aucune interface, et rien ne l'atteint à travers le pare-feu. Elles passent avant les règles d'interface, règle anti-lockout comprise, et ne sont jamais ajoutées aux règles du propriétaire. Rien n'est bloqué tant qu'un appareil n'est pas listé et appliqué.
OPNsense ne laisse un plugin enregistrer aucune règle Ethernet, donc deux appareils derrière le même switch se joignent toujours - leurs trames n'arrivent jamais au pare-feu - et un type de trame ne peut pas encore être filtré. Sur un Sophos XGS, des règles tenues dans le switch des ports en façade, pour qu'un appareil bloqué soit arrêté au port, sont le but ; elles ne sont pas encore écrites.
Fonctions
-
Par adresse ou par fabricant
Une adresse MAC complète, ou ses trois à cinq premiers octets pour tous les appareils d'un même fabricant.
-
Un alias MAC
portguard_blocked, qu'OPNsense résout en adresses IPv4 et IPv6 utilisées par chaque appareil, et tient à jour.
-
Règles avant les autres
Enregistrées à chaque rechargement du filtre, sur chaque interface, avant les règles d'interface et la règle anti-lockout ; jamais écrites dans les règles du propriétaire.
-
Appareils vus
Les appareils vus par le pare-feu dans la dernière journée, avec leur interface, leur adresse et leur fabricant, chacun à un clic d'être bloqué ; la page prévient d'abord qu'il peut s'agir de l'appareil en cours d'utilisation.
-
Cartes de synthèse
Combien d'appareils listés sont présents, combien d'adresses pf bloque maintenant, les paquets bloqués et les appareils vus.
Installer et mettre à jour
À partir de la version d'os-xgs-npu qui suit 0.1.0-alpha.7.1, XGS: Updates l'affiche dans son onglet Plugins — une copie installée s'y met à jour à la main, et une copie absente s'y installe — et les images prêtes construites à partir de cette version l'embarquent ; d'ici là, il s'installe et se met à jour comme ci-dessous. Aucune entrée cron ne lance la mise à jour. Pour l'installer sur une appliance XGS ou sur tout autre OPNsense, en root : depuis un checkout du dépôt avec sh install/install.sh, qui place la page sous XGS avec os-xgs-npu et sous Firewall sans lui, et garde les réglages s'il est relancé ; ou depuis le paquet de la version, os-portguard-1.0.0.pkg, vérifié avec SHA256SUMS et ajouté avec pkg. Une copie ainsi installée se met à jour par son propre self-update.py. Retirer le plugin sort ses règles de pf ; l'alias portguard_blocked reste dans Firewall: Aliases, sans rien bloquer. Il n'est pas dans le dépôt de plugins d'OPNsense.
Limites, et ce qui n'est pas encore testé
- L'écriture de l'alias depuis la page (apply.php, qui enregistre config.xml).
- Un appareil bloqué par son intermédiaire.
- Pas encore écrit : le blocage entre deux appareils derrière le même switch, le filtrage par type de trame (EtherType) et des règles tenues dans le switch d'un Sophos XGS.
- Un appareil qui change d'adresse MAC, comme avec les adresses Wi-Fi privées, n'est bloqué que sous celle qui est listée.
- Le paquet, construit par tools/make-package.sh et ajouté avec pkg.
- Une installation sur OPNsense sans os-xgs-npu.
- Une mise à jour par l'onglet Plugins ou self-update.py : 1.0.0 est la première version, aucune n'a donc encore devancé une copie installée.
Dépôt
Première version: 2026-10-25