Configurare elenchi di esclusione del web application firewall
A volte Azure Web application firewall in Frontdoor di Azure potrebbe bloccare una richiesta legittima. Nell'ambito dell'ottimizzazione del web application firewall (WAF), è possibile configurare waf per consentire la richiesta per l'applicazione. Gli elenchi di esclusione WAF consentono di omettere attributi di richiesta specifici da una valutazione WAF. Il resto della richiesta viene valutato come di consueto. Per altre informazioni sugli elenchi di esclusione, vedere Azure Web application firewall con elenchi di esclusione di Frontdoor di Azure.
È possibile configurare un elenco di esclusione usando Azure PowerShell, l'interfaccia della riga di comando di Azure, l'API REST, Bicep, i modelli di azure Resource Manager e la portale di Azure.
Scenario
Si supponga di aver creato un'API. I client inviano richieste all'API che includono intestazioni con nomi come userid
e user-id
.
Durante l'ottimizzazione del WAF, si nota che alcune richieste legittime sono state bloccate perché le intestazioni utente includono sequenze di caratteri rilevate dal WAF come attacchi SQL injection. In particolare, l'ID regola 942230 rileva le intestazioni della richiesta e blocca le richieste. La regola 942230 fa parte del gruppo di regole SQLI.
Si decide di creare un'esclusione per consentire il passaggio di queste richieste legittime senza che il WAF li blocchi.
Creare un'esclusione
Aprire i criteri WAF di Frontdoor di Azure.
Selezionare Regole gestite>Gestisci esclusioni.
Selezionare Aggiungi.
Configurare la sezione Si applica all'esclusione :
Campo Valore Set di regole Microsoft_DefaultRuleSet_2.0 Gruppo di regole SQLI Regola 942230 Rileva i tentativi di inserimento condizionale di SQL Configurare le condizioni di corrispondenza di esclusione:
Campo Valore Corrispondenza variabile Nome intestazione richiesta Operatore Inizia con Selettore Utente Esaminare l'esclusione, simile alla schermata seguente:
Questa esclusione si applica a tutte le intestazioni di richiesta che iniziano con la parola
user
. La condizione di corrispondenza non fa distinzione tra maiuscole e minuscole, pertanto anche le intestazioni che iniziano conUser
sono coperte dall'esclusione. Se la regola WAF 942230 rileva un rischio in questi valori di intestazione, ignora l'intestazione e si sposta.Selezionare Salva.
Definire un selettore di esclusione
Usare il cmdlet New-AzFrontDoorWafManagedRuleExclusionObject per definire un nuovo selettore di esclusione.
Nell'esempio seguente vengono identificate le intestazioni di richiesta che iniziano con la parola user
. La condizione di corrispondenza non fa distinzione tra maiuscole e minuscole, pertanto anche le intestazioni che iniziano con User
sono coperte dall'esclusione.
$exclusionSelector = New-AzFrontDoorWafManagedRuleExclusionObject `
-Variable RequestHeaderNames `
-Operator StartsWith `
-Selector 'user'
Definire un'esclusione per regola
Usare il cmdlet New-AzFrontDoorWafManagedRuleOverrideObject per definire una nuova esclusione per regola, che include il selettore creato nel passaggio precedente.
Nell'esempio seguente viene creata un'esclusione per l'ID regola 942230.
$exclusion = New-AzFrontDoorWafManagedRuleOverrideObject `
-RuleId '942230' `
-Exclusion $exclusionSelector
Applicare l'esclusione al gruppo di regole
Usare il cmdlet New-AzFrontDoorWafRuleGroupOverrideObject per creare un override del gruppo di regole, che applica l'esclusione al gruppo di regole appropriato.
Nell'esempio seguente viene usato il gruppo di regole SQLI perché il gruppo contiene l'ID regola 942230.
$ruleGroupOverride = New-AzFrontDoorWafRuleGroupOverrideObject `
-RuleGroupName 'SQLI' `
-ManagedRuleOverride $exclusion
Configurare il set di regole gestite
Usare il cmdlet New-AzFrontDoorWafManagedRuleObject per configurare il set di regole gestite, incluso l'override del gruppo di regole creato nel passaggio precedente.
Nell'esempio seguente viene configurato il set di regole DRS 2.0 con l'override del gruppo di regole e la relativa esclusione.
$managedRuleSet = New-AzFrontDoorWafManagedRuleObject `
-Type 'Microsoft_DefaultRuleSet' `
-Version '2.0' `
-Action Block `
-RuleGroupOverride $ruleGroupOverride
Applicare la configurazione del set di regole gestite al profilo WAF
Usare il cmdlet Update-AzFrontDoorWafPolicy per aggiornare i criteri WAF per includere la configurazione creata. Assicurarsi di usare il nome corretto del gruppo di risorse e il nome del criterio WAF per il proprio ambiente.
Update-AzFrontDoorWafPolicy `
-ResourceGroupName 'FrontDoorWafPolicy' `
-Name 'WafPolicy'
-ManagedRule $managedRuleSet
Creare un'esclusione
Usare il az network front-door waf-policy managed-rules exclusion add
comando per aggiornare i criteri WAF per aggiungere una nuova esclusione.
L'esclusione identifica le intestazioni della richiesta che iniziano con la parola user
. La condizione di corrispondenza non fa distinzione tra maiuscole e minuscole, pertanto anche le intestazioni che iniziano con User
sono coperte dall'esclusione.
Assicurarsi di usare il nome corretto del gruppo di risorse e il nome del criterio WAF per il proprio ambiente.
az network front-door waf-policy managed-rules exclusion add \
--resource-group FrontDoorWafPolicy \
--policy-name WafPolicy \
--type Microsoft_DefaultRuleSet \
--rule-group-id SQLI \
--rule-id 942230 \
--match-variable RequestHeaderNames \
--operator StartsWith \
--value user
File Bicep di esempio
Il file Bicep di esempio seguente illustra come:
- Creare un criterio WAF di Frontdoor di Azure.
- Abilitare il set di regole DRS 2.0.
- Configurare un'esclusione per la regola 942230, che esiste all'interno del gruppo di regole SQLI. Questa esclusione si applica a tutte le intestazioni di richiesta che iniziano con la parola
user
. La condizione di corrispondenza non fa distinzione tra maiuscole e minuscole, pertanto anche le intestazioni che iniziano conUser
sono coperte dall'esclusione. Se la regola WAF 942230 rileva un rischio in questi valori di intestazione, ignora l'intestazione e si sposta.
param wafPolicyName string = 'WafPolicy'
@description('The mode that the WAF should be deployed using. In "Prevention" mode, the WAF will block requests it detects as malicious. In "Detection" mode, the WAF will not block requests and will simply log the request.')
@allowed([
'Detection'
'Prevention'
])
param wafMode string = 'Prevention'
resource wafPolicy 'Microsoft.Network/frontDoorWebApplicationFirewallPolicies@2022-05-01' = {
name: wafPolicyName
location: 'Global'
sku: {
name: 'Premium_AzureFrontDoor'
}
properties: {
policySettings: {
enabledState: 'Enabled'
mode: wafMode
}
managedRules: {
managedRuleSets: [
{
ruleSetType: 'Microsoft_DefaultRuleSet'
ruleSetVersion: '2.0'
ruleSetAction: 'Block'
ruleGroupOverrides: [
{
ruleGroupName: 'SQLI'
rules: [
{
ruleId: '942230'
enabledState: 'Enabled'
action: 'AnomalyScoring'
exclusions: [
{
matchVariable: 'RequestHeaderNames'
selectorMatchOperator: 'StartsWith'
selector: 'user'
}
]
}
]
}
]
}
]
}
}
}
Passaggi successivi
Altre informazioni su Frontdoor di Azure.