Files

8.6 KiB
Raw Permalink Blame History

🛡️ Audit Firewall - Network Reputation Service

Version PowerShell License

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

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

.\AuditFirewall.ps1

Con Proxy

.\AuditFirewall.ps1 -ProxyUrl "http://proxy.azienda.com:8080"

Con Autenticazione Proxy

.\AuditFirewall.ps1 -ProxyUrl "http://proxy.azienda.com:8080" -ProxyUseAuthentication

Con Timeout Personalizzato

.\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:

$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

{
  "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:

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