PyFRC2G
Overview
PyFRC2G (Python Firewall Rules to Graph), c'est le package Python unifié pour convertir les règles de pare-feu pfSense et OPNSense en diagrammes de flux graphiques et PDFs. PyFRC2G génère des visualisations graphiques des règles de pare-feu pour fournir une vue globale des flux réseau, facilitant la documentation visuelle et fournissant des preuves pour répondre aux exigences de conformité IT définies dans divers frameworks.
PyFRC2G se distingue par son support unifié de pfSense et OPNSense, sa détection automatique d'interfaces, sa récupération d'alias via API, sa génération de fichiers par interface, sa détection intelligente de changements (comparaison MD5), et son intégration optionnelle avec CISO Assistant pour l'upload automatique de PDFs.
Informations essentielles
| Propriété | Valeur |
|---|---|
| Site officiel | https://github.com/olivierb46/PyFRC2G |
| Licence | MIT |
| Nationalité | International |
| Type | Outil de conversion de règles de pare-feu en diagrammes graphiques |
| Déploiement | Installation Python, package pip |
| Difficulté | Facile à intermédiaire |
| Technologies | Python, Graphviz |
TL;DR
PyFRC2G, c'est le package pour convertir les règles de pare-feu pfSense et OPNSense en diagrammes de flux graphiques et PDFs pour documentation visuelle et conformité
Points clés à retenir :
- Support unifié pfSense et OPNSense
- Détection automatique d'interfaces
- Récupération d'alias via API (pas de fichier config)
- Génération de fichiers par interface (CSV et PDF)
- Détection intelligente de changements (MD5) ()
- Diagrammes de flux avec Graphviz ()
- Génération de PDFs A4
- Codage couleur (vert=PASS, rouge=BLOCK, jaune=désactivé) ()
- Intégration CISO Assistant optionnelle
Compatibilité et intégrations
- Pare-feu : pfSense, OPNSense
- API : Accès API pour récupération d'alias et règles
- Graphviz : Génération de diagrammes graphiques
- PDF : Génération de PDFs A4
- CISO Assistant : Upload automatique optionnel de PDFs
- Formats : CSV, PDF, PNG (temporaire)
Avantages
- Support unifié : Un seul package pour pfSense et OPNSense
- Détection automatique : Détection automatique des interfaces pour OPNSense
- API-based : Récupération d'alias via API (pas de config manuelle)
- Par interface : Fichiers CSV et PDF séparés par interface
- Détection de changements : Régénération uniquement si règles modifiées (MD5)
- Architecture modulaire : Code propre, maintenable et extensible
- Diagrammes graphiques : Visualisation claire des flux avec Graphviz
- PDFs professionnels : Génération de PDFs A4 pour documentation
- Codage couleur : Vert (PASS), rouge (BLOCK), jaune (désactivé)
- Mapping réseau : Distinction VLANs/réseaux et hôtes de destination
- Couverture complète : Gère règles flottantes, désactivées, tous types d'interfaces
- Intégration CISO : Upload automatique vers CISO Assistant
Limites
- Nécessite accès API au pare-feu
- Nécessite Graphviz installé
- Communauté plus petite que solutions établies
- Spécifique à pfSense et OPNSense
- Performance peut être lente pour grandes configurations
- Nécessite Python 3.7+
Fonctionnalités principales
Conversion de règles
- Support unifié : pfSense et OPNSense dans un seul package
- Récupération API : Alias récupérés automatiquement via API
- Détection d'interfaces : Détection automatique pour OPNSense
- Règles complètes : Gère toutes les règles (flottantes, désactivées, etc.)
Génération graphique
- Diagrammes de flux : Génération avec Graphviz
- PDFs A4 : Un PDF par interface + PDF global
- Codage couleur :
- 🟢 Vert pour règles PASS
- 🔴 Rouge pour règles BLOCK
- 🟡 Jaune pour règles désactivées
- Mapping réseau : Distinction VLANs/réseaux et hôtes
Optimisations
- Détection de changements : Comparaison MD5 pour éviter régénération inutile
- Fichiers par interface : CSV et PDF séparés par interface
- Nettoyage automatique : Suppression des fichiers temporaires (CSV, PNG)
Intégrations
- CISO Assistant : Upload automatique de PDFs comme révisions de preuves
- API : Récupération automatique d'alias depuis API pare-feu
Déploiement
Installation
# Cloner le repository
git clone https://github.com/olivierb46/PyFRC2G.git
cd PyFRC2G
# Installer les dépendances
pip install -r requirements.txt
# Ou installer comme package
pip install .
Prérequis
- Python : 3.7 ou supérieur
- Graphviz : Installé et dans le PATH
Installation Graphviz :
# Debian/Ubuntu
sudo apt-get install graphviz
# RHEL/CentOS
sudo yum install graphviz
# macOS
brew install graphviz
# Windows
# Télécharger depuis le site officiel Graphviz
Configuration
Éditer pyfrc2g/config.py :
# Type de pare-feu
GATEWAY_TYPE = "pfsense" # ou "opnsense"
# URL API
API_URL = "https://firewall.example.com"
# Credentials API
API_TOKEN = "your_token"
API_SECRET = "your_secret" # Pour pfSense
API_KEY = "your_key" # Pour OPNSense
# Interfaces (laisser vide [] pour auto-détection OPNSense)
INTERFACES = [] # Auto-détection pour OPNSense
# INTERFACES = ["wan", "lan", "opt1"] # Manuel si nécessaire
# CISO Assistant (optionnel)
CISO_ASSISTANT_URL = "https://ciso.example.com"
CISO_ASSISTANT_TOKEN = "your_token"
Utilisation
Exécution basique
python pyfrc2g.py
Détection automatique d'interfaces (OPNSense)
Pour OPNSense, laisser INTERFACES = [] dans la config. PyFRC2G tentera : 1. Interface API : /api/core/interfaces/listAll ou /api/core/interfaces/list 2. Depuis règles : Analyse toutes les règles pour extraire interfaces utilisées 3. Fallback : Si échec, spécifier manuellement.
Structure de sortie
results/graphs_PFS01/
├── PFS01_FLOW_MATRIX.pdf # PDF global (toutes interfaces)
├── PFS01_wan_FLOW_MATRIX.pdf # PDF interface WAN
├── PFS01_wan_flows.csv # CSV interface WAN
├── PFS01_lan_FLOW_MATRIX.pdf # PDF interface LAN
├── PFS01_lan_flows.csv # CSV interface LAN
├── PFS01_opt1_FLOW_MATRIX.pdf # PDF interface OPT1
└── md5sum.txt # Hash MD5 pour détection changements
Format PDF
Les PDFs générés contiennent :
- Une page par interface avec diagrammes de flux
- Une page pour règles flottantes
- Diagrammes de flux montrant :
- Sources : Réseaux/hôtes sources
- Gateway/Interface : Nom de l'interface pare-feu
- Actions : PASS (vert) / BLOCK (rouge) avec codage couleur
- Protocoles : Protocole IP (TCP, UDP, ICMP, etc.)
- Ports : Ports de destination ou plages de ports
- Destinations : Réseaux/hôtes de destination
- Commentaires : Descriptions des règles
- Règles désactivées : Mises en évidence en jaune
Cas d'usage
- Documentation visuelle : Vue graphique globale des règles de pare-feu
- Conformité : Preuves pour frameworks de conformité IT
- Audit sécurité : Documentation des règles pour audits
- Planification : Visualisation des flux pour planification réseau
- Formation : Documentation pour formation équipes
- CISO Assistant : Upload automatique de preuves de conformité
Détection de changements
PyFRC2G utilise une comparaison MD5 pour détecter les changements :
- Génère un hash MD5 du CSV généré
- Compare avec le hash précédent dans
md5sum.txt - Régénère les PDFs uniquement si changements détectés
- Force la régénération : Supprimer ou vider
md5sum.txt
Intégration CISO Assistant
PyFRC2G peut uploader automatiquement les PDFs générés vers CISO Assistant comme révisions de preuves :
# Dans config.py
CISO_ASSISTANT_URL = "https://ciso.example.com"
CISO_ASSISTANT_TOKEN = "your_token"
Chaque upload crée une nouvelle révision dans l'enregistrement de preuve, maintenant un historique des changements de règles de pare-feu.
Architecture
Modules
- config.py : Gestion de configuration et constantes
- api_client.py : Client API pour interactions pare-feu
- graph_generator.py : Génération de graphes et PDFs
- ciso_client.py : Intégration CISO Assistant
- utils.py : Fonctions utilitaires (MD5, URL, sanitization)
- main.py : Logique d'exécution principale
Troubleshooting
Erreur : "Could not auto-detect interfaces"
Solution : Spécifier manuellement les interfaces dans pyfrc2g/config.py :
INTERFACES = ["wan", "lan", "opt1"]
Erreur de connexion API
Vérifier :
- URL API correcte
- Credentials (token/secret/key) valides
- Certificat SSL (package ignore erreurs SSL avec
verify=False) - Pare-feu autorise accès API depuis votre IP
Aucune règle récupérée
- Vérifier que l'API retourne des données (tester avec curl ou navigateur)
- Pour OPNSense, vérifier que les interfaces spécifiées existent
- Vérifier les logs pour messages d'erreur détaillés
- Vérifier que l'utilisateur API a les permissions appropriées
Graphviz non trouvé
Installer Graphviz selon votre système (voir section Déploiement).
Ressources
- GitHub : https://github.com/olivierb46/PyFRC2G
- Documentation : README GitHub avec exemples
- Issues : Support via GitHub Issues