Dans de nombreuses organisations, le pare-feu est une pièce maîtresse… et, en même temps, l’un des éléments les plus difficiles à expliquer. Avec le temps, les règles s’accumulent, des exceptions apparaissent, des ports s’ouvrent pour des besoins ponctuels et des alias se créent, comprenant uniquement celui qui les a configurés. Le résultat est bien connu de tout administrateur réseau : un ensemble de politiques qui fonctionnent, certes, mais qui sont complexes à réviser, à justifier lors d’un audit ou simplement à documenter pour le changement suivant.
C’est pour répondre à cette problématique qu’est né PyFRC2G, un package en Python proposant une idée simple : convertir les règles de pare-feu de pfSense et OPNsense en diagrammes visuels de flux, générés automatiquement. L’objectif n’est pas seulement d’obtenir une présentation esthétique, mais aussi de répondre à deux besoins essentiels du quotidien : disposer d’une vision globale compréhensible de la politique de filtrage, et pouvoir présenter des preuves de contrôle et de gouvernance dans un cadre de conformité.
Fusionner deux univers très courants dans le réseau
PyFRC2G se définit comme une solution « unifiée » car elle couvre deux plateformes couramment utilisées dans des environnements professionnels et PME : pfSense et OPNsense. Le projet évite que chaque plateforme nécessite des outils et processus différents. Concrètement, l’administrateur configure l’accès à l’API du pare-feu, et le système se charge d’extraire règles, alias et interfaces afin de construire une « carte » lisible de ce qui est réellement autorisé ou bloqué.
Cette unification devient particulièrement pertinente lorsque l’infrastructure grandit : un site avec son OPNsense, une filiale avec pfSense, des environnements de test ou même des migrations progressives où les deux cohabitent. Documenter les règles manuellement dans ce contexte devient fastidieux et fragile ; PyFRC2G vise à automatiser cette étape.
Diagrammes, PDFs et signal visuel pour chaque action
Le cœur du projet repose sur le format de sortie. PyFRC2G génère des diagrammes de flux avec Graphviz et produit des PDFs en format A4 avec une page par interface, ainsi que des fichiers CSV par interface. L’outil utilise également un schéma de couleurs pour distinguer le comportement des règles : vert pour PASS, rouge pour BLOCK et jaune pour les règles désactivées. Ce choix, apparemment esthétique, facilite grandement la revue des politiques ou la préparation de réunions de sécurité.
Le projet indique également qu’il distingue entre VLAN/réseaux et hôtes de destination, et qu’il couvre des scénarios complexes rencontrés en pratique : règles flottantes, règles désactivées et différents types d’interfaces. Dans le PDF généré, le diagramme peut refléter la source, l’interface, l’action, le protocole, les ports, la destination et les commentaires de chaque règle, facilitant ainsi la vérification de la cohérence et la détection d’« exceptions éternelles » à revalider.
L’automatisation appréciée : détecter les changements et régénérer uniquement si nécessaire
Un aspect pratique majeur du projet est son approche « ne régénérer que si changement » : PyFRC2G crée un fichier CSV temporaire avec l’ensemble des règles et calcule un hash MD5 afin de le comparer à la dernière version. Si aucune modification n’est détectée, il évite de regénérer graphiques et PDFs. Cette démarche est essentielle pour deux raisons : elle réduit le temps de traitement avec de grands ensembles de règles, et elle évite de surcharger la documentation avec des versions redondantes sans valeur ajoutée.
Pour une équipe informatique, cette logique convient parfaitement à des tâches automatisables : lancement périodique du processus (par exemple chaque nuit ou après une fenêtre de changement) pour produire un PDF à jour uniquement en cas de modification réelle.
Intégration avec GRC : quand le diagramme devient une « preuve »
PyFRC2G ne se limite pas au plan technique. En option, il propose une intégration avec CISO Assistant, une plateforme open source de gouvernance, risque et conformité (GRC), permettant de importer automatiquement les PDFs comme preuves de révision. La notion de « révision » est essentielle : chaque importation crée une nouvelle version, conservant un historique des modifications de la politique pare-feu.
Dans le cadre des audits, cet historique facilite les discussions récurrentes : quand un accès a été ouvert, ce qui a changé après un incident, ou si des contrôles périodiques sont en place. Sur le plan interne, cela transforme la gestion des règles en un processus traçable, évitant qu’elle reste un art opaque.
Exigences et déploiement : ce qu’il faut pour faire fonctionner le système (et ce qu’il est conseillé de surveiller)
Le projet impose des prérequis clairs : Python 3.7 ou supérieur et Graphviz installé sur la machine, ainsi que des dépendances comme requests, graphviz et reportlab. Concernant l’accès aux firewalls, PyFRC2G s’appuie sur des APIs :
- Pour pfSense, il faut installer un paquet API REST (non officiel selon la documentation) et générer un token.
- Pour OPNsense, il faut créer des identifiants API (clé et secret) pour l’utilisateur concerné.
Le logiciel offre également une détection automatique des interfaces dans OPNsense, en essayant de consulter les endpoints ou, en cas d’échec, en déduisant les interfaces à partir des règles. Si cela ne fonctionne pas, il est possible de les configurer manuellement.
Un point important souligné dans la documentation concerne la connexion API : le package peut ignorer les erreurs SSL (en mentionnant verify=False). Cela peut être pratique en environnement de laboratoire ou en réseau interne avec des certificats auto-signés, mais il faut considérer cela comme un signe de « zone de risque » : en environnement sensible, il est conseillé d’utiliser des certificats valides et de limiter l’accès API par IP, réseau et droits.
Du script au module modulaire : la grande avancée avec la version 2.0
PyFRC2G indique dans sa documentation une évolution majeure avec la version 2.0 : son architecture devient modulaire, avec des composants séparés pour la configuration, le client API, la génération de graphiques, les utilitaires et l’intégration avec CISO Assistant. En outre, il précise que le code, les commentaires et messages sont en anglais, avec pour objectif une facilité de maintenance et d’extension.
Cela ouvre deux possibilités concrètes : l’exécuter en mode ligne de commande (outil autonome) ou l’intégrer en tant que module dans des flux automatisés, pratique pour les équipes qui automatisent déjà inventaires, sauvegardes de configurations ou pipelines de conformité.
Un petit projet avec une ambition précise
PyFRC2G ne souhaite pas « réinventer » le pare-feu ni remplacer les outils de gestion des règles. Son objectif est plus modeste : transformer une réalité complexe — les politiques de filtrage — en un format qui peut être expliqué, revisé et archivé. La différence se fait souvent dans la gestion des réseaux entre « cela fonctionne » et « c’est sous contrôle ».
Questions fréquentes
Comment générer un PDF avec le diagramme des règles de pfSense pour un audit de sécurité ?
L’outil extrait les règles via API, génère un CSV et crée un PDF au format A4 avec des diagrammes par interface, prévu pour la documentation et la preuve de conformité.
Peut-on convertir des règles OPNsense en diagramme de flux avec détection automatique des interfaces ?
Oui. PyFRC2G intègre la détection automatique des interfaces OPNsense, et si cela ne fonctionne pas, permet de spécifier manuellement celles-ci dans la configuration.
Quels avantages à documenter les règles du pare-feu avec Graphviz plutôt qu’en exportant du texte ?
L’approche visuelle permet de visualiser rapidement sources, destinations, ports et actions (PASS/BLOCK), tout en mettant en évidence les règles désactivées, ce qui accélère la revue technique et les audits.
Comment conserver un historique des changements de règles comme preuve dans un système GRC ?
PyFRC2G propose une intégration optionnelle avec CISO Assistant pour uploader les PDFs en tant que preuves de révision, ainsi qu’un historique de versions.
Source : Dépôt GitHub de PyFRC2G.