# 🛡️ Audyt Firewall - 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)

Profesjonalne narzędzie audytowe PowerShell do oceny skuteczności filtrowania zapory sieciowej poprzez testowanie skategoryzowanych URL-i na podstawie ich reputacji sieciowej.

## 📋 Spis Treści

- [Przegląd](#-przegląd)
- [Funkcje](#-funkcje)
- [Wymagania](#-wymagania)
- [Instalacja](#-instalacja)
- [Użycie](#-użycie)
- [Konfiguracja](#-konfiguracja)
- [Wygenerowany Raport](#-wygenerowany-raport)
- [Struktura Danych](#-struktura-danych)
- [System Punktacji](#-system-punktacji)
- [Rozwiązywanie Problemów](#-rozwiązywanie-problemów)
- [Współpraca](#-współpraca)
- [Licencja](#-licencja)

## 🎯 Przegląd

Ten skrypt PowerShell testuje skuteczność zapory sieciowej, sprawdzając czy złośliwe URL-e są prawidłowo blokowane, podczas gdy legalne strony pozostają dostępne. Generuje profesjonalny raport HTML z punktacją, statystykami i rekomendacjami.

**Autor:** Hubert Cornet  
**Wersja:** 1.3  
**Data:** 3 września 2025

## ✨ Funkcje

- 🔍 **Automatyczne testowanie** setek skategoryzowanych URL-i
- 📊 **Inteligentna punktacja** z ocenami od A+ do F
- 📱 **Responsywny raport HTML** z interaktywnym interfejsem
- 🔧 **Obsługa proxy** z uwierzytelnianiem
- ⚡ **Paski postępu w czasie rzeczywistym**
- 🎨 **Kolorowe wizualizacje** wyników
- 💾 **Eksport JSON** surowych danych
- 🌐 **Wielometodowe wykrywanie** blokad

## 📋 Wymagania

### Wymagania Systemowe
- Windows 10/11 lub Windows Server 2016+
- PowerShell 5.1 lub wyższy
- Aktywne połączenie internetowe
- Uprawnienia do zapisu w katalogu skryptu

### Moduły PowerShell (instalowane automatycznie)
- `PSWriteHTML`
- `PSWriteColor`

### Wymagane Pliki
- `file-nrs.json` - Baza danych skategoryzowanych URL-i

## 🚀 Instalacja

1. **Pobierz skrypt** do dedykowanego folderu
2. **Pobierz plik JSON** z:
   ```
   https://gitea.tips-of-mine.com/Tips-Of-Mine/Powershell/src/branch/main/cybersecurity/Network%20Reputation%20Service/file-nrs.json
   ```
3. **Umieść oba pliki** w tym samym katalogu

## 💻 Użycie

### Podstawowe Użycie
```powershell
.\AuditFirewall.ps1
```

### Z Proxy
```powershell
.\AuditFirewall.ps1 -ProxyUrl "http://proxy.firma.com:8080"
```

### Z Uwierzytelnianiem Proxy
```powershell
.\AuditFirewall.ps1 -ProxyUrl "http://proxy.firma.com:8080" -ProxyUseAuthentication
```

### Z Niestandardowym Limitem Czasu
```powershell
.\AuditFirewall.ps1 -TimeoutSeconds 15
```

## ⚙️ Konfiguracja

### Dostępne Parametry

| Parametr | Typ | Opis | Domyślny |
|----------|-----|------|----------|
| `ProxyUrl` | String | URL proxy sieciowego | Brak |
| `ProxyUseAuthentication` | Switch | Włącz uwierzytelnianie proxy | False |
| `TimeoutSeconds` | Integer | Limit czasu na URL | 10 |

### Dostosowanie Słów Kluczowych Blokady
Zmodyfikuj zmienną `$BlockKeywords` w skrypcie:
```powershell
$BlockKeywords = @("strona zablokowana", "dostęp zabroniony", "filtrowanie web", "Access Denied", "Site Blocked")
```

## 📊 Wygenerowany Raport

Skrypt automatycznie generuje:

### 📁 Struktura Plików Wyjściowych
```
Rapports/
└── [Data i Czas]/
    ├── Audit_Firewall_Report.html    # Główny raport
    └── Results.json                   # Surowe dane
```

### 🎨 Zawartość Raportu HTML
- **Streszczenie Wykonawcze**: Globalny wynik i kluczowe statystyki
- **Tabela Wyników**: Wydajność według kategorii
- **Interaktywne Szczegóły**: Indywidualne testy na URL
- **Skala Ocen**: Wyjaśnienie systemu punktacji

## 📁 Struktura Danych

### Format `file-nrs.json`
```json
{
  "categorie": [
    {
      "id": "malware",
      "nom": "Malware",
      "description": "Strony dystrybuujące złośliwe oprogramowanie",
      "urls": [
        {
          "url": "http://przykład-malware.com",
          "reputation": "malicious",
          "expected_action": "block"
        },
        {
          "url": "https://legalna-strona.com",
          "reputation": "safe",
          "expected_action": "allow"
        }
      ]
    }
  ]
}
```

### Oczekiwane Działania
- `"block"`: URL powinien być zablokowany przez zaporę
- `"allow"`: URL powinien pozostać dostępny

## 📈 System Punktacji

### Skala Ocen

| Ocena | Punkty | Interpretacja |
|-------|--------|---------------|
| **A+** | 95-100% | 🟢 Doskonały / Idealny |
| **A** | 90-95% | 🟢 Bardzo dobry poziom filtrowania |
| **B+** | 85-90% | 🟡 Bardzo dobry |
| **B** | 80-85% | 🟡 Dobry, potrzebne pewne dostosowania |
| **C+** | 75-80% | 🟠 Dość dobry |
| **C** | 70-75% | 🟠 Średni, znaczące luki |
| **D+** | 65-70% | 🔴 Do zaakceptowania |
| **D** | 60-65% | 🔴 Słaby, nieefektywne filtrowanie |
| **E+** | 55-60% | 🔴 Bardzo słaby |
| **E** | 50-55% | 🔴 Niewystarczający |
| **F+** | 45-50% | ⚫ Krytyczny |
| **F** | 0-45% | ⚫ Wymagane natychmiastowe działanie |

### Metoda Obliczania
```
Punkty = (Poprawnie filtrowane URL-e / Łączna liczba testowanych URL-i) × 100
```

## 🔍 Metody Wykrywania

### Jak skrypt wykrywa blokady:
1. **Analiza Zawartości**: Wyszukiwanie słów kluczowych stron blokujących
2. **Limity Czasu Sieci**: Żądania, które wygasają (prawdopodobna blokada zapory)
3. **Błędy Połączenia**: Niemożność osiągnięcia serwera
4. **Kody Statusu HTTP**: Analiza odpowiedzi serwera

### Symulowane Nagłówki HTTP:
Skrypt symuluje nowoczesną przeglądarkę, aby uniknąć wykrycia:
```
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...
Accept: text/html,application/xhtml+xml,application/xml...
Accept-Language: pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7
```

## 🔧 Rozwiązywanie Problemów

### Częste Problemy

#### ❌ "Plik 'file-nrs.json' nie istnieje!"
**Rozwiązanie:** Pobierz plik JSON z podanego linku i umieść go w tym samym folderze co skrypt.

#### ❌ "Nie można zainstalować modułu X"
**Rozwiązanie:** Uruchom PowerShell jako administrator lub użyj:
```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```

#### ❌ Częste Limity Czasu
**Rozwiązania:**
- Zwiększ wartość `-TimeoutSeconds`
- Sprawdź połączenie sieciowe
- Poprawnie skonfiguruj ustawienia proxy

#### ❌ Fałszywe Pozytywne/Negatywne
**Rozwiązania:**
- Zaktualizuj słowa kluczowe blokady
- Sprawdź konfigurację zapory
- Dostosuj plik JSON do swojego środowiska

## 🏢 Zalecane Przypadki Użycia

### 📅 Użycie Okresowe
- **Miesięczny audyt** skuteczności zapory
- **Walidacja** po aktualizacjach reguł
- **Benchmarking** między rozwiązaniami bezpieczeństwa

### 👥 Raporty Zarządcze
- **Dashboardy** dla zarządzania IT
- **Mierzalne KPI bezpieczeństwa**
- **Uzasadnienie inwestycji** w bezpieczeństwo

### 🔧 Testy Konfiguracji
- **Walidacja** po zmianach sieciowych
- **Testy regresji** reguł zapory
- **Audyt zgodności** bezpieczeństwa

## ⚠️ Ograniczenia Techniczne

### Punkty Uwagi:
- **Testy Sekwencyjne**: Brak równoległości (może być wolne)
- **Podstawowe Wykrywanie**: Opiera się na predefiniowanych słowach kluczowych
- **Fałszywe Pozytywne**: Legalne strony czasowo niedostępne
- **Bezpieczeństwo**: Skrypt rzeczywiście kontaktuje się z testowanymi URL-ami

### Najlepsze Praktyki:
1. 🕐 Uruchamiaj podczas godzin mniejszego ruchu
2. 📊 Analizuj wyniki w kontekście
3. 🔄 Utrzymuj aktualny plik JSON
4. 📈 Śledź ewolucję wyników w czasie

## 🤝 Współpraca

### Aby Współpracować:
1. Zrób fork projektu
2. Utwórz swoją gałąź funkcji
3. Zatwierdź swoje zmiany
4. Wypchnij do gałęzi
5. Otwórz Pull Request

### Pomysły na Ulepszenia:
- [ ] Równoległość testów dla lepszej wydajności
- [ ] Bardziej wyrafinowane wykrywanie stron blokujących
- [ ] Obsługa zewnętrznych baz danych reputacji
- [ ] Interfejs graficzny do konfiguracji
- [ ] Integracja z API threat intelligence

## 🎯 Mapa Drogowa

### Wersja 1.4 (planowana)
- [ ] Testy równoległe dla lepszej wydajności
- [ ] Obsługa niestandardowych certyfikatów SSL
- [ ] Powiadomienia email o wynikach

### Wersja 2.0 (przyszłość)
- [ ] Interfejs webowy do konfiguracji
- [ ] Integracja z rozwiązaniami SIEM
- [ ] API REST do automatyzacji

## 📞 Wsparcie

Aby uzyskać pomoc lub zgłosić problemy:
- 📧 Skontaktuj się z autorem: Hubert Cornet
- 🐛 Otwórz issue w repozytorium projektu
- 📚 Zapoznaj się z dokumentacją techniczną

## 📄 Licencja

Ten projekt jest pod licencją MIT. Zobacz plik `LICENSE` po więcej szczegółów.

---

**⭐ Jeśli ten skrypt był dla Ciebie przydatny, nie wahaj się dać mu gwiazdkę!**

---

*Ostatnia aktualizacja: 3 września 2025*