Azure-Firewall-Mon: Monitoraggio in tempo reale con Event Hub e ricerca avanzata ChatGPT

Quando implementate Azure Firewall il monitoraggio in tempo reale diventa un aspetto cruciale per mantenere la vostra rete protetta e pronta a reagire a qualsiasi minaccia in maniera tempestiva. Utilizzando gli strumenti nativi di Azure, come Azure Monitor, Log Analytics e Azure Sentinel, potete ottenere una visione chiara e dettagliata delle attività in corso sulla vostra rete, intervenendo immediatamente in caso di comportamenti sospetti.

In primo luogo con Azure Monitor avete la possibilità di raccogliere metriche e log in tempo reale, monitorando costantemente il traffico di rete che passa attraverso il vostro firewall. Potete configurare alert personalizzati che vi notificheranno immediatamente quando viene rilevata un’attività anomala, come tentativi di accesso non autorizzati o picchi di traffico su porte specifiche. Questi alert non solo vi permettono di essere avvisati, ma possono anche attivare azioni automatiche, come bloccare indirizzi IP sospetti o isolare segmenti della rete, garantendo una reazione rapida e efficace. Configurare le Data Collection Rule in Azure Monitor per il monitoraggio della macchine virtuali – ICT Power

L’integrazione con Log Analytics vi consente di analizzare i log generati da Azure Firewall con un potente linguaggio di query (KQL), individuando pattern e comportamenti che potrebbero indicare minacce. Attraverso query avanzate, potete eseguire ricerche mirate su eventi specifici, come un numero elevato di connessioni fallite o tentativi ripetuti di accedere a risorse critiche. Grazie a questo approccio, avrete il controllo totale su come vengono interpretati i dati, permettendovi di agire preventivamente.

Con Azure Sentinel avete accesso a una piattaforma SIEM che vi fornisce una visione centralizzata degli eventi di sicurezza. Sentinel non solo permette di raccogliere e correlare eventi provenienti da diversi punti della rete, ma utilizza anche l’intelligenza artificiale per rilevare anomalie e minacce in tempo reale. Una volta identificata una minaccia, potete automatizzare la risposta tramite playbook, che gestiscono il blocco degli attaccanti, la notifica al vostro team e la raccolta di dati per ulteriori analisi. Questo vi consente di rispondere a un potenziale attacco senza necessità di intervento manuale immediato, riducendo i tempi di reazione e mitigando eventuali danni. Introduzione a Microsoft Sentinel – ICT Power

È importante sottolineare che il monitoraggio in tempo reale non si limita a una semplice raccolta di dati, ma si traduce in un’azione proattiva. Attraverso il monitoraggio costante e l’integrazione di alert personalizzati, potete intervenire prima che un problema diventi critico. In un esempio pratico, se Azure Firewall rileva un aumento anomalo di connessioni fallite provenienti dallo stesso IP, l’alert configurato tramite Azure Monitor vi avviserà immediatamente e, se avete predisposto una risposta automatica, quell’IP verrà bloccato senza ritardi. Nel frattempo, Sentinel raccoglierà tutte le informazioni rilevanti per capire se quel tentativo di intrusione fa parte di una minaccia più ampia.

Utilizzando questi strumenti in sinergia vi assicurerete che la vostra rete sia monitorata costantemente e che, nel momento in cui una minaccia si presenta, il sistema risponda prontamente, con la possibilità di automatizzare i processi e ridurre drasticamente i tempi di risposta.

Il problema che ho notato è che però questi strumenti non rispondono alla domanda “ma che sta succedendo in questo momento?”. Infatti c’è un certo ritardo tra le informazioni che arrivano a Log Analitycs e la necessità di controllare il traffico in tempo reale. Azure Event Hub può rispondere efficacemente alla domanda in relazione ad Azure Firewall, fungendo da piattaforma di streaming in tempo reale per raccogliere, elaborare e distribuire i log e gli eventi generati dal firewall.

Utilizzare Event Hub con Azure Firewall

