Aller au contenu principal

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 officielhttps://github.com/olivierb46/PyFRC2G
LicenceMIT
NationalitéInternational
TypeOutil de conversion de règles de pare-feu en diagrammes graphiques
DéploiementInstallation Python, package pip
DifficultéFacile à intermédiaire
TechnologiesPython, 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