# 🛡️ 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*