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

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*