Azure Event Hub è un servizio di gestione dello streaming di dati progettato per raccogliere, trasformare e distribuire grandi quantità di dati in tempo reale. Quando lo integrate con Azure Firewall, Event Hub può essere utilizzato per inviare e gestire i log e gli eventi generati dal firewall, rendendo possibile un’analisi in tempo reale e una risposta rapida agli incidenti di sicurezza.

In pratica, potete configurare Azure Firewall per inviare tutti i suoi log e gli eventi di rete direttamente ad Azure Event Hub. Dopo che i log vengono trasmessi a Event Hub, è possibile configurare analisi in tempo reale che elaborano i dati istantaneamente. Ad esempio, potete impostare avvisi o azioni automatiche quando vengono rilevati determinati schemi o superate soglie predefinite (come tentativi di accesso non riusciti ripetuti o picchi improvvisi di traffico verso determinati IP). Questo significa che, grazie a Event Hub, è possibile sapere in tempo reale cosa sta accadendo all’interno della vostra rete e prendere decisioni rapide.

Azure-Firewall-Mon

Azure-Firewall-Mon è un’applicazione open-source a pagina singola (Single Page Application – SPA) scritta in Angular, progettata per fornire un’interfaccia user-friendly che permette di monitorare e gestire i log di Azure Firewall in tempo reale. L’obiettivo principale di questo strumento è facilitare la visualizzazione e l’analisi dei log del firewall, migliorando la gestione delle informazioni e aiutando gli amministratori IT a rispondere rapidamente agli eventi di sicurezza.

L’app è disponibile alla pagina nicolgit/azure-firewall-mon: A near-real-time Azure Firewall Monitor log viewer ed è stata realizzata da Nicola Delfino, un Microsoft Cloud|Mobile Software Architect. In Azure-Firewall-Mon l’idea è fornire un approccio simile a quello di strumenti come Sysinternals Process Monitor o Check Point’s SmartView, dove non è necessario configurare prima query o dashboard per far funzionare l’applicazione. Tutti gli eventi sono immediatamente disponibili sotto forma di flusso di log. Inoltre, una funzione di ricerca full-text posizionata in alto nella pagina permette di filtrare rapidamente il contenuto visualizzato, aiutandoti a comprendere cosa sta accadendo in tempo reale (o comunque molto vicino al presente).

NOTA: Il prodotto non è supportato ufficialmente da Microsoft

Quello che mostrerò in questa guida è come implementare la soluzione nel vostro ambiente Microsoft Azure.

Figura 1: Schema di funzionamento e connessioni della soluzione Azure-Firewall-Mon

All’interno di questo strumento saranno visibili solo gli eventi delle ultime 24 ore, poiché questo è il periodo di conservazione impostato per il namespace di Event Hub. Una durata più lunga rallenterebbe lo strumento e non risponderebbe all’obiettivo di Azure-Firewall-Mon, che è fornire informazioni su “cosa sta succedendo in questo momento”.

Come alternativa alla ricerca full-text, potete utilizzare la modalità ChatGPT: nel campo di ricerca in alto, potete inserire una richiesta in linguaggio naturale e il sistema filtrerà automaticamente i contenuti in base alla vostra richiesta, semplificando ulteriormente la comprensione degli eventi in corso.

Figura 2: Demo del funzionamento di Azure-Firewall-Mon

Per utilizzare questa app con i vostri dati dovete eseguire i seguenti passaggi sulla vostra Azure Subscription:

  1. Create un Azure Event Hub Namespace.
  2. Create un Azure Event Hub all’interno del namespace, con una conservazione di 1 giorno e 1 partizione.
  3. Create una Shared Access Policy, con il permesso Listen.
  4. Create un Azure Map Account.
  5. Create un Azure OpenAI Service.
  6. Andate su OpenAI Studio > Deployments > Create un nuovo deployment utilizzando il modello gpt-4-32k v0613.
  7. Aprite l’istanza di Azure Firewall che volete monitorare, andate su Monitoring > Diagnostic Settings > Add Diagnostic Settings:
    1. Selezionate tutti i log e l’opzione “Stream to Event Hub”.
    2. Selezionate il Namespace e l’Event Hub creati in precedenza.
    3. Cliccate su SAVE.

Per i più pigri (come me), potete eseguire i passaggi da 1 a 6 semplicemente cliccando sul pulsante , che automatizza l’intero processo.

Figura 3: Creazione delle risorse necessaire al funzionamento di Azure-Firewall-Mon

Figura 4: Schermata finale del wizard di creazione delle risorse necessaire al funzionamento di Azure-Firewall-Mon

Figura 5: Risorse create dal template

A questo punto potete utilizzare un portale che vi mette già a disposizione l’app, raggiungibile all’indirizzo https://az-firewall-mon.duckiesfarm.com/ oppure installare l’app nella vostra sottoscrizione. Io ho scelto la seconda modalità.

Distribuire Azure-Firewall-Mon in una Azure Static Web App

Per distribuire Azure-Firewall-Mon in un Azure Static Web App dovete seguire alcuni passaggi che vi permetteranno di pubblicare l’applicazione frontend (scritta in Angular) direttamente sulla piattaforma di hosting di Azure. Come prima operazione assicuratevi di avere il codice di Azure-Firewall-Mon in un vostro repository GitHub. Clonare il repository vi permetterà non solo di ottenere l’ultima versione e le funzionalità aggiornate dello strumento, ma anche di personalizzarlo e mantenerne una copia stabile nel vostro ambiente. In questo modo, potrete applicare gli aggiornamenti necessari senza compromettere la stabilità della vostra implementazione.

Visitate la pagina nicolgit/azure-firewall-mon: A near-real-time Azure Firewall Monitor log viewer ed effettuate un fork del progetto nel vostro GitHub repository.

Figura 6: Creazione del fork del progetto Azure-Firewall-Mon

Figura 7: Fork del progetto nel mio repository GitHub

Accedete al portale di Microsoft Azure e create una nuova Static Web App.

Figura 8: Creazione di una Static Web App nel portale di Microsoft Azure

  1. Compilate i campi richiesti:
  • Subscription: selezionate la vostra sottoscrizione Azure.
  • Resource Group: create un nuovo gruppo di risorse o selezionatene uno esistente.
  • Name: date un nome alla vostra applicazione (ad esempio, azure-firewall-mon-webapp).
  • Region: scegliete la regione in cui distribuire la vostra app.
  • Plan type: potete scegliere anche Free. Io ho scelto Standard.
  • Deployment source: selezionate GitHub e collegate il repository che contiene il codice di Azure-Firewall-Mon.
  • Build Preset: selezionate Angular.
  1. Impostate il percorso di build:
  • App location: impostate su /fireall-mon-app/
  • Api location. Lasciate vuoto
  • Output location: impostate su dist/fireall-mon-app/, poiché è dove Angular genera i file della build.
  1. Cliccate su “Review + Create” e poi su “Create” per avviare la distribuzione.

Figura 9: Creazione della Static Web App

Figura 10: Creazione della Static Web App

Figura 11: Creazione della Static Web App

Figura 12: Static Web App completat

Dopo circa 5 minuti l’app sarà pronta e sarà navigabile tramite URL visibile nella scheda Overview della Static Web App.

Figura 13: Static Web App distribuita con successo

La modalità demo di Azure-Firewall-mon è pensata per fornire un’esperienza simulata, permettendo agli utenti di esplorare l’interfaccia e le funzionalità dell’applicazione senza dover collegare un’istanza reale di Azure Firewall. Questa modalità consente di visualizzare dati simulati, come flussi di log e attività di rete, che rappresentano esempi di traffico reale monitorato da un firewall Azure. Questa modalità è utile per esplorare l’applicazione prima di una distribuzione effettiva in ambiente di produzione, familiarizzando con le sue funzionalità senza dover impostare infrastrutture complesse.

Configurazione del firewall

All’interno della sezione Monitoring di Azure Firewall fate clic su Diagnostic settings e poi cu + Add diagnostic setting. Qui selezionate i log che desiderate monitorare, come i log delle regole di rete o di applicazione e configurate l’invio di questi log all’Event Hub. È fondamentale selezionare il namespace e l’Event Hub che avete creato in precedenza per garantire che i dati siano inviati correttamente.

Figura 14:Configurazione dei Diagnostic Settings in Azure Firewall

Avrete la possibilità di selezionare i diversi log che volete monitorare, come i Network Rule Logs, Application Rule Logs e i Threat Intelligence Logs. È importante selezionare tutti i log per garantire un monitoraggio completo delle attività del firewall. Scegliete l’opzione Stream to Event Hub. Nella configurazione, vi verrà chiesto di selezionare il Namespace e l’Event Hub che avete creato in precedenza per ricevere questi log. Una volta selezionati correttamente, cliccate su Save per salvare la configurazione.

Da questo momento tutti i log di Azure Firewall saranno inviati in tempo reale all’Event Hub, permettendovi di monitorare il traffico e le attività di sicurezza attraverso strumenti di analisi collegati.

Figura 15: Configurazione dei Diagnostic Settings in Azure Firewall

Figura 16: Configurazione dei Diagnostic Settings in Azure Firewall

Configurazione dell’app Azure-Firewall-Mon

Una volta configurati tutti i prerequisiti, passiamo a configurare i parametri necessari all’app Azure-Firewall-Mon.

Copia della Connection String di Event Hub

Accedete al portale di Azure e cercate il vostro Event Hub Namespace. All’interno del namespace, selezionate Shared Access Policies dal menu laterale. Cliccate sulla policy di accesso che avete creato (ad esempio, con il permesso Listen). Nella schermata successiva troverete la Connection String. Copiate questa stringa e incollatela nel campo Event Hub Connection String all’interno della configurazione di Azure-Firewall-Mon.

Figura 17: Connection String di Event Hub

Consumer Group di Event Hub

Sempre nel portale di Azure, navigate verso il vostro Event Hub all’interno del namespace. Nella schermata dell’Event Hub, troverete una sezione chiamata Consumer Groups. Copiate il nome del Consumer Group che state utilizzando (spesso il gruppo predefinito è $Default) e incollatelo nel campo Event Hub Consumer Group Name nell’app.

Figura 18: Event Hub Consumer Group Name

Shared Key dell’Azure Map Account

Accedete all’Azure Map Account creato in precedenza nel portale di Azure. Nella pagina dell’account, cercate la sezione Authentication. Copiate la Primary Key o la Secondary Key visualizzata. Incollate questa chiave nel campo Azure Map Account Shared Key all’interno della configurazione dell’app.

Figura 19: Shared Key dell’Azure Map Account

Endpoint di Azure OpenAI

Navigate verso la risorsa Azure OpenAI che avete creato. Nella schermata della risorsa, cercate l’URL dell’endpoint nella sezione Keys and Endpoints. Copiate l’Endpoint URI e incollatelo nel campo Azure OpenAI Endpoint nella configurazione dell’applicazione.

Figura 20: Endpoint di Azure OpenAI

Deployment di Azure OpenAI

All’interno della risorsa Azure OpenAI, andate nella sezione Deployments. Cliccate su Manage Deployments.

Figura 21: Model Deploymentdi OpenAI

Copiate il nome del Deployment che avete creato (ad esempio, il modello gpt-4-32k versione 0613) e incollatelo nel campo Azure OpenAI Deployment nell’app.

Figura 22: Nome del Deployment di Azure OpenAI

Chiave di accesso di Azure OpenAI

Navigate verso la risorsa Azure OpenAI che avete creato. Nella schermata della risorsa, nella sezione Keys and Endpoints, copiate la Primary Key o la Secondary Key e incollatela nel campo Azure OpenAI Access Key all’interno della configurazione di Azure-Firewall-Mon.

Figura 23: Chiave di accesso di Azure OpenAI

Nella figura sotto sono mostrati tutti i campi compilati, con le informazioni precedentemente copiate.

Figura 24: App compilata con le informazioni precedentemente copiate

Una volta completati questi passaggi cliccate su Let’s Begin per avviare l’applicazione con le impostazioni configurate. L’applicazione inizierà a raccogliere i dati in base ai log di Azure Firewall e alle configurazioni OpenAI, Event Hub e Azure Map.

Figura 25: L’applicazione inizierà a raccogliere i dati in base ai log di Azure Firewall e alle configurazioni OpenAI, Event Hub, e Azure Map

Appena cominceranno ad arrivare i messaggi all’interno di Azure-Firewall-Mon potrete visualizzarli immediatamente nell’interfaccia dell’applicazione. Poiché l’applicazione è configurata per ricevere i log in tempo reale attraverso Azure Event Hub, i messaggi rifletteranno le attività del firewall, come le connessioni consentite, i tentativi di accesso bloccati e le minacce rilevate.

Ogni nuovo messaggio apparirà nel flusso di log dell’applicazione e potrete utilizzare la barra di ricerca o i filtri per trovare informazioni specifiche su determinati eventi. Grazie alla modalità full-text search o alla modalità ChatGPT integrata, potrete interrogare i log utilizzando linguaggio naturale, rendendo facile individuare rapidamente i dettagli rilevanti sui flussi di traffico o sui tentativi di intrusione.

L’app mostrerà i dati in tempo reale, permettendovi di comprendere cosa sta accadendo “adesso” nella vostra rete, così da poter prendere decisioni immediate e reattive in caso di attività sospette.

Figura 26: Visualizzazione dei log di Azure Firewall

Figura 27: Filtro dei log ricevuti a Azure Firewall

All’interno di Azure-Firewall-Mon potete utilizzare la modalità ChatGPT nella ricerca avanzata (attivabile dal pulsante giallo) per interagire con i log in maniera più intuitiva, utilizzando frasi in linguaggio naturale. Questo vi permette di eseguire ricerche senza dover conoscere una sintassi complessa o creare query manualmente.

Ad esempio, se volete trovare tutti i tentativi di accesso falliti o il traffico proveniente da un indirizzo IP specifico, potrete semplicemente scrivere qualcosa come “Mostra tutti i tentativi di accesso bloccati nelle ultime 24 ore” oppure “Visualizza il traffico proveniente dall’IP X”. La funzione ChatGPT interpreterà la vostra richiesta e vi fornirà i risultati pertinenti direttamente nell’interfaccia, aiutandovi a monitorare e gestire in modo efficiente le attività di rete.

Questo rende la gestione dei log molto più semplice e vi permette di concentrarvi sulle informazioni rilevanti senza dover configurare query complesse, rispondendo in modo più immediato a ciò che sta accadendo in tempo reale.

Figura 28: Uso di ChatGPT per la ricerca dei log

Conclusioni

Azure-Firewall-Mon offre una soluzione potente e intuitiva per il monitoraggio in tempo reale del traffico di rete e degli eventi di sicurezza legati ad Azure Firewall. Attraverso l’integrazione con Event Hub, la raccolta dei log diventa immediata e centralizzata, permettendovi di avere una visione chiara e dettagliata delle attività di rete. Grazie alla modalità ChatGPT per la ricerca avanzata, potete semplificare ulteriormente il processo di analisi dei log, utilizzando un linguaggio naturale per trovare rapidamente le informazioni necessarie senza la complessità di query avanzate.

Questa combinazione di monitoraggio in tempo reale, flessibilità nella ricerca e facilità di configurazione rende Azure-Firewall-Mon uno strumento ideale per rafforzare la vostra strategia di sicurezza, garantendo visibilità e controllo continui sulla vostra infrastruttura di rete. L’interfaccia user-friendly e la capacità di integrare log e dati provenienti da diverse fonti ne fanno una scelta efficace per la gestione delle minacce e la protezione della vostra rete.