Cloud Armor fornisce regole WAF preconfigurate, ognuna delle quali è costituita da più firme provenienti dal core rule set (CRS) OWASP.
Ogni firma corrisponde a una regola di rilevamento degli attacchi nel set di regole. Le richieste in entrata vengono valutate in base alle regole WAF preconfigurate.
Una richiesta corrisponde a una regola WAF preconfigurata se corrisponde a una delle firme associate alla regola WAF preconfigurata. Viene trovata una corrispondenza quando
l'espressione evaluatePreconfiguredWaf() restituisce il valore true.
Scegli un livello di sensibilità
Ogni firma ha un livello di sensibilità che corrisponde a un livello di paranoia OWASP.
Puoi selezionare una sensibilità compresa tra 0 e 4, anche se il livello di sensibilità 0
significa che nessuna regola è attivata per impostazione predefinita.
Un livello di sensibilità inferiore indica firme con un'attendibilità maggiore, che hanno meno probabilità di generare un falso positivo. Un livello di sensibilità più alto aumenta la sicurezza, ma anche il rischio di generare un falso positivo. Quando
selezioni un livello di sensibilità per la regola WAF preconfigurata, attivi le firme ai
livelli di sensibilità inferiori o uguali al livello di sensibilità selezionato. Nell'esempio
seguente, ottimizzi una regola WAF preconfigurata selezionando il
livello di sensibilità 1:
evaluatePreconfiguredWaf(
'sqli-v33-stable',
{
'sensitivity': 1
}
)
Disattiva le firme delle regole
Se ritieni che una regola WAF preconfigurata corrisponda a più richieste del necessario
o se la regola blocca il traffico che deve essere consentito, può essere
ottimizzata per disattivare le firme irrilevanti o altrimenti non necessarie. Per disattivare le firme
in una determinata regola WAF preconfigurata, fornisci un elenco di ID delle firme non desiderate
all'espressione evaluatePreconfiguredWaf().
L'esempio seguente esclude due ID regola CRS dalla regola WAF preconfigurata
sqli-v33-stable (CRS 3.3):
evaluatePreconfiguredWaf(
'sqli-v33-stable',
{
'sensitivity': 4,
'opt_out_rule_ids': ['owasp-crs-v030301-id942350-sqli', 'owasp-crs-v030301-id942360-sqli']
}
)
Quando disattivi gli ID firma dai set di regole CRS preconfigurati, devi abbinare la versione dell'ID firma alla versione del set di regole (CRS 3.0 o 3.3) per evitare errori di configurazione.
Puoi anche disattivare gli ID firma utilizzando l'espressione precedente
evaluatePreconfigureExpr(). Per saperne di più sulle espressioni delle regole WAF preconfigurate, consulta il riferimento per il linguaggio delle regole personalizzate.
Attiva le firme delle regole
Anziché disattivare le firme delle regole, puoi attivarle nei
livelli di sensibilità altrimenti disattivati. Ti consigliamo di attivare le firme delle regole
quando il numero di firme che vuoi utilizzare in un determinato
livello di sensibilità è inferiore al numero di regole che vuoi disattivare. Per attivare le firme
delle regole, il livello di sensibilità deve essere 0. L'esempio seguente disattiva
tutte le firme cve-canary a tutti i livelli di sensibilità, quindi attiva
esplicitamente owasp-crs-v030001-id044228-cve e owasp-crs-v030001-id144228-cve:
evaluatePreconfiguredWaf(
'cve-canary',
{
'sensitivity': 0,
'opt_in_rule_ids': ['owasp-crs-v030001-id044228-cve', 'owasp-crs-v030001-id144228-cve']
}
)
Escludi i campi di richiesta dall'ispezione
La tua applicazione personalizzata potrebbe contenere contenuti nei campi della richiesta (ad esempio
intestazioni, cookie, parametri di query o URI) che corrispondono alle firme nelle
regole WAF preconfigurate, ma che sai essere legittimi. In questo caso, puoi
ridurre i falsi positivi escludendo questi campi di richiesta dall'ispezione
associando un elenco di esclusioni per i campi di richiesta alla regola
della policy di sicurezza. Tieni presente che quando a una regola WAF è associata un'esclusione di campi della richiesta,
non puoi utilizzare l'azione allow.
Quando configuri un'esclusione di campi della richiesta, la associ a una destinazione, che può essere un'intera regola WAF preconfigurata o un elenco di firme in una regola WAF preconfigurata. Puoi specificare una corrispondenza esatta o parziale utilizzando un operatore di campo e un valore di campo. Gli operatori di campo disponibili sono i seguenti:
EQUALS: l'operatore corrisponde se il valore del campo è uguale al valore specificato.STARTS_WITH: l'operatore corrisponde se il valore del campo inizia con il valore specificato.ENDS_WITH: l'operatore corrisponde se il valore del campo termina con il valore specificato.CONTAINS: l'operatore corrisponde se il valore del campo contiene il valore specificato.EQUALS_ANY: l'operatore corrisponde se il valore del campo è un valore qualsiasi.
Limite di esclusione dell'ottimizzazione
Il limite di esclusione della messa a punto predefinito è 100 per le policy di backend a livello di servizio (sia globali sia regionali). Questo limite si applica per destinazione e controlla il numero massimo di esclusioni che puoi configurare all'interno di una regola deille policy di sicurezza. Un target è la combinazione di un insieme di regole e un ID regola. Il limite si applica alle esclusioni per i seguenti campi:
- Intestazioni della richiesta
- Cookie della richiesta
- Parametri di query della richiesta
- URI della richiesta
Ad esempio, se hai una regola WAF preconfigurata (ad esempio
evaluatePreconfiguredWaf('sqli-v33-stable')) e vuoi escludere i campi
della richiesta in una destinazione specifica (ad esempio owasp-crs-v030301-id942100-sqli in
sqli-v33-stable), puoi configurare fino a 100 intestazioni della richiesta, 100 cookie
della richiesta, 100 parametri di query della richiesta e 100 URI della richiesta da escludere per
questa destinazione.
Le sezioni seguenti forniscono maggiori informazioni sui campi della richiesta che puoi escludere dall'ispezione, seguite da esempi.
Intestazioni della richiesta
Un elenco di nomi di intestazioni della richiesta il cui valore è escluso dal controllo durante la valutazione delle regole WAF preconfigurate.
L'esclusione è applicabile solo alle firme nella destinazione che ispezionerebbero originariamente il valore dell'intestazione della richiesta. Ciò include le firme associate al seguente flag di richiesta nel core rule set OWASP:
- REQUEST_HEADERS
Solo il valore delle intestazioni della richiesta specificate è escluso dall'ispezione. Il nome è ancora in fase di ispezione.
Cookie della richiesta
Un elenco di nomi di cookie della richiesta il cui valore è escluso dall'ispezione durante la valutazione delle regole WAF preconfigurate.
L'esclusione è applicabile solo alle firme nella destinazione che avrebbero dovuto ispezionare originariamente il valore del cookie della richiesta. Ciò include le firme associate al seguente flag di richiesta nel core rule set OWASP:
- REQUEST_COOKIES
Solo il valore dei cookie di richiesta specificati è escluso dall'ispezione. Il nome è ancora in fase di ispezione.
Parametri di query della richiesta
Un elenco di nomi di parametri di query della richiesta il cui valore è escluso dall'ispezione durante la valutazione della regola WAF preconfigurata.
L'esclusione è applicabile solo alle firme nella destinazione che ispezionerebbero originariamente i parametri della richiesta. Ciò include le firme associate ai seguenti flag di richiesta nel core rule set OWASP:
- ARGS
- ARGS_GET
- REQUEST_URI
- REQUEST_URI_RAW
- REQUEST_LINE
Dall'ispezione vengono esclusi solo i valori dei parametri di query specificati, che possono trovarsi nella stringa di query o nel corpo della richiesta. Il nome è ancora in fase di ispezione.
Poiché i parametri di query fanno parte dell'URI e della riga di richiesta,
questi campi vengono riassemblati per l'ispezione dopo aver escluso i parametri di query specificati. Tuttavia, per le firme che esaminano
l'intero corpo della richiesta (come le firme associate al
flag di richiesta REQUEST_BODY), l'esclusione per i parametri di ricerca non viene applicata.
Ad esempio, se escludi un parametro di query denominato "args", potresti comunque vedere una corrispondenza in una firma che esamina l'intero corpo della richiesta se la richiesta ha un parametro "args" nel corpo della richiesta e il valore di "args" corrisponde.
URI della richiesta
Un elenco di URI dalla riga della richiesta, esclusi i dati della stringa di query da escludere dall'ispezione durante la valutazione della regola WAF preconfigurata.
L'esclusione è applicabile solo alle firme nella destinazione che in origine avrebbero ispezionato l'URI della richiesta. Ciò include le firme associate ai seguenti flag di richiesta nel core rule set OWASP:
- REQUEST_URI
- REQUEST_URI_RAW
- REQUEST_LINE
- REQUEST_FILENAME
- REQUEST_BASENAME
Quando escludi uno dei campi precedenti, il campo viene escluso completamente dall'ispezione e non viene eseguito alcun riassemblaggio.
Valori del campo
Devi specificare un valore del campo se utilizzi un operatore di campo diverso da
EQUALS_ANY.
Per le intestazioni della richiesta, i cookie della richiesta e i parametri di query della richiesta, il set di caratteri consentiti per i valori dei campi include i seguenti caratteri:
!,#,$,%,&,*,+,-,.,^,_,`,|,~- Caratteri alfabetici da
AaZ(sia minuscoli che maiuscoli) - Caratteri numerici da
0a9
Quando applichi le esclusioni per questi campi della richiesta, i valori dei campi configurati vengono confrontati così come sono con i valori (senza distinzione tra maiuscole e minuscole, dopo la trasformazione) della richiesta. Non è necessario eseguire una codifica aggiuntiva se vuoi escludere un carattere specifico che non fa parte del set di caratteri consentiti.
Per gli URI della richiesta, il valore del campo deve essere fornito in formato URI come segue:
- È consentito uno schema, ma è limitato solo a http o https.
- È consentito un host, che può essere un indirizzo IP.
- È consentita una porta.
- È consentito un percorso.
- Una query non è consentita.
- Un frammento non è consentito.
Quando applichi le esclusioni per gli URI della richiesta, i valori dei campi configurati vengono confrontati così come sono con gli URI (senza distinzione tra maiuscole e minuscole, dopo la trasformazione) dalla riga della richiesta, escludendo la stringa di query. Gli URI della riga della richiesta possono essere relativi o assoluti. Tieni presente questo aspetto quando configuri le esclusioni per gli URI della richiesta.
Esempi
Il primo esempio aggiorna la regola nella policy di sicurezza POLICY_1 in
PRIORITY per aggiungere una configurazione di esclusione per tutte le firme nella
regola WAF preconfigurata sqli-v33-stable, in modo da escludere tutti i cookie della richiesta dall'ispezione:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_1 \
--target-rule-set "sqli-v33-stable" \
--request-cookie-to-exclude "op=EQUALS_ANY"
Il secondo esempio aggiorna la regola nella policy di sicurezza POLICY_2
in PRIORITY per aggiungere una configurazione di esclusione per le firme
owasp-crs-v030301-id941140-xss e owasp-crs-v030301-id941270-xss nella
regola WAF preconfigurata xss-v33-stable, per escludere dall'ispezione le intestazioni della richiesta che iniziano con
abc o terminano con xyz:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_2 \
--target-rule-set "xss-v33-stable" \
--target-rule-ids "owasp-crs-v030301-id941140-xss,owasp-crs-v030301-id941270-xss" \
--request-header-to-exclude "op=STARTS_WITH,val=abc" \
--request-header-to-exclude "op=ENDS_WITH,val=xyz"
Il terzo esempio aggiorna la regola nella policy di sicurezza POLICY_3
in PRIORITY per aggiungere una configurazione di esclusione per tutte le firme
nella regola WAF preconfigurata sqli-v33-stable. Vengono esclusi dall'ispezione i parametri di query della richiesta
(analizzati dalla stringa di query URI o dal payload del corpo) che sono uguali a
bad-param:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_3 \
--target-rule-set "sqli-v33-stable" \
--request-query-param-to-exclude "op=EQUALS,val=bad-param"
Il quarto esempio aggiorna la regola nella policy di sicurezza POLICY_4
in PRIORITY per aggiungere una configurazione di esclusione per la firma
owasp-crs-v030301-id930100-lfi nella regola WAF preconfigurata lfi-v33-stable. Esclude
dall'ispezione gli URI della richiesta che contengono /bad-path:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_4 \
--target-rule-set "lfi-v33-stable" \
--target-rule-ids "owasp-crs-v030301-id930100-lfi" \
--request-uri-to-exclude "op=CONTAINS,val=/bad-path"
Il quinto esempio aggiorna la regola nella policy di sicurezza POLICY_5
in PRIORITY per rimuovere tutte le esclusioni dei campi della richiesta per gli ID regola
owasp-crs-v030301-id942110-sqli e owasp-crs-v030301-id942120-sqli
in sqli-v33-stable.
gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_5 \
--target-rule-set "sqli-v33-stable" \
--target-rule-ids "owasp-crs-v030301-id942110-sqli,owasp-crs-v030301-id942120-sqli"
Applica l'analisi ai valori delle intestazioni Content-Type personalizzate
Quando Cloud Armor valuta il corpo della richiesta rispetto alle regole WAF preconfigurate, l'intestazione Content-Type indica il formato dei dati nel corpo della richiesta. Per
impostazione predefinita, Cloud Armor considera i contenuti del corpo della richiesta come una
stringa, tutti idonei all'ispezione e alla corrispondenza con le
regole WAF preconfigurate. Tuttavia, puoi configurare un'analisi più precisa se le
richieste in entrata hanno una codifica diversa. Cloud Armor supporta i seguenti tipi di codifica:
- JSON
- GraphQL
Per maggiori informazioni, consulta Analisi dei contenuti del corpo della richiesta.
Passaggi successivi
- Scopri di più sulla configurazione delle policy di sicurezza.
- Scopri di più sulle firme delle regole disponibili per le regole WAF preconfigurate.
- Scopri di più sulle regole WAF preconfigurate utilizzando il riferimento per il linguaggio delle regole personalizzate.