Protezione delle applicazioni Web con il Web Application Firewall (WAF) di Azure
14/01/2025
Questo articolo tecnico ed educativo ha lo scopo di guidare analisti della sicurezza, amministratori IT e ingegneri di sistema nell'implementazione e nella configurazione di Azure Web Application Firewall (WAF) per proteggere le applicazioni Web dagli attacchi comuni. In un panorama digitale in cui le applicazioni web rappresentano la porta di accesso per molte aziende, sono diventate obiettivi frequenti di una serie di attacchi informatici, come SQL injection, cross-site scripting (XSS) e altre 10 principali vulnerabilità OWASP. Azure WAF fornisce un livello di protezione essenziale per mitigare questi rischi, garantendo la disponibilità, l'integrità e la riservatezza dei dati [1].
Introduzione
Le applicazioni Web sono componenti critici dell'infrastruttura IT di praticamente tutte le organizzazioni. Tuttavia, la loro esposizione a Internet li rende vulnerabili ad attacchi che possono compromettere i dati, interrompere i servizi e danneggiare la reputazione dell'azienda. Un Web Application Firewall (WAF) funge da proxy inverso, ispezionando il traffico HTTP/HTTPS in arrivo e in uscita dall'applicazione Web, identificando e bloccando le richieste dannose prima che raggiungano il server delle applicazioni. Azure WAF, disponibile come funzionalità del gateway applicazione di Azure o della porta anteriore di Azure, fornisce protezione centralizzata e scalabile per le applicazioni Web ospitate in Azure o anche in ambienti ibridi [2].
Questa guida pratica tratterà i concetti fondamentali di Azure WAF, le sue modalità di funzionamento (Detection and Prevention), la configurazione delle policy WAF con set di regole gestite (OWASP Core Rule Set - CRS) e regole personalizzate. Verranno fornite istruzioni dettagliate per la distribuzione di WAF con il gateway applicazione di Azure, per testarne l'efficacia rispetto agli attacchi comuni e per convalidare i risultati, oltre a discutere le procedure consigliate e i suggerimenti per la risoluzione dei problemi. L'obiettivo è consentire al lettore di configurare e gestire Azure WAF in modo autonomo, professionale e affidabile, proteggendo le proprie applicazioni web dalle minacce più diffuse.
Perché Azure WAF è fondamentale per la protezione delle applicazioni Web?
- Protezione completa: difende dai comuni attacchi Web, tra cui SQL injection, cross-site scripting (XSS), inclusione di file, attacchi bot e altre 10 principali vulnerabilità OWASP [3].
- Regole gestite: utilizza set di regole gestite (come OWASP CRS) che vengono aggiornate automaticamente da Microsoft, garantendo protezione contro le minacce più recenti senza intervento manuale.
- Regole personalizzate: consente la creazione di regole personalizzate per soddisfare i requisiti di sicurezza specifici dell'applicazione, bloccando modelli di traffico specifici o proteggendo dalle vulnerabilità non coperte dalle regole gestite.
- Modalità operative flessibili: funziona in modalità "Rilevazione" (monitora e registra solo gli attacchi) o "Prevenzione" (blocca attivamente gli attacchi), consentendo il controllo graduale dell'implementazione.
- Integrazione nativa con Azure: si integra perfettamente con il gateway applicazione di Azure (per applicazioni interne) e la porta anteriore di Azure (per applicazioni globali), offrendo una soluzione completa di distribuzione delle applicazioni con sicurezza incorporata.
- Scalabilità e disponibilità elevata: beneficia della scalabilità e della disponibilità elevata dei servizi di distribuzione delle applicazioni di Azure, garantendo che la protezione sia sempre attiva e performante.
- Conformità: aiuta le organizzazioni a soddisfare i requisiti normativi e gli standard di sicurezza che richiedono la protezione delle applicazioni web.
Prerequisiti
Per implementare Azure WAF, saranno necessari i seguenti elementi:
- Abbonamento Azure attivo: un abbonamento Azure per creare e gestire risorse.
- Accesso amministrativo: un account con le autorizzazioni necessarie per creare e gestire risorse come gateway applicazione, porte anteriori e policy WAF (ad esempio "Collaboratore" o "Amministratore di rete").
- Applicazione Web esistente: un'applicazione Web (ospitata in Azure o altrove) che si desidera proteggere. Per questa guida, assumeremo una semplice applicazione Web a cui si accederà tramite il gateway applicazione.
- Rete virtuale (VNet) e sottoreti: una rete virtuale e sottoreti configurate per il gateway applicazione e l'applicazione Web.
Passo dopo passo: implementazione di Azure WAF con il gateway applicazione
Configuriamo Azure WAF per proteggere aapplicazione Web utilizzando il gateway applicazione di Azure.
1. Creazione di un gateway applicazione di Azure con WAF
- Apri il browser e accedi al portale di Azure: "https://portal.azure.com".
- Accedi con un account che disponga delle autorizzazioni necessarie.
- Nel campo di ricerca in alto, digita "Application Gateway" e selezionalo dai risultati.
-
Fare clic su "+ Crea".
-
Nozioni di base:
- Abbonamento: seleziona il tuo abbonamento.
- Gruppo di risorse: crea un nuovo gruppo di risorse (ad esempio
rg-waf-appgw) o selezionane uno esistente. - Nome gateway applicazione: fornire un nome (es:
appgw-waf-01). - Regione: seleziona la regione.
- Livello: seleziona "Standard v2" (WAF è disponibile solo nel livello v2).
- Abilita WAF: seleziona "Sì".
- Nome policy WAF: assegna un nome alla policy WAF (ad esempio
wafpolicy-appgw-01). - Modalità WAF: inizia con "Rilevamento" per monitorare e modificare le regole prima di passare a "Prevenzione".
-
Fare clic su "Avanti: Frontend".
-
Frontend:
- Tipo di indirizzo IP front-end: seleziona "Pubblico".
- Indirizzo IP pubblico: fare clic su
+Aggiungi nuovoe assegnare un nome all'IP pubblico (ad esempio:pip-appgw-waf).
-
Fare clic su "Avanti: Backend".
-
Backend:
- Fare clic su "+Aggiungi pool backend".
- Nome del pool backend: assegnagli un nome (ad esempio
app-backend-pool). - Aggiungi pool backend senza destinazioni: seleziona "No".
- Tipo di destinazione: selezionare "Indirizzo IP o FQDN".
- Indirizzo IP/FQDN: immettere l'indirizzo IP o FQDN dell'applicazione Web (ad esempio: "10.0.0.4" per una VM nella rete virtuale o l'FQDN di un servizio app).
- Fare clic su "Aggiungi".
-
Fare clic su "Avanti: Configurazione".
-
Configurazione:
- Impostazioni di routing: fare clic su "+Aggiungi regola di routing".
- Nome regola: assegnagli un nome (es:
rule-http). - Priorità: lascia l'impostazione predefinita.
- Ascoltatore:
- Nome ascoltatore: fornire un nome (es:
ascoltatore-http). - Indirizzo IP frontend: seleziona l'IP pubblico creato.
- Protocollo: seleziona
HTTP(per iniziare, puoi aggiungere HTTPS in seguito). - Porto:
80.
- Nome ascoltatore: fornire un nome (es:
- Obiettivi back-end:
- Tipo di destinazione: seleziona "Pool backend".
- Pool backend: seleziona
pool-backend-app. - Configurazione backend: fare clic su
+Aggiungi nuovo.- Nome impostazione backend: assegnagli un nome (ad esempio
http-setting). - Protocollo back-end:
HTTP. - Porta backend:
80(o la porta della tua applicazione web). - Utilizza sonda personalizzata: seleziona "No" (per questo semplice esempio).
- Fare clic su "Aggiungi".
- Nome impostazione backend: assegnagli un nome (ad esempio
- Fare clic su "Aggiungi" nella regola di routing.
-
Fare clic su "Avanti: Tag".
- Fare clic su "Avanti: Rivedi + crea".
-
Rivedi le impostazioni e fai clic su "Crea".
- Spiegazione: questo processo crea un gateway applicazione con un WAF associato. Il WAF inizierà a ispezionare il traffico in modalità "Rilevamento".
2. Configurazione delle regole WAF gestite e personalizzate
Dopo la distribuzione è possibile modificare la policy WAF.
- Nel portale di Azure passare al gateway applicazione (
appgw-waf-01). - Nel riquadro di navigazione a sinistra, in "Impostazioni", seleziona Web Application Firewall.
-
Fare clic sul nome della policy WAF (
wafpolicy-appgw-01). -
Modalità policy: nella sezione "Panoramica", puoi modificare la "Modalità" da "Rilevamento" a "Prevenzione" quando sei sicuro che le tue regole non stiano bloccando il traffico legittimo.
-
Regole gestite:
- Nel riquadro di navigazione a sinistra della policy WAF, seleziona Regole gestite.
- Assicurati che "OWASP Default Rule Set" (ad esempio "OWASP_CRS/3.2") sia "Enabled".
- È possibile disabilitare regole specifiche all'interno del set gestito se causano falsi positivi, ma farlo con cautela e solo dopo un'attenta considerazione.
-
Regole personalizzate:
- Nel riquadro di navigazione a sinistra della policy WAF, seleziona Regole personalizzate.
- Fai clic su "+Aggiungi regola personalizzata".
- Nome regola: assegnagli un nome (es:
BloquearIPMalicioso). - Priorità: imposta una priorità (i numeri più piccoli hanno una priorità più alta).
- Tiporegola: "Abbina".
- Condizione:
- Tipo di variabile:
RemoteAddress. - Operatore:
IPMatch. - Valore: inserisci l'indirizzo IP o l'intervallo CIDR che desideri bloccare (es:
192.168.1.10/32).
- Tipo di variabile:
-
Azione: seleziona "Blocca".
-
Spiegazione: le regole personalizzate consentono di definire la logica di blocco in base a criteri specifici come indirizzi IP, intestazioni HTTP, stringhe di query, ecc.
-
Fare clic su Aggiungi e quindi su Salva nella policy WAF.
3. Monitoraggio del WAF e revisione dei registri
Il monitoraggio è essenziale per comprendere l’efficacia del WAF e adeguare le politiche.
- Nel portale di Azure passare al gateway applicazione (
appgw-waf-01). - Nel riquadro di navigazione a sinistra, in "Monitoraggio", seleziona Registri diagnostici.
- Fare clic su "+Aggiungi configurazione diagnostica".
- Nome configurazione diagnostica: assegnagli un nome (es:
diag-waf). - Categorie di registri: seleziona "ApplicationGatewayAccessLog" e "ApplicationGatewayFirewallLog".
- Dettagli destinazione: seleziona "Invia all'area di lavoro Log Analytics" e scegli la tua area di lavoro.
-
Fare clic su Salva.
-
Dopo alcuni minuti, accedere all'area di lavoro Log Analytics.
- Nel riquadro di navigazione a sinistra, seleziona Log.
- Utilizzare le query KQL (Kusto Query Language) per analizzare i log WAF:
- Per vedere tutti gli eventi WAF:
kusto AzureDiagnostics | dove ResourceProvider == "MICROSOFT.NETWORK" | dove Categoria == "ApplicationGatewayFirewallLog" | progetto TimeGenerated, hostname_s, requestUri_s, messaggio, action_s, policy_s | ordine per TimeGenerated desc - Per visualizzare gli attacchi bloccati (se WAF è in modalità "Prevenzione"):
kusto AzureDiagnostics | dove ResourceProvider == "MICROSOFT.NETWORK" | dove Categoria == "ApplicationGatewayFirewallLog" | dove azione_s == "Bloccato" | progetto TimeGenerated, hostname_s, requestUri_s, messaggio, ruleId_s | ordine per TimeGenerated desc
- Per vedere tutti gli eventi WAF:
Convalida e test
Testare il WAF è fondamentale per garantire che blocchi gli attacchi previsti e non il traffico legittimo (falsi positivi).
1. Testare gli attacchi comuni (SQL Injection, XSS)
-
Scenario: provare ad accedere all'applicazione Web tramite il gateway applicazione (utilizzando l'IP pubblico o il nome di dominio completo) e simulare un attacco SQL injection sull'URL o su un parametro del modulo.
- URL di esempio con tentativo di SQL injection (non eseguire in produzione senza autorizzazione):
http://<seu_ip_publico_appgw>/index.php?id=1' OPPURE '1'='1 - URL di esempio con tentativo XSS:
http://<seu_ip_publico_appgw>/search?query=<script>alert('XSS')</script>
- URL di esempio con tentativo di SQL injection (non eseguire in produzione senza autorizzazione):
-
Azione prevista (modalità di rilevamento): se il WAF è in modalità "Rilevamento", la richiesta deve essere consentita, ma i log WAF in Log Analytics devono registrare l'attacco e la regola che lo ha rilevato.
-
Azione prevista (modalità prevenzione): se il WAF è in modalità "Prevenzione", la richiesta dovrebbe essere bloccata e il browser dovrebbe visualizzare una pagina di errore WAF (solitamente un errore HTTP 403 Forbidden).
-
Verifica: controlla i log WAF in Log Analytics per confermare che gli attacchi sono stati rilevati (in modalità Rilevamento) o bloccati (in modalità Prevenzione).
2. Testare le regole personalizzate (blocco IP)
- Scenario: prova ad accedere alla tua applicazione web dall'indirizzo IP configurato nella regola personalizzata di blocco IP.
- Azione prevista: l'accesso dovrebbe essere bloccato e il browser dovrebbe visualizzare una pagina di errore WAF.
- Verifica: controlla i log WAF in Log Analytics per confermare che l'IP è stato bloccato dalla regola personalizzata.
Suggerimenti e best practice per la sicurezza
- Avvia in modalità di rilevamento: inizialmente distribuisci sempre il WAF in modalità "Rilevamento". Monitora attentamente i registri per identificare i falsi positivi e modificare le regole prima di passare alla modalità "Prevenzione".
- Ottimizzazione WAF: l'ottimizzazione è fondamentale. Disabilita regole specifiche che generano falsi positivi (bloccando il traffico legittimo) o aggiungi regole di esclusione per parametri specifici. Evita di disabilitare interi set di regole.
- Regole personalizzate: utilizza regole personalizzate per gestire i requisiti di sicurezza specifici della tua applicazioneo o per mitigare le vulnerabilità appena scoperte prima che le regole gestite vengano aggiornate.
- Aggiornamenti CRS: mantieni aggiornato il tuo set di regole gestito (OWASP CRS) per garantire la protezione contro le minacce più recenti. Azure WAF in genere si aggiorna automaticamente, ma controlla la versione.
- Integrazione con Azure Front Door: per le applicazioni Web globali o quelle che richiedono l'ottimizzazione delle prestazioni e il routing avanzato, prendi in considerazione la distribuzione di WAF su Azure Front Door. Ciò fornisce protezione ai margini della rete globale di Microsoft.
- Monitoraggio e avvisi: configura avvisi in Monitoraggio di Azure per eventi di sicurezza WAF, come attacchi bloccati o anomalie. Integra i log WAF con il tuo SIEM (ad esempio Microsoft Sentinel) per una visualizzazione centralizzata.
- Test di sicurezza regolari: esegui regolarmente test di penetrazione e scansioni di vulnerabilità sulle tue applicazioni web per identificare nuove vulnerabilità e convalidare l'efficacia del WAF.
- Principio del privilegio minimo: assicurati che solo gli utenti autorizzati dispongano delle autorizzazioni per configurare e gestire i criteri WAF.
Risoluzione dei problemi comuni
- WAF non blocca gli attacchi previsti:
- Verificare che il WAF sia in modalità "Prevenzione" e non in modalità "Rilevamento".
- Assicurati che il set di regole gestite (OWASP CRS) sia abilitato.
- Esamina i log WAF in Log Analytics per vedere se l'attacco è stato rilevato e quale regola è stata attivata. Potrebbe essere necessario regolare la sensibilità CRS o aggiungere una regola personalizzata.
- Assicurati che non siano presenti regole di esclusione o whitelist che consentano traffico dannoso.
- WAF sta bloccando il traffico legittimo (falsi positivi):
- Inizia analizzando i log WAF in Log Analytics per identificare quale regola sta bloccando il traffico legittimo.
- Per la regola identificata è possibile:
- Disabilita regola specifica (ultima risorsa).
- Aggiungi una regola di esclusione per il parametro o l'intestazione specifica che causa il falso positivo.
- Regola la soglia del punteggio di anomalia (se si utilizza CRS in modalità punteggio di anomalia).
- Valuta la possibilità di tornare temporaneamente alla modalità "Rilevamento" per modificare le regole.
- Le prestazioni dell'applicazione sono peggiorate dopo l'abilitazione di WAF:
- WAF aggiunge una piccola quantità di latenza dovuta al controllo del traffico. Assicurarsi che il gateway applicazione o la porta anteriore siano dimensionati in modo appropriato.
- Controllare i log delle prestazioni del gateway applicazione in Monitoraggio di Azure.
- WAF non è associato all'applicazione corretta:
- Verificare che il criterio WAF sia associato al gateway applicazione o alla porta anteriore corretta.
- Assicurati che il traffico verso la tua applicazione Web passi effettivamente attraverso il gateway applicazione/la porta anteriore con WAF abilitato.
Conclusione
Azure Web Application Firewall (WAF) è una difesa essenziale per proteggere le applicazioni Web da una miriade di attacchi informatici. Fornendo un livello di ispezione e filtraggio del traffico ai margini della rete, WAF funge da scudo, proteggendo dalle vulnerabilità note e dalle minacce zero-day. La flessibilità nell'utilizzo di set di regole gestite e personalizzate, insieme all'integrazione nativa con i servizi di distribuzione delle applicazioni di Azure, rendono Azure WAF una soluzione solida e scalabile per qualsiasi organizzazione. Con un'attenta implementazione, la messa a punto delle policy e il monitoraggio continuo, i professionisti della sicurezza possono garantire che le loro applicazioni Web rimangano sicure, disponibili e conformi, rafforzando la strategia di sicurezza complessiva dell'organizzazione contro il panorama delle minacce in continua evoluzione.
Riferimenti:
[1]Microsoft Learn. Che cos'è il firewall dell'applicazione Web di Azure?. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/web-application-firewall/overview [2]Microsoft Learn. Web Application Firewall (WAF) sul gateway applicazione Azure. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/ag-overview [3] Fondazione OWASP. OWASPTop 10. Disponibile su: https://owasp.org/www-project-top-ten/ [4]Microsoft Learn. Crea politiche firewalll Gateway applicazione Web (WAF) per Gateway applicazione Azure. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/create-waf-policy-ag [5]Microsoft Learn. Regole e gruppi di regole WAF CRS. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/application-gateway-waf-collection-rules [6]Microsoft Learn. Monitoraggio e registrazione WAF. Disponibile all'indirizzo: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/waf-diagnostics