295 lines
8.6 KiB
Markdown
295 lines
8.6 KiB
Markdown
# 🛡️ Audyt Firewall - Network Reputation Service
|
||
|
||

|
||

|
||

|
||
|
||
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* |