# 🛡️ Firewall-Audit - Network Reputation Service ![Version](https://img.shields.io/badge/version-1.3-blue.svg) ![PowerShell](https://img.shields.io/badge/PowerShell-5.1+-blue.svg) ![License](https://img.shields.io/badge/license-MIT-green.svg) Ein professionelles PowerShell-Audit-Tool zur Bewertung der Filtereffektivität Ihrer Firewall durch das Testen kategorisierter URLs basierend auf ihrer Netzwerk-Reputation. ## 📋 Inhaltsverzeichnis - [Überblick](#-überblick) - [Funktionen](#-funktionen) - [Voraussetzungen](#-voraussetzungen) - [Installation](#-installation) - [Nutzung](#-nutzung) - [Konfiguration](#-konfiguration) - [Generierter Bericht](#-generierter-bericht) - [Datenstruktur](#-datenstruktur) - [Bewertungssystem](#-bewertungssystem) - [Fehlerbehebung](#-fehlerbehebung) - [Mitwirken](#-mitwirken) - [Lizenz](#-lizenz) ## 🎯 Ü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 ```powershell .\AuditFirewall.ps1 ``` ### Mit Proxy ```powershell .\AuditFirewall.ps1 -ProxyUrl "http://proxy.unternehmen.com:8080" ``` ### Mit Proxy-Authentifizierung ```powershell .\AuditFirewall.ps1 -ProxyUrl "http://proxy.unternehmen.com:8080" -ProxyUseAuthentication ``` ### Mit benutzerdefiniertem Timeout ```powershell .\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: ```powershell $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` ```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: ```powershell 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*