Google Cloud Armor fornisce
regole WAF preconfigurate, ciascuna composta da
più firme provenienti dal
ModSecurity Core Rule Set (CRS).
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 effettuata una corrispondenza quando
l'espressione evaluatePreconfiguredWaf()
o evaluatePreconfiguredExpr()
restituisce il valore true
.
Scegli un livello di sensibilità
Ogni firma ha un livello di sensibilità che corrisponde a un livello di paranoia di ModSecurity.
Puoi selezionare un livello di sensibilità compreso tra 0
e 4
, anche se il livello di sensibilità 0
indica che per impostazione predefinita non sono attivate regole.
Un livello di sensibilità più basso indica firme con un'affidabilità maggiore, che hanno meno probabilità di generare un falso positivo. Un livello di sensibilità più elevato aumenta la sicurezza, ma aumenta anche il rischio di generare un falso positivo. Quando
selezioni un livello di sensibilità per la regola WAF, attivi le firme ai livelli di sensibilità inferiori o uguali a quello selezionato. Nel
seguente esempio, ottimizzi una regola WAF preconfigurata selezionando il
livello di sensibilità 1
:
evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 1})
Disattivare le firme delle regole
Se decidi che una regola WAF preconfigurata corrisponde a più richieste del necessario o se la regola blocca il traffico che deve essere consentito, la regola può essere ottimizzata per disattivare le firme rumorose o altrimenti non necessarie. Per disattivare le firme
in una determinata regola WAF preconfigurata, fornisci un elenco di ID delle firme
indesiderate all'espressione evaluatePreconfiguredWaf()
.
L'esempio seguente esclude due ID regola CRS dalla regola WAF preconfiguratasqli-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 associare 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 ulteriori informazioni sulle espressioni delle regole WAF preconfigurate, consulta il riferimento al linguaggio delle regole personalizzate.
Attivare le firme delle regole
Anziché disattivare le firme delle regole, puoi attivarle in livelli di sensibilità altrimenti disattivati. Ti consigliamo di attivare le firme delle regole quando le firme da utilizzare in un determinato livello di sensibilità sono inferiori alle regole da 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']})
Escludere i campi di richiesta dall'ispezione
L'applicazione personalizzata potrebbe contenere contenuti nei campi di richiesta (come intestazioni, cookie, parametri di ricerca o URI) che corrispondono alle firme nelle regole WAF predefinite, ma che sai essere legittime. In questo caso, puoi ridurre i falsi positivi escludendo i campi di richiesta dall'ispezione associando un elenco di esclusioni per i campi di richiesta alla regola del criterio di sicurezza. Tieni presente che, se hai un'esclusione di campi della richiesta associata a una regola WAF,
non puoi utilizzare l'azione allow
.
Quando configuri un'esclusione del campo della richiesta, la associ a un target, che può essere un'intera regola WAF preconfigurata o un elenco di firme in una regola WAF preconfigurata. Puoi specificare una corrispondenza esatta o una corrispondenza parziale utilizzando un operatore di campo e un valore di campo. Gli operatori di campo disponibili sono i seguenti:
EQUALS
: l'operatore trova una corrispondenza 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 trova una corrispondenza se il valore del campo termina con il valore specificato.CONTAINS
: l'operatore trova una corrispondenza se il valore del campo contiene il valore specificato.EQUALS_ANY
: l'operatore trova una corrispondenza se il valore del campo è qualsiasi.
Le sezioni seguenti forniscono ulteriori informazioni sui campi della richiesta che puoi escludere dall'ispezione, seguiti da esempi.
Intestazioni delle richieste
Un elenco di nomi di intestazioni di richieste il cui valore è escluso dall'ispezione durante la valutazione delle regole WAF preconfigurate.
L'esclusione è applicabile solo alle firme nel target che esaminerebbero inizialmente il valore dell'intestazione della richiesta. Sono incluse le firme associate al seguente flag di richiesta nel set di regole di ModSecurity Core:
- REQUEST_HEADERS
Solo il valore delle intestazioni di richiesta specificate è escluso dall'ispezione. Il nome è ancora in fase di ispezione.
Cookie di richiesta
Un elenco di nomi di cookie di richiesta il cui valore è escluso dall'ispezione durante la valutazione della regola WAF preconfigurata.
L'esclusione è applicabile solo alle firme nel target che esaminerebbero inizialmente il valore del cookie della richiesta. Sono incluse le firme associate al seguente flag di richiesta nel set di regole di ModSecurity Core:
- REQUEST_COOKIES
Solo il valore dei cookie di richiesta specificati è escluso dall'ispezione. Il nome è ancora in fase di ispezione.
Parametri di ricerca della richiesta
Un elenco di nomi di parametri di query della richiesta il cui valore è escluso dall'ispezione durante la valutazione delle regole WAF preconfigurate.
L'esclusione è applicabile solo alle firme nel target che esaminerebbero inizialmente i parametri di richiesta. Sono incluse le firme associate ai seguenti flag di richiesta nel set di regole di ModSecurity Core:
- ARGS
- ARGS_GET
- REQUEST_URI
- REQUEST_URI_RAW
- REQUEST_LINE
Solo il valore dei parametri di ricerca specificati è escluso dall'ispezione, che può trovarsi nella stringa di query o nel corpo del POST. Il nome è ancora in fase di ispezione.
Poiché parametri di ricerca fanno parte dell'URI e della riga di richiesta, questi campi vengono riassemblati per l'ispezione dopo aver escluso i parametri di ricerca specificati. Tuttavia, per le firme che ispezionano l'intero corpo della richiesta (ad esempio le firme associate al flag di richiesta REQUEST_BODY
), l'esclusione per parametri di ricerca non viene applicata.
Ad esempio, se escludi un parametro di query denominato "args", potresti comunque visualizzare una corrispondenza in una firma che ispeziona l'intero corpo della richiesta se la richiesta ha un parametro "args" nel corpo del messaggio POST e il valore di "args" corrisponde.
URI di richiesta
Un elenco di URI dalla riga di richiesta che esclude i dati della stringa di query da essere esclusi dall'ispezione durante la valutazione delle regole WAF preconfigurate.
L'esclusione è applicabile solo alle firme nel target che esaminerebbero inizialmente l'URI della richiesta. Sono incluse le firme associate ai seguenti flag di richiesta nel set di regole di ModSecurity Core:
- REQUEST_URI
- REQUEST_URI_RAW
- REQUEST_LINE
- REQUEST_FILENAME
- REQUEST_BASENAME
Se escludi uno dei campi precedenti, il campo viene escluso completamente dall'ispezione e non viene eseguito alcun ricollegamento.
Valori dei campi
Devi specificare un valore di campo se utilizzi un operatore di campo diverso da
EQUALS_ANY
.
Per le intestazioni, i cookie e parametri di ricerca delle richieste, il insieme di caratteri consentito per i valori di campo include i seguenti caratteri:
!
,#
,$
,%
,&
,*
,+
,-
,.
,^
,_
,`
,|
,~
- Caratteri alfabetici da
A
aZ
(sia minuscoli che maiuscoli) - Caratteri numerici da
0
a9
Quando vengono applicate le esclusioni per questi campi della richiesta, i valori dei campi configurati vengono confrontati con i valori (senza distinzione tra maiuscole e minuscole, dopo la trasformazione) della richiesta. Non è necessario eseguire un'ulteriore codifica se vuoi escludere un carattere specifico che non è presente nel set di caratteri consentito.
Per gli URI di richiesta, il valore del campo deve essere specificato in un formato URI come segue:
- Uno schema è consentito, ma è limitato solo a http o https.
- È consentito un host e può essere un indirizzo IP.
- È consentita una porta.
- È consentito un percorso.
- Una query non è consentita.
- Non è consentito un frammento.
Quando vengono applicate le esclusioni per gli URI delle richieste, i valori dei campi configurati vengono confrontati con gli URI (senza distinzione tra maiuscole e minuscole, dopo la trasformazione) della riga di richiesta, esclusa la stringa di query. Gli URI della riga di richiesta possono essere relativi o assoluti. Tieni presente questo aspetto quando configuri le esclusioni per gli URI delle richieste.
Esempi
Il primo esempio aggiorna la regola nel criterio di sicurezza POLICY_1 in
PRIORITY per aggiungere una configurazione di esclusione per tutte le firme in
la regola WAF sqli-v33-stable
, in modo da escludere tutti i cookie di 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 nel criterio 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
xss-v33-stable
regola WAF, in modo da escludere dall'ispezione le intestazioni di 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 nel criterio di sicurezza POLICY_3
in PRIORITY per rimuovere tutte le esclusioni dei campi di 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_3 \ --target-rule-set "sqli-v33-stable" \ --target-rule-ids "owasp-crs-v030301-id942110-sqli,owasp-crs-v030301-id942120-sqli"
Applicare l'analisi sintattica ai valori delle intestazioni Content-Type
personalizzate
Quando Google Cloud Armor valuta il corpo del messaggio POST in base alle regole WAF preconfigurate, l'intestazioneContent-Type
indica il formato dei dati nel corpo della richiesta. Per impostazione predefinita, Google Cloud Armor tratta i contenuti del corpo del messaggio POST come una stringa, che è idonea per l'ispezione e la corrispondenza alle regole WAF preconfigurate. Tuttavia, puoi configurare un'analisi più precisa se le richieste in entrata hanno una codifica diversa. Google Cloud Armor supporta i seguenti tipi di codifica:
- JSON
- GraphQL
Per ulteriori informazioni, consulta Analisi del contenuto del corpo del messaggio POST.
Passaggi successivi
- Scopri di più sulla configurazione dei criteri 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 al linguaggio delle regole personalizzate.