🛡️ Audit Firewall - Network Reputation Service
Un outil d'audit PowerShell professionnel pour évaluer l'efficacité du filtrage de votre firewall en testant des URLs catégorisées selon leur réputation réseau.
📋 Table des matières
- Aperçu
- Fonctionnalités
- Prérequis
- Installation
- Utilisation
- Configuration
- Rapport généré
- Structure des données
- Système de scoring
- Dépannage
- Contribution
- Licence
🎯 Aperçu
Ce script PowerShell teste l'efficacité de votre firewall en vérifiant si des URLs malveillantes sont correctement bloquées et si des sites légitimes restent accessibles. Il génère un rapport HTML professionnel avec scoring, statistiques et recommandations.
Auteur : Hubert Cornet
Version : 1.3
Date : 03/09/2025
✨ Fonctionnalités
- 🔍 Test automatisé de centaines d'URLs catégorisées
- 📊 Scoring intelligent avec notes de A+ à F
- 📱 Rapport HTML responsive avec interface interactive
- 🔧 Support des proxies avec authentification
- ⚡ Barres de progression en temps réel
- 🎨 Visualisations colorées des résultats
- 💾 Export JSON des données brutes
- 🌐 Détection multi-méthodes des blocages
📋 Prérequis
Système requis
- Windows 10/11 ou Windows Server 2016+
- PowerShell 5.1 ou supérieur
- Connexion Internet active
- Droits d'écriture dans le répertoire du script
Modules PowerShell (installés automatiquement)
PSWriteHTML
PSWriteColor
Fichiers requis
file-nrs.json
- Base de données des URLs catégorisées
🚀 Installation
- Téléchargez le script dans un dossier dédié
- Téléchargez le fichier JSON depuis :
https://gitea.tips-of-mine.com/Tips-Of-Mine/Powershell/src/branch/main/cybersecurity/Network%20Reputation%20Service/file-nrs.json
- Placez les deux fichiers dans le même répertoire
💻 Utilisation
Utilisation basique
.\AuditFirewall.ps1
Avec proxy
.\AuditFirewall.ps1 -ProxyUrl "http://proxy.entreprise.com:8080"
Avec authentification proxy
.\AuditFirewall.ps1 -ProxyUrl "http://proxy.entreprise.com:8080" -ProxyUseAuthentication
Avec timeout personnalisé
.\AuditFirewall.ps1 -TimeoutSeconds 15
⚙️ Configuration
Paramètres disponibles
Paramètre | Type | Description | Défaut |
---|---|---|---|
ProxyUrl |
String | URL du proxy réseau | Aucun |
ProxyUseAuthentication |
Switch | Active l'auth proxy | False |
TimeoutSeconds |
Integer | Délai d'attente par URL | 10 |
Personnalisation des mots-clés de blocage
Modifiez la variable $BlockKeywords
dans le script :
$BlockKeywords = @("site bloqué", "access denied", "filtrage web", "Access Denied", "Site Blocked")
📊 Rapport généré
Le script génère automatiquement :
📁 Structure des fichiers de sortie
Rapports/
└── [Date et Heure]/
├── Audit_Firewall_Report.html # Rapport principal
└── Results.json # Données brutes
🎨 Contenu du rapport HTML
- Résumé exécutif : Score global et statistiques clés
- Tableau des scores : Performance par catégorie
- Détails interactifs : Tests individuels par URL
- Barème de notation : Explication du système de scoring
📁 Structure des données
Format du fichier file-nrs.json
{
"categorie": [
{
"id": "malware",
"nom": "Malware",
"description": "Sites distribuant des logiciels malveillants",
"urls": [
{
"url": "http://example-malware.com",
"reputation": "malicious",
"expected_action": "block"
},
{
"url": "https://legitimate-site.com",
"reputation": "safe",
"expected_action": "allow"
}
]
}
]
}
Actions attendues
"block"
: L'URL doit être bloquée par le firewall"allow"
: L'URL doit rester accessible
📈 Système de scoring
Barème de notation
Note | Score | Interprétation |
---|---|---|
A+ | 95-100% | 🟢 Excellent / Parfait |
A | 90-95% | 🟢 Très bon niveau de filtrage |
B+ | 85-90% | 🟡 Très bon |
B | 80-85% | 🟡 Bon, quelques ajustements |
C+ | 75-80% | 🟠 Assez bon |
C | 70-75% | 🟠 Moyen, lacunes importantes |
D+ | 65-70% | 🔴 Passable |
D | 60-65% | 🔴 Faible, filtrage inefficace |
E+ | 55-60% | 🔴 Très faible |
E | 50-55% | 🔴 Insuffisant |
F+ | 45-50% | ⚫ Critique |
F | 0-45% | ⚫ Action immédiate requise |
Méthode de calcul
Score = (URLs correctement filtrées / Total URLs testées) × 100
🔍 Méthodes de détection
Comment le script détecte un blocage :
- Analyse du contenu : Recherche de mots-clés de pages de blocage
- Timeouts réseau : Requêtes qui expirent (probable blocage firewall)
- Erreurs de connexion : Impossibilité d'atteindre le serveur
- Codes de statut HTTP : Analyse des réponses serveur
Headers HTTP simulés :
Le script simule un navigateur moderne pour éviter la détection :
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...
Accept: text/html,application/xhtml+xml,application/xml...
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
🔧 Dépannage
Problèmes courants
❌ "Le fichier 'file-nrs.json' n'existe pas!"
Solution : Téléchargez le fichier JSON depuis le lien fourni et placez-le dans le même dossier que le script.
❌ "Impossible d'installer le module X"
Solution : Exécutez PowerShell en tant qu'administrateur ou utilisez :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
❌ Timeouts fréquents
Solutions :
- Augmentez la valeur de
-TimeoutSeconds
- Vérifiez votre connexion réseau
- Configurez correctement les paramètres proxy
❌ Faux positifs/négatifs
Solutions :
- Mettez à jour les mots-clés de blocage
- Vérifiez la configuration de votre firewall
- Adaptez le fichier JSON à votre environnement
🏢 Cas d'usage recommandés
📅 Utilisation périodique
- Audit mensuel de l'efficacité du firewall
- Validation après mise à jour des règles
- Benchmarking entre solutions de sécurité
👥 Reporting managérial
- Tableaux de bord pour la direction IT
- KPIs de sécurité mesurables
- Justification des investissements sécurité
🔧 Tests de configuration
- Validation après changements réseau
- Tests de régression des règles firewall
- Audit de conformité sécurité
⚠️ Limitations techniques
Points d'attention :
- Tests séquentiels : Pas de parallélisation (peut être lent)
- Détection basique : Repose sur des mots-clés prédéfinis
- Faux positifs : Sites légitimes temporairement inaccessibles
- Sécurité : Le script contacte réellement les URLs testées
Bonnes pratiques :
- 🕐 Exécuter en heures creuses
- 📊 Analyser les résultats dans le contexte
- 🔄 Maintenir à jour le fichier JSON
- 📈 Suivre l'évolution des scores dans le temps
🤝 Contribution
Pour contribuer :
- Fork le projet
- Créez votre branche feature
- Committez vos changements
- Poussez vers la branche
- Ouvrez une Pull Request
Idées d'améliorations :
- Parallélisation des tests pour améliorer les performances
- Détection plus sophistiquée des pages de blocage
- Support de bases de données de réputations externes
- Interface graphique pour la configuration
- Intégration avec des APIs de threat intelligence
🎯 Roadmap
Version 1.4 (prévue)
- Tests parallèles pour améliorer les performances
- Support des certificats SSL personnalisés
- Notifications par email des résultats
Version 2.0 (future)
- Interface web pour la configuration
- Intégration avec des solutions SIEM
- API REST pour l'automatisation
📞 Support
Pour obtenir de l'aide ou signaler des problèmes :
- 📧 Contactez l'auteur : Hubert Cornet
- 🐛 Ouvrez une issue sur le dépôt du projet
- 📚 Consultez la documentation technique
📄 Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE
pour plus de détails.
⭐ Si ce script vous a été utile, n'hésitez pas à lui donner une étoile !
Dernière mise à jour : 03 septembre 2025