Regole personalizzate per Web application Firewall di Azure in Frontdoor di Azure
Web Application Firewall di Azure in Frontdoor di Azure consente di controllare l'accesso alle applicazioni Web in base alle condizioni definite. Una regola Web application Firewall (WAF) personalizzata è costituita da un numero di priorità, un tipo di regola, condizioni di corrispondenza e un'azione.
Ci sono due tipi di regole personalizzate: regole di corrispondenza e regole per il limite di frequenza. Una regola di corrispondenza controlla l'accesso in base a un set di condizioni corrispondenti. Una regola di limite di velocità controlla l'accesso in base alle condizioni di corrispondenza e alle frequenze delle richieste in ingresso. È possibile disabilitare una regola personalizzata per impedirne la valutazione, ma mantenere comunque la configurazione.
Per altre informazioni sulla limitazione della frequenza, vedere Che cos'è la limitazione della velocità per Frontdoor di Azure?.
Priorità, tipi di azione e condizioni di corrispondenza
È possibile controllare l'accesso con una regola WAF personalizzata che definisce un numero di priorità, un tipo di regola, una matrice di condizioni di corrispondenza e un'azione.
Priorità
Intero univoco che descrive l'ordine di valutazione delle regole WAF. Le regole con valori con priorità inferiore vengono valutate prima delle regole con valori più elevati. La valutazione della regola si arresta su qualsiasi azione della regola, ad eccezione di Log. I numeri di priorità devono essere univoci tra tutte le regole personalizzate.
Azione
Definisce come instradare una richiesta se viene trovata una corrispondenza con una regola WAF. È possibile scegliere una delle azioni seguenti da applicare quando una richiesta corrisponde a una regola personalizzata.
- Consenti: WAF consente alla richiesta di elaborare, registra una voce nei log WAF e viene chiusa.
- Blocca: la richiesta è bloccata. WAF invia una risposta a un client senza inoltrare ulteriormente la richiesta. WAF registra una voce nei log WAF ed esce.
- Log: WAF registra una voce nei log WAF e continua a valutare la regola successiva nell'ordine di priorità.
- Reindirizza: WAF reindirizza la richiesta a un URI specificato, registra una voce nei log WAF e viene chiusa.
Condizione di corrispondenza:
Definisce una variabile di corrispondenza, un operatore e un valore di corrispondenza. Ogni regola può contenere più condizioni di corrispondenza. Una condizione di corrispondenza può essere basata sulla posizione geografica, sugli indirizzi IP client (CIDR), sulle dimensioni o sulla corrispondenza di stringa. La corrispondenza tra stringhe può essere confrontata con un elenco di variabili di corrispondenza.
Variabile di corrispondenza
- RequestMethod
- QueryString
- PostArgs
- RequestUri
- RequestHeader
- RequestBody
- Cookie
Operatore
- Any: spesso usato per definire l'azione predefinita se non viene trovata alcuna corrispondenza con le regole. Qualsiasi è un operatore corrispondente a tutti.
- Uguale
- Contiene
- LessThan: vincolo Size
- GreaterThan: vincolo Size
- LessThanOrEqual: vincolo Size
- GreaterThanOrEqual: vincolo Size
- BeginsWith
- EndsWith
- Regex
Regex
Non supporta le operazioni seguenti:
- Backreference e acquisizione di sotto-espressioni
- Asserzioni arbitrarie di larghezza zero
- Riferimenti a subroutine e modelli ricorsivi
- Modelli condizionali
- Verbi di controllo backtracking
- Direttiva \C a byte singolo
- Direttiva abbinamento nuova linea \R
- Direttiva \K start of match reset
- Callout e codice incorporato
- Raggruppamento atomico e quantificatori possessivi
Nega [facoltativo]
È possibile impostare la condizione
negate
su true se il risultato di una condizione deve essere negato.Trasforma [facoltativo]
Elenco di stringhe con nomi di trasformazioni da eseguire prima che venga tentata la corrispondenza. Queste possono essere le trasformazioni seguenti:
- Maiuscole
- Minuscole
- Trim
- RemoveNulls
- UrlDecode
- UrlEncode
Valore di corrispondenza
I valori dei metodi di richiesta HTTP supportati includono:
- GET
- POST
- PUT
- HEAD
- DELETE
- LOCK
- UNLOCK
- PROFILE
- OPTIONS
- PROPFIND
- PROPPATCH
- MKCOL
- COPY
- MOVE
- PATCH
- CONNECT
Esempi
Si considerino gli esempi seguenti.
Corrispondenza basata sui parametri della richiesta HTTP
Si supponga di dover configurare una regola personalizzata per consentire le richieste che soddisfano le due condizioni seguenti:
- Il valore dell'intestazione
Referer
è uguale a un valore noto. - La stringa di query non contiene la parola
password
.
Quello che segue è un esempio di descrizione JSON della regola personalizzata:
{
"name": "AllowFromTrustedSites",
"priority": 1,
"ruleType": "MatchRule",
"matchConditions": [
{
"matchVariable": "RequestHeader",
"selector": "Referer",
"operator": "Equal",
"negateCondition": false,
"matchValue": [
"www.mytrustedsites.com/referpage.html"
]
},
{
"matchVariable": "QueryString",
"operator": "Contains",
"matchValue": [
"password"
],
"negateCondition": true
}
],
"action": "Allow"
}
Bloccare le richieste HTTP PUT
Si supponga di dover bloccare qualsiasi richiesta che usi il metodo HTTP PUT.
Quello che segue è un esempio di descrizione JSON della regola personalizzata:
{
"name": "BlockPUT",
"priority": 2,
"ruleType": "MatchRule",
"matchConditions": [
{
"matchVariable": "RequestMethod",
"selector": null,
"operator": "Equal",
"negateCondition": false,
"matchValue": [
"PUT"
]
}
],
"action": "Block"
}
Vincolo di dimensione
Un WAF di Frontdoor di Azure consente di creare regole personalizzate che applicano un vincolo di lunghezza o dimensioni in una parte di una richiesta in ingresso. Questo vincolo di dimensione viene misurato in byte.
Si supponga di dover bloccare le richieste in cui l'URL è più lungo di 100 caratteri.
Quello che segue è un esempio di descrizione JSON della regola personalizzata:
{
"name": "URLOver100",
"priority": 5,
"ruleType": "MatchRule",
"matchConditions": [
{
"matchVariable": "RequestUri",
"selector": null,
"operator": "GreaterThanOrEqual",
"negateCondition": false,
"matchValue": [
"100"
]
}
],
"action": "Block"
}
Corrispondenza basata sull'URI della richiesta
Si supponga di dover consentire le richieste in cui l'URI contiene "login".
Quello che segue è un esempio di descrizione JSON della regola personalizzata:
{
"name": "URIContainsLogin",
"priority": 5,
"ruleType": "MatchRule",
"matchConditions": [
{
"matchVariable": "RequestUri",
"selector": null,
"operator": "Contains",
"negateCondition": false,
"matchValue": [
"login"
]
}
],
"action": "Allow"
}
Copia e duplicazione di regole personalizzate
Le regole personalizzate possono essere duplicate all'interno di un determinato criterio. Quando si duplica una regola, è necessario specificare un nome univoco per la regola e un valore di priorità univoco. Inoltre, le regole personalizzate possono essere copiate da un criterio WAF di Frontdoor di Azure a un altro, purché i criteri si trovino entrambi nella stessa sottoscrizione. Quando si copia una regola da un criterio a un altro, è necessario selezionare il criterio WAF di Frontdoor di Azure in cui copiare la regola. Dopo aver selezionato il criterio WAF, è necessario assegnare alla regola un nome univoco e assegnare un rango di priorità.
Passaggi successivi
- Configurare un criterio WAF usando Azure PowerShell.
- Informazioni su Web Application Firewalll di Azure in Frontdoor di Azure.
- Informazioni su come creare un'istanza di Frontdoor di Azure.