Files

8.9 KiB
Raw Permalink Blame History

🛡️ Audit Firewall - Network Reputation Service

Version PowerShell License

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

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

  1. Téléchargez le script dans un dossier dédié
  2. 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
    
  3. 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 :

  1. Analyse du contenu : Recherche de mots-clés de pages de blocage
  2. Timeouts réseau : Requêtes qui expirent (probable blocage firewall)
  3. Erreurs de connexion : Impossibilité d'atteindre le serveur
  4. 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 :

  1. 🕐 Exécuter en heures creuses
  2. 📊 Analyser les résultats dans le contexte
  3. 🔄 Maintenir à jour le fichier JSON
  4. 📈 Suivre l'évolution des scores dans le temps

🤝 Contribution

Pour contribuer :

  1. Fork le projet
  2. Créez votre branche feature
  3. Committez vos changements
  4. Poussez vers la branche
  5. 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