Le Web Application Firewall policies permettono di centralizzare tutte le impostazioni, anche di WAF differenti, in un’unica configurazione. E’ possibile anche applicare più WAF policy, allo stesso Azure Application Gateway, associandole a livello di HTTP listener. In questo modo verranno applicate differenti regole personalizzate a seconda della URL ripubblicata esternamente (public listener) o internamente (private listener).
Prerequisito per le WAF policy è il Web Application Firewall nella SKU v2.

Ad oggi le WAF policies sono applicabili a tre differenti oggetti Azure:
- Global WAF (Front Door)
- Regional WAF (Application Gateway)
- Azure CDN (Preview)
In questo articolo entreremo nel dettaglio delle Web Application Firewall policies applicate ad Azure Application Gateway. E’ da tenere in considerazione che alcune configurazioni, come le regole gestite o personalizzate, sono molto simili se non identiche tra Global WAF, Regional WAF ed Azure CDN.
Policy
Le WAF policies consistono nell’insieme di regole personalizzate e gestite, nella tipologia di attivazione del WAF (Detection o Prevention), nelle esclusioni, nella impostazione sul limite della dimensione di upload di file e nelle configurazione di ispezione del request body.
La creazione della WAF policy, per quanto riguarda Azure Application Gateway, prevede le seguenti configurazioni.
Associazione
Una volta selezionato il regional WAF occorerrà definire l’associazione a livello di Azure Application Gateway o HTTP listener.


Sarà possibile creare policy differenti per ogni listener appartenente allo stesso Application Gateway. Nel caso venissero assegnate policy a livello di Application Gateway o HTTP listener, che già hanno una policy associata, l’effetto sarà che la policy precedente verrà sovrascritta. La policy applicata a livello di Application Gateway o HTTP listener deve essere univoca.
Regole Gestite
Le regole gestite riguardano tutto il gruppo di regole OWASP pre-create e abilitate di default per offrire una protezione da differenti tipologie di attacchi conosciuti tra cui: SQL injection, cross-site scripting, local file inclusion, remote code execution, PHP code injection, scanner detection e tanti altri.

Regole Personalizzate
Con le regole personalizzate è possibile creare le proprie regole che verranno processate con priorità maggiore rispetto alle regole gestite. Le regole personalizzate si basano su una serie di condizioni per bloccare, permettere o loggare il traffico.

I campi richiesti e permessi per la creazione della regola personalizzata sono i seguenti:
Name
Priority
Le regole verranno processate in ordine numerico crescente. Il range numerico consentito è 1-100.
Match Rule
- Match rule
Match Variable
- RemoteAddr
- RequestMethod
- QueryString
- PostArgs
- RequestUri
- RequestHeaders
- RequestBody
- RequestCookies
Operator
- IPMatch
- Equals
- Contains
- LessThan
- GreaterThan
- LessThanOrEqual
- GreaterThanOrEqual
- BeginsWith
- EndsWith
- Regex
Action Required
- Allow
- Block
- Log
Tramite una funzionalità in preview è possibile applicare delle regole personalizzate, di tipo geomatch, a seconda della provenienza (region) della richiesta.
Riferimenti
Si riportano alcuni riferimenti alla documentazione ufficiale Microsoft:
Regole personalizzate per Azure Application Gateway SKU v2
Creare WAF Policy per Azure Application Gateway
Conclusioni
La WAF policy permette una gestione centralizzata di tutti gli aspetti legati alle configurazioni di sicurezza del Web Application Firewall. In modo particolare le regole personalizzate, oltre ad applicare specifici controlli sulle applicazioni web ripubblicate, ottimizzano anche l’aspetto economico. Prima delle regole personalizzate, nel caso fosse stato necessario applicare dei filtri sugli IP sorgenti, l’unico modo era tramite Network Security Group. In questi scenari significava prevedere un Application Gateway dedicato, anche per un singolo listener, che doveva essere acceduto solamente da quei determinati IP sorgenti. Con la WAF policy, tramite regole personalizzate, è possibile prevedere la stessa tipologia di blocco a livello di HTTP listener e non più in modo globale su Azure Application Gateway con regole configurate nel NSG.