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

|
||

|
||

|
||
|
||
Uno strumento professionale di audit PowerShell per valutare l'efficacia del filtraggio del tuo firewall testando URL categorizzati basati sulla loro reputazione di rete.
|
||
|
||
## 📋 Indice dei Contenuti
|
||
|
||
- [Panoramica](#-panoramica)
|
||
- [Caratteristiche](#-caratteristiche)
|
||
- [Prerequisiti](#-prerequisiti)
|
||
- [Installazione](#-installazione)
|
||
- [Utilizzo](#-utilizzo)
|
||
- [Configurazione](#-configurazione)
|
||
- [Report Generato](#-report-generato)
|
||
- [Struttura Dati](#-struttura-dati)
|
||
- [Sistema di Punteggio](#-sistema-di-punteggio)
|
||
- [Risoluzione Problemi](#-risoluzione-problemi)
|
||
- [Contribuire](#-contribuire)
|
||
- [Licenza](#-licenza)
|
||
|
||
## 🎯 Panoramica
|
||
|
||
Questo script PowerShell testa l'efficacia del tuo firewall verificando che gli URL malevoli siano correttamente bloccati mentre i siti legittimi rimangano accessibili. Genera un report HTML professionale con punteggi, statistiche e raccomandazioni.
|
||
|
||
**Autore:** Hubert Cornet
|
||
**Versione:** 1.3
|
||
**Data:** 3 settembre 2025
|
||
|
||
## ✨ Caratteristiche
|
||
|
||
- 🔍 **Test automatizzato** di centinaia di URL categorizzati
|
||
- 📊 **Punteggio intelligente** con voti da A+ a F
|
||
- 📱 **Report HTML responsive** con interfaccia interattiva
|
||
- 🔧 **Supporto proxy** con autenticazione
|
||
- ⚡ **Barre di progresso in tempo reale**
|
||
- 🎨 **Visualizzazioni colorate** dei risultati
|
||
- 💾 **Esportazione JSON** dei dati grezzi
|
||
- 🌐 **Rilevamento multi-metodo** dei blocchi
|
||
|
||
## 📋 Prerequisiti
|
||
|
||
### Requisiti di Sistema
|
||
- Windows 10/11 o Windows Server 2016+
|
||
- PowerShell 5.1 o superiore
|
||
- Connessione Internet attiva
|
||
- Permessi di scrittura nella directory dello script
|
||
|
||
### Moduli PowerShell (installati automaticamente)
|
||
- `PSWriteHTML`
|
||
- `PSWriteColor`
|
||
|
||
### File Richiesti
|
||
- `file-nrs.json` - Database di URL categorizzati
|
||
|
||
## 🚀 Installazione
|
||
|
||
1. **Scarica lo script** in una cartella dedicata
|
||
2. **Scarica il file JSON** da:
|
||
```
|
||
https://gitea.tips-of-mine.com/Tips-Of-Mine/Powershell/src/branch/main/cybersecurity/Network%20Reputation%20Service/file-nrs.json
|
||
```
|
||
3. **Posiziona entrambi i file** nella stessa directory
|
||
|
||
## 💻 Utilizzo
|
||
|
||
### Utilizzo Base
|
||
```powershell
|
||
.\AuditFirewall.ps1
|
||
```
|
||
|
||
### Con Proxy
|
||
```powershell
|
||
.\AuditFirewall.ps1 -ProxyUrl "http://proxy.azienda.com:8080"
|
||
```
|
||
|
||
### Con Autenticazione Proxy
|
||
```powershell
|
||
.\AuditFirewall.ps1 -ProxyUrl "http://proxy.azienda.com:8080" -ProxyUseAuthentication
|
||
```
|
||
|
||
### Con Timeout Personalizzato
|
||
```powershell
|
||
.\AuditFirewall.ps1 -TimeoutSeconds 15
|
||
```
|
||
|
||
## ⚙️ Configurazione
|
||
|
||
### Parametri Disponibili
|
||
|
||
| Parametro | Tipo | Descrizione | Predefinito |
|
||
|-----------|------|-------------|-------------|
|
||
| `ProxyUrl` | String | URL del proxy di rete | Nessuno |
|
||
| `ProxyUseAuthentication` | Switch | Abilita autenticazione proxy | False |
|
||
| `TimeoutSeconds` | Integer | Timeout per URL | 10 |
|
||
|
||
### Personalizzazione Parole Chiave di Blocco
|
||
Modifica la variabile `$BlockKeywords` nello script:
|
||
```powershell
|
||
$BlockKeywords = @("sito bloccato", "accesso negato", "filtraggio web", "Access Denied", "Site Blocked")
|
||
```
|
||
|
||
## 📊 Report Generato
|
||
|
||
Lo script genera automaticamente:
|
||
|
||
### 📁 Struttura File di Output
|
||
```
|
||
Rapports/
|
||
└── [Data e Ora]/
|
||
├── Audit_Firewall_Report.html # Report principale
|
||
└── Results.json # Dati grezzi
|
||
```
|
||
|
||
### 🎨 Contenuto Report HTML
|
||
- **Riassunto Esecutivo**: Punteggio globale e statistiche chiave
|
||
- **Tabella Punteggi**: Performance per categoria
|
||
- **Dettagli Interattivi**: Test individuali per URL
|
||
- **Scala di Valutazione**: Spiegazione del sistema di punteggio
|
||
|
||
## 📁 Struttura Dati
|
||
|
||
### Formato `file-nrs.json`
|
||
```json
|
||
{
|
||
"categorie": [
|
||
{
|
||
"id": "malware",
|
||
"nom": "Malware",
|
||
"description": "Siti che distribuiscono software malevolo",
|
||
"urls": [
|
||
{
|
||
"url": "http://esempio-malware.com",
|
||
"reputation": "malicious",
|
||
"expected_action": "block"
|
||
},
|
||
{
|
||
"url": "https://sito-legittimo.com",
|
||
"reputation": "safe",
|
||
"expected_action": "allow"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### Azioni Attese
|
||
- `"block"`: L'URL dovrebbe essere bloccato dal firewall
|
||
- `"allow"`: L'URL dovrebbe rimanere accessibile
|
||
|
||
## 📈 Sistema di Punteggio
|
||
|
||
### Scala di Valutazione
|
||
|
||
| Voto | Punteggio | Interpretazione |
|
||
|------|-----------|-----------------|
|
||
| **A+** | 95-100% | 🟢 Eccellente / Perfetto |
|
||
| **A** | 90-95% | 🟢 Ottimo livello di filtraggio |
|
||
| **B+** | 85-90% | 🟡 Molto buono |
|
||
| **B** | 80-85% | 🟡 Buono, alcuni aggiustamenti necessari |
|
||
| **C+** | 75-80% | 🟠 Discreto |
|
||
| **C** | 70-75% | 🟠 Medio, lacune significative |
|
||
| **D+** | 65-70% | 🔴 Accettabile |
|
||
| **D** | 60-65% | 🔴 Debole, filtraggio inefficace |
|
||
| **E+** | 55-60% | 🔴 Molto debole |
|
||
| **E** | 50-55% | 🔴 Insufficiente |
|
||
| **F+** | 45-50% | ⚫ Critico |
|
||
| **F** | 0-45% | ⚫ Azione immediata richiesta |
|
||
|
||
### Metodo di Calcolo
|
||
```
|
||
Punteggio = (URL filtrati correttamente / Totale URL testati) × 100
|
||
```
|
||
|
||
## 🔍 Metodi di Rilevamento
|
||
|
||
### Come lo script rileva i blocchi:
|
||
1. **Analisi del Contenuto**: Ricerca parole chiave delle pagine di blocco
|
||
2. **Timeout di Rete**: Richieste che scadono (probabile blocco firewall)
|
||
3. **Errori di Connessione**: Incapacità di raggiungere il server
|
||
4. **Codici di Stato HTTP**: Analisi delle risposte del server
|
||
|
||
### Header HTTP Simulati:
|
||
Lo script simula un browser moderno per evitare il rilevamento:
|
||
```
|
||
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...
|
||
Accept: text/html,application/xhtml+xml,application/xml...
|
||
Accept-Language: it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7
|
||
```
|
||
|
||
## 🔧 Risoluzione Problemi
|
||
|
||
### Problemi Comuni
|
||
|
||
#### ❌ "File 'file-nrs.json' non esiste!"
|
||
**Soluzione:** Scarica il file JSON dal link fornito e posizionalo nella stessa cartella dello script.
|
||
|
||
#### ❌ "Impossibile installare il modulo X"
|
||
**Soluzione:** Esegui PowerShell come amministratore o usa:
|
||
```powershell
|
||
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||
```
|
||
|
||
#### ❌ Timeout Frequenti
|
||
**Soluzioni:**
|
||
- Aumenta il valore di `-TimeoutSeconds`
|
||
- Verifica la tua connessione di rete
|
||
- Configura correttamente le impostazioni proxy
|
||
|
||
#### ❌ Falsi Positivi/Negativi
|
||
**Soluzioni:**
|
||
- Aggiorna le parole chiave di blocco
|
||
- Verifica la configurazione del firewall
|
||
- Adatta il file JSON al tuo ambiente
|
||
|
||
## 🏢 Casi d'Uso Raccomandati
|
||
|
||
### 📅 Uso Periodico
|
||
- **Audit mensile** dell'efficacia del firewall
|
||
- **Validazione** dopo aggiornamenti delle regole
|
||
- **Benchmarking** tra soluzioni di sicurezza
|
||
|
||
### 👥 Report Manageriali
|
||
- **Dashboard** per il management IT
|
||
- **KPI di sicurezza** misurabili
|
||
- **Giustificazione investimenti** in sicurezza
|
||
|
||
### 🔧 Test di Configurazione
|
||
- **Validazione** dopo modifiche di rete
|
||
- **Test di regressione** delle regole firewall
|
||
- **Audit di conformità** della sicurezza
|
||
|
||
## ⚠️ Limitazioni Tecniche
|
||
|
||
### Punti di Attenzione:
|
||
- **Test Sequenziali**: Nessuna parallelizzazione (può essere lento)
|
||
- **Rilevamento Base**: Si basa su parole chiave predefinite
|
||
- **Falsi Positivi**: Siti legittimi temporaneamente inaccessibili
|
||
- **Sicurezza**: Lo script contatta effettivamente gli URL testati
|
||
|
||
### Best Practice:
|
||
1. 🕐 Esegui durante le ore di minor traffico
|
||
2. 📊 Analizza i risultati nel contesto
|
||
3. 🔄 Mantieni aggiornato il file JSON
|
||
4. 📈 Monitora l'evoluzione dei punteggi nel tempo
|
||
|
||
## 🤝 Contribuire
|
||
|
||
### Per Contribuire:
|
||
1. Fai fork del progetto
|
||
2. Crea il tuo branch feature
|
||
3. Committa le tue modifiche
|
||
4. Push al branch
|
||
5. Apri una Pull Request
|
||
|
||
### Idee di Miglioramento:
|
||
- [ ] Parallelizzazione test per migliori performance
|
||
- [ ] Rilevamento più sofisticato delle pagine di blocco
|
||
- [ ] Supporto database reputazione esterni
|
||
- [ ] Interfaccia grafica per la configurazione
|
||
- [ ] Integrazione con API di threat intelligence
|
||
|
||
## 🎯 Roadmap
|
||
|
||
### Versione 1.4 (pianificata)
|
||
- [ ] Test paralleli per performance migliorate
|
||
- [ ] Supporto certificati SSL personalizzati
|
||
- [ ] Notifiche email per i risultati
|
||
|
||
### Versione 2.0 (futuro)
|
||
- [ ] Interfaccia web per configurazione
|
||
- [ ] Integrazione con soluzioni SIEM
|
||
- [ ] API REST per automazione
|
||
|
||
## 📞 Supporto
|
||
|
||
Per aiuto o segnalare problemi:
|
||
- 📧 Contatta l'autore: Hubert Cornet
|
||
- 🐛 Apri un issue nel repository del progetto
|
||
- 📚 Consulta la documentazione tecnica
|
||
|
||
## 📄 Licenza
|
||
|
||
Questo progetto è sotto licenza MIT. Vedi il file `LICENSE` per maggiori dettagli.
|
||
|
||
---
|
||
|
||
**⭐ Se questo script ti è stato utile, non esitare a dargli una stella!**
|
||
|
||
---
|
||
|
||
*Ultimo aggiornamento: 3 settembre 2025* |