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