Files

8.9 KiB
Raw Permalink Blame History

🛡️ Firewall-Audit - Network Reputation Service

Version PowerShell License

Ein professionelles PowerShell-Audit-Tool zur Bewertung der Filtereffektivität Ihrer Firewall durch das Testen kategorisierter URLs basierend auf ihrer Netzwerk-Reputation.

📋 Inhaltsverzeichnis

🎯 Überblick

Dieses PowerShell-Skript testet die Effektivität Ihrer Firewall, indem es überprüft, dass schädliche URLs korrekt blockiert werden, während legitime Websites zugänglich bleiben. Es generiert einen professionellen HTML-Bericht mit Bewertung, Statistiken und Empfehlungen.

Autor: Hubert Cornet
Version: 1.3
Datum: 3. September 2025

Funktionen

  • 🔍 Automatisiertes Testen von Hunderten kategorisierter URLs
  • 📊 Intelligente Bewertung mit Noten von A+ bis F
  • 📱 Responsive HTML-Berichte mit interaktiver Benutzeroberfläche
  • 🔧 Proxy-Unterstützung mit Authentifizierung
  • Echtzeit-Fortschrittsbalken
  • 🎨 Farbkodierte Visualisierungen der Ergebnisse
  • 💾 JSON-Export der Rohdaten
  • 🌐 Multi-Methoden-Erkennung von Blockierungen

📋 Voraussetzungen

Systemanforderungen

  • Windows 10/11 oder Windows Server 2016+
  • PowerShell 5.1 oder höher
  • Aktive Internetverbindung
  • Schreibrechte im Skript-Verzeichnis

PowerShell-Module (werden automatisch installiert)

  • PSWriteHTML
  • PSWriteColor

Erforderliche Dateien

  • file-nrs.json - Datenbank kategorisierter URLs

🚀 Installation

  1. Laden Sie das Skript in einen dedizierten Ordner herunter
  2. Laden Sie die JSON-Datei von hier herunter:
    https://gitea.tips-of-mine.com/Tips-Of-Mine/Powershell/src/branch/main/cybersecurity/Network%20Reputation%20Service/file-nrs.json
    
  3. Platzieren Sie beide Dateien im selben Verzeichnis

💻 Nutzung

Grundlegende Nutzung

.\AuditFirewall.ps1

Mit Proxy

.\AuditFirewall.ps1 -ProxyUrl "http://proxy.unternehmen.com:8080"

Mit Proxy-Authentifizierung

.\AuditFirewall.ps1 -ProxyUrl "http://proxy.unternehmen.com:8080" -ProxyUseAuthentication

Mit benutzerdefiniertem Timeout

.\AuditFirewall.ps1 -TimeoutSeconds 15

⚙️ Konfiguration

Verfügbare Parameter

Parameter Typ Beschreibung Standard
ProxyUrl String Netzwerk-Proxy-URL Keine
ProxyUseAuthentication Switch Proxy-Authentifizierung aktivieren False
TimeoutSeconds Integer Timeout pro URL 10

Anpassung der Block-Schlüsselwörter

Bearbeiten Sie die Variable $BlockKeywords im Skript:

$BlockKeywords = @("Seite blockiert", "Zugriff verweigert", "Web-Filterung", "Access Denied", "Site Blocked")

📊 Generierter Bericht

Das Skript generiert automatisch:

📁 Ausgabe-Dateistruktur

Rapports/
└── [Datum und Uhrzeit]/
    ├── Audit_Firewall_Report.html    # Hauptbericht
    └── Results.json                   # Rohdaten

🎨 HTML-Berichtsinhalt

  • Zusammenfassung: Gesamtpunktzahl und wichtige Statistiken
  • Punktetabelle: Leistung nach Kategorie
  • Interaktive Details: Einzelne Tests pro URL
  • Bewertungsskala: Erklärung des Bewertungssystems

📁 Datenstruktur

Format von file-nrs.json

{
  "categorie": [
    {
      "id": "malware",
      "nom": "Malware",
      "description": "Websites, die schädliche Software verbreiten",
      "urls": [
        {
          "url": "http://beispiel-malware.com",
          "reputation": "malicious",
          "expected_action": "block"
        },
        {
          "url": "https://legitime-website.com",
          "reputation": "safe",
          "expected_action": "allow"
        }
      ]
    }
  ]
}

Erwartete Aktionen

  • "block": URL sollte von der Firewall blockiert werden
  • "allow": URL sollte zugänglich bleiben

📈 Bewertungssystem

Notenskala

Note Punktzahl Interpretation
A+ 95-100% 🟢 Ausgezeichnet / Perfekt
A 90-95% 🟢 Sehr gutes Filtering-Niveau
B+ 85-90% 🟡 Sehr gut
B 80-85% 🟡 Gut, einige Anpassungen nötig
C+ 75-80% 🟠 Ziemlich gut
C 70-75% 🟠 Durchschnittlich, erhebliche Lücken
D+ 65-70% 🔴 Akzeptabel
D 60-65% 🔴 Schwach, ineffektives Filtering
E+ 55-60% 🔴 Sehr schwach
E 50-55% 🔴 Unzureichend
F+ 45-50% Kritisch
F 0-45% Sofortige Maßnahmen erforderlich

Berechnungsmethode

Punktzahl = (Korrekt gefilterte URLs / Gesamtzahl getesteter URLs) × 100

🔍 Erkennungsmethoden

Wie das Skript Blockierungen erkennt:

  1. Inhaltsanalyse: Suche nach Schlüsselwörtern von Blockierungsseiten
  2. Netzwerk-Timeouts: Anfragen, die ablaufen (wahrscheinliche Firewall-Blockierung)
  3. Verbindungsfehler: Unfähigkeit, den Server zu erreichen
  4. HTTP-Statuscodes: Analyse der Serverantworten

Simulierte HTTP-Header:

Das Skript simuliert einen modernen Browser, um Erkennung zu vermeiden:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...
Accept: text/html,application/xhtml+xml,application/xml...
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7

🔧 Fehlerbehebung

Häufige Probleme

"Datei 'file-nrs.json' existiert nicht!"

Lösung: Laden Sie die JSON-Datei vom bereitgestellten Link herunter und platzieren Sie sie im selben Ordner wie das Skript.

"Modul X kann nicht installiert werden"

Lösung: Führen Sie PowerShell als Administrator aus oder verwenden Sie:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Häufige Timeouts

Lösungen:

  • Erhöhen Sie den -TimeoutSeconds Wert
  • Überprüfen Sie Ihre Netzwerkverbindung
  • Konfigurieren Sie die Proxy-Einstellungen korrekt

Falsch-Positive/Negative

Lösungen:

  • Aktualisieren Sie die Block-Schlüsselwörter
  • Überprüfen Sie die Firewall-Konfiguration
  • Passen Sie die JSON-Datei an Ihre Umgebung an

🏢 Empfohlene Anwendungsfälle

📅 Regelmäßige Nutzung

  • Monatliches Audit der Firewall-Effektivität
  • Validierung nach Regel-Updates
  • Benchmarking zwischen Sicherheitslösungen

👥 Management-Berichterstattung

  • Dashboards für IT-Management
  • Messbare Sicherheits-KPIs
  • Investitionsbegründung für Sicherheit

🔧 Konfigurationstests

  • Validierung nach Netzwerkänderungen
  • Regressionstests der Firewall-Regeln
  • Sicherheits-Compliance-Audit

⚠️ Technische Einschränkungen

Beachtenswertes:

  • Sequenzielle Tests: Keine Parallelisierung (kann langsam sein)
  • Grundlegende Erkennung: Basiert auf vordefinierten Schlüsselwörtern
  • Falsch-Positive: Legitime Websites zeitweise unzugänglich
  • Sicherheit: Skript kontaktiert tatsächlich getestete URLs

Best Practices:

  1. 🕐 Führen Sie während schwacher Verkehrszeiten aus
  2. 📊 Analysieren Sie Ergebnisse im Kontext
  3. 🔄 Halten Sie JSON-Datei aktuell
  4. 📈 Verfolgen Sie die Entwicklung der Punktzahlen über Zeit

🤝 Mitwirken

Um beizutragen:

  1. Forken Sie das Projekt
  2. Erstellen Sie Ihren Feature-Branch
  3. Committen Sie Ihre Änderungen
  4. Pushen Sie zum Branch
  5. Öffnen Sie eine Pull Request

Verbesserungsideen:

  • Test-Parallelisierung für bessere Performance
  • Ausgeklügeltere Blockseiten-Erkennung
  • Externe Reputationsdatenbank-Unterstützung
  • Grafische Benutzeroberfläche für Konfiguration
  • Threat Intelligence API-Integration

🎯 Roadmap

Version 1.4 (geplant)

  • Parallele Tests für verbesserte Performance
  • Benutzerdefinierte SSL-Zertifikat-Unterstützung
  • E-Mail-Benachrichtigungen für Ergebnisse

Version 2.0 (zukünftig)

  • Web-Interface für Konfiguration
  • SIEM-Lösungsintegration
  • REST API für Automatisierung

📞 Support

Für Hilfe oder um Probleme zu melden:

  • 📧 Kontaktieren Sie den Autor: Hubert Cornet
  • 🐛 Öffnen Sie ein Issue im Projekt-Repository
  • 📚 Konsultieren Sie die technische Dokumentation

📄 Lizenz

Dieses Projekt steht unter MIT-Lizenz. Siehe die LICENSE-Datei für weitere Details.


Wenn Ihnen dieses Skript nützlich war, geben Sie ihm gerne einen Stern!


Zuletzt aktualisiert: 3. September 2025