Utilizza queste istruzioni per risolvere i problemi relativi ai criteri di sicurezza di Google Cloud Armor.
Problemi generici
Debug dei criteri di sicurezza
Se hai bisogno di ulteriori informazioni sul tipo di evento specifico che attiva le regole preconfigurate, consulta Utilizzo del logging delle richieste e poi abilita il logging dettagliato. Cloud Logging registra un livello di dettaglio superiore nei log che puoi utilizzare per analizzare ed eseguire il debug di criteri e regole.
Il traffico è consentito nonostante una regola di negazione configurata nel criterio di sicurezza di Google Cloud Armor
Per risolvere il problema:
Assicurati che il criterio di sicurezza di Google Cloud Armor sia collegato a un servizio di backend di destinazione. Ad esempio, il seguente comando descrive tutti i dati associati al servizio di backend
BACKEND
. I risultati restituiti dovrebbero includere il nome del criterio di sicurezza di Google Cloud Armor associato a questo servizio di backend.gcloud compute backend-services describe BACKEND
Esamina i log HTTP(S) per determinare quale criterio e regola sono stati abbinati per il tuo traffico insieme all'azione associata. Per visualizzare i log, utilizza Cloud Logging.
Di seguito è riportato un log di esempio di una richiesta consentita con i campi interessanti evidenziati. Verifica i seguenti campi e assicurati che corrispondano alla regola che hai configurato per negare il traffico:
configuredAction
deve corrispondere all'azione configurata nella regola.name
deve corrispondere al nome del criterio di sicurezza di Google Cloud Armor collegato a questo servizio di backend.outcome
deve corrispondere aconfiguredAction
.priority
deve corrispondere al numero di priorità della regola.
httpRequest: remoteIp: 104.133.0.95 requestMethod: GET requestSize: '801' requestUrl: http://74.125.67.38/ responseSize: '246' serverIp: 10.132.0.4 status: 200 userAgent: curl/7.35.0 insertId: ajvis5ev4i60 internalId: projectNumber: '895280006100' jsonPayload: '@type': type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry enforcedSecurityPolicy: configuredAction: ACCEPT name: mydev-policy-log-test1 outcome: ACCEPT priority: 2147483647 statusDetails: response_sent_by_backend logName: projects/mydev-staging/logs/requests resource: labels: backend_service_name: BACKEND_SERVICE_NAME forwarding_rule_name: FORWARDING_RULE_NAME project_id: PROJECT_ID target_proxy_name: TARGET_HTTP_PROXY_NAME url_map_name: URL_MAP_NAME zone: global type: http_load_balancer severity: INFO timestamp: '2017-04-18T18:57:05.845960288Z'
Rivedi la gerarchia delle regole per assicurarti che venga soddisfatta la regola corretta. È possibile che una regola di priorità più alta con un'azione di autorizzazione corrisponda al tuo traffico. Utilizza il comando
describe
susecurity-policies
in Google Cloud CLI per visualizzare i contenuti del criterio di sicurezza di Google Cloud Armor.Ad esempio, l'esempio seguente mostra in che modo una regola di autorizzazione con priorità più alta (con priorità 100) corrisponde al traffico proveniente dall'indirizzo IP 1.2.3.4, impedendo alla regola di negazione con priorità inferiore (con priorità 200) di attivare e bloccare il traffico.
gcloud compute security-policies describe POLICY_NAME
Output:
creationTimestamp: '2017-04-18T14:47:58.045-07:00 description: '' fingerprint: Yu5spBjdoC0= id: '2560355463394441057' kind: compute#securityPolicy name: POLICY_NAME rules: -action: allow description: allow high priority rule kind: compute#securityPolicyRule match: srcIpRanges: -'1.2.3.4/32' preview: false priority: 100 -action: deny description: deny lower priority rule kind: compute#securityPolicyRule match: srcIpRanges: -'1.2.3.0/24 preview: false priority: 200 -action: deny description: default rule kind: compute#securityPolicyRule match: srcIpRanges: -'*' preview: false priority: 2147483647 selfLink: http://www.googleapis.com/compute/v1/projects/bigclustertestdev0-devconsole/global/securityPolicies/sp
La regola preconfigurata restituisce falsi positivi
Il rilevamento di XSS e SQLi si basa sulla corrispondenza delle firme statiche nelle intestazioni delle richieste HTTP e in altri parametri L7. Questi pattern di espressioni regolari sono soggetti a falsi positivi. Puoi utilizzare la regola preconfigurata per il rilevamento XSS e SQLi in modalità di anteprima e poi verificare se nel log sono presenti falsi positivi.
Se trovi un falso positivo, puoi confrontare i contenuti del traffico con le regole CRS di ModSecurity.
Se la regola non è valida o non è pertinente, disabilitala utilizzando l'espressione evaluatePreconfiguredExpr
e specifica l'ID della regola nell'argomento exclude ID list
.
Dopo aver esaminato i log e rimosso tutti i falsi positivi, disabilita la modalità di anteprima.
Per aggiungere una regola preconfigurata in modalità di anteprima:
Crea un criterio di sicurezza con l'espressione preconfigurata impostata in modalità di anteprima:
gcloud compute security-policies rules create 1000 --security-policy POLICY_NAME --expression "evaluatePreconfiguredExpr('xss-stable')" --action deny-403 --preview
Esamina i log HTTP(S) per verificare se i campi di richiesta HTTP, come
url
ecookie
. Ad esempio,requestUrl
confronta positivamente con l'ID regola CRS di ModSecurity 941180:httpRequest: remoteIp: 104.133.0.95 requestMethod: GET requestSize: '801' requestUrl: http://74.125.67.38/foo?document.cookie=1010" responseSize: '246' serverIp: 10.132.0.4 status: 200 userAgent: curl/7.35.0 insertId: ajvis5ev4i60 internalId: projectNumber: '895280006100' jsonPayload: '@type': type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry enforcedSecurityPolicy: configuredAction: ACCEPT name: POLICY_NAME outcome: ACCEPT priority: 2147483647 preconfiguredExprIds: [ 'owasp-crs-v030001-id941180-xss' ] statusDetails: response_sent_by_backend logName: projects/mydev-staging/logs/requests resource: labels: backend_service_name: BACKEND_SERVICE forwarding_rule_name: mydev-forwarding-rule project_id: mydev-staging target_proxy_name: mydev-target-http-proxy url_map_name: mydev-url-map zone: global type: http_load_balancer severity: INFO timestamp: '2017-04-18T18:57:05.845960288Z'
Escludi l'ID regola CRS ModSecurity 941180 aggiornando la regola nel criterio di sicurezza di Google Cloud Armor:
gcloud compute security-policies rules update 1000 \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredExpr('xss-stable', ['owasp-crs-v030001-id941180-xss'])" \ --action deny-403 \ --preview
Esamina di nuovo i log, quindi disattiva la modalità di anteprima per implementare la regola.
I client con firme negate non vengono bloccati né rifiutati
Se utilizzi Google Cloud Armor con Cloud CDN, i criteri di sicurezza vengono applicati solo per le richieste di contenuti dinamici, i fallimenti della cache o altre richieste destinate al server di origine CDN. Gli hit della cache vengono gestiti anche se il criterio di sicurezza downstream di Google Cloud Armor impedirebbe alla richiesta di raggiungere il server di origine CDN.
Minimizzare il rischio per il corpo POST superiore a 8 kB quando si utilizzano regole WAF preconfigurate
Quando una regola WAF preconfigurata viene valutata in un criterio di sicurezza di Google Cloud Armor, vengono ispezionati fino a 8 kB del corpo del POST per verificare la presenza di corrispondenze della firma in base alle regole WAF. Questo approccio offre un'ispezione e protezione di livello 7 a bassa latenza, mantenendo al contempo la disponibilità per gli altri clienti Google.
Puoi ridurre il rischio derivante da richieste POST più grandi creando una regola nei criteri di sicurezza per assicurarti che nessun contenuto non controllato raggiunga i tuoi backend. Crea una regola per negare il traffico superiore a 8 kB (8192 byte) nelle dimensioni del corpo POST. Il seguente esempio di codice mostra come creare questa regola:
gcloud compute security-policies rules create 10 \ --security-policy my-policy \ --expression "int(request.headers['content-length']) > 8192" \ --action deny-403 \ --description "Block requests great than 8KB"
Problemi con gli elenchi di indirizzi IP denominati
Questa sezione fornisce informazioni per risolvere i problemi relativi agli elenchi di indirizzi IP denominati.
Indirizzi IP all'interno di un elenco di indirizzi IP denominati
Gli indirizzi IP negli elenchi corrispondono sempre agli indirizzi IP nei siti web dei provider elencati nella guida agli elenchi di indirizzi IP denominati di Google Cloud Armor. In caso di domande sugli elenchi, contatta il team dell'assistenza Cloud.
Gli indirizzi IP all'interno di un elenco di indirizzi IP denominati sono inattivi in Google Cloud Armor
Google Cloud Armor sincronizza i suoi elenchi con i provider degli elenchi di indirizzi IP ogni giorno. È possibile che ci siano dati inattivi con un ritardo di alcune ore o un giorno rispetto ai dati di un provider. Tuttavia, se ritieni che i dati inattivi siano più del previsto, ad esempio più di una settimana, contatta il team di assistenza di Cloud.
Difficoltà nella creazione di un criterio di sicurezza che fa riferimento a un elenco di indirizzi IP denominato
Puoi provare a creare un criterio di sicurezza che faccia riferimento a un elenco di indirizzi IP denominato utilizzando un comando come il seguente:
gcloud compute security-policies rules create 750 \ --security-policy my \ --expression "evaluatePreconfiguredExpr('sourceiplist-example')" \ --action "allow"
Se il comando non riesce, l'errore visualizzato è simile al seguente:
ERROR: (gcloud.compute.security-policies.rules.create) Could not fetch resource: - Invalid value for field 'resource.match.expr': '{ "expression": "evaluatePreconfiguredExpr(\u0027sourceiplist-example\u0027)"}'. Error parsing Google Cloud Armor rule matcher expression: sourceiplist-example is not a valid preconfigured expression set.
Assicurati che il provider specifico sia supportato e che il nome dell'elenco di indirizzi IP sia specificato correttamente. Puoi verificarlo utilizzando il seguente comando gcloud
per elencare i set di espressioni preconfigurati attuali:
gcloud compute security-policies list-preconfigured-expression-sets
Il traffico è bloccato nonostante una regola preconfigurata per una lista consentita di indirizzi IP denominata
Potresti notare che il traffico è bloccato da un indirizzo IP che si trova in un elenco di indirizzi IP denominato:
Assicurati che il traffico provenga da un indirizzo IP incluso in una lista consentita di indirizzi IP con nome.
Controlla se esistono altre regole di sicurezza con priorità più alta che possono bloccare il traffico. Se il problema persiste, contatta il team dell'assistenza di Google Cloud.
Assicurati che il criterio di sicurezza sia collegato al servizio di backend corretto:
gcloud compute backend-services describe BACKEND_SERVICE
Controlla le regole incluse nel criterio di sicurezza. Ad esempio:
gcloud compute security-policies describe POLICY_NAME
Il comando restituisce informazioni simili alle seguenti:
--- … name: POLICY_NAME rules: -action: allow description: allow fastly ip addresses kind: compute#securityPolicyRule match: expr: expression: evaluatePreconfiguredExpr('sourceiplist-fastly') preview: false priority: 100 -action: deny(403) description: Default rule, higher priority overrides it kind: compute#securityPolicyRule match: config: srcIpRanges: -'*' versionedExpr: SRC_IPS_V1 preview: false priority: 2147483647 -action: deny(404) description: deny altostrat referer kind: compute#securityPolicyRule match: expr: expression: request.headers['Referer'].contains('altostrat') preview: false priority: 50 …
Il criterio di sicurezza precedente contiene tre regole: una regola di negazione predefinita, una regola di autorizzazione per gli indirizzi IP di Fastly e una regola di negazione per un referrer che contiene
altostrat
. Sono elencate anche le rispettive priorità.Esamina i log per determinare quale regola corrisponde al tuo traffico e l'azione associata. Per informazioni sul logging, consulta Utilizzo di Esplora log.
Di seguito è riportato un esempio di log:
httpRequest: { referer: "http://www.altostrat.com/" remoteIp: "23.230.32.10" requestMethod: "HEAD" requestSize: "79" requestUrl: "http://www.example.com/" responseSize: "258" status: 404 userAgent: "Mozilla/5.0" } … jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" enforcedSecurityPolicy: { configuredAction: "DENY" name: "POLICY_NAME" outcome: "DENY" priority: 50 } statusDetails: "denied_by_security_policy" } …
Dal log precedente, la richiesta proviene da
23.230.32.10
, che è coperto dall'elenco di indirizzi IP pubblici di Fastly. Tuttavia, alla richiesta viene assegnata una regola di negazione con una priorità più alta, pari a 50. Confrontando questo valore con i contenuti del criterio di sicurezza, la regola corrisponde alla regola di negazione per un referrer che contienealtostrat
. Poiché la richiesta ha un referrer dihttp://www.altostrat.com/
, l'applicazione della regola di sicurezza funziona correttamente.
Problemi con i risultati di Security Command Center
Questa sezione contiene informazioni sui problemi relativi ai risultati di Security Command Center.
La scheda Google Cloud Armor non viene visualizzata in Security Command Center
Abilita i risultati di Google Cloud Armor nell'interfaccia di Security Command Center.
I risultati di Google Cloud Armor non vengono visualizzati in Security Command Center
Se i risultati di Google Cloud Armor non vengono visualizzati in Security Command Center, il traffico verso i servizi di backend potrebbe non soddisfare i criteri per generare un risultato.
In caso di domande sul volume di traffico verso i tuoi backend, controlla le statistiche delle richieste nelle dashboard di Cloud Monitoring in Criteri per la sicurezza della rete.
I risultati sono troppo rumorosi
Per ricevere aiuto in merito a questo problema, contatta il team dell'assistenza Cloud.
Problemi con Google Cloud Armor Adaptive Protection
Usa queste istruzioni per risolvere i problemi relativi a Adaptive Protection.
Adaptive Protection è abilitato per un criterio di sicurezza, ma non ci sono log in Cloud Logging
I log di Adaptive Protection vengono generati separatamente dai log delle richieste di Google Cloud Armor e vengono visualizzati in un'altra risorsa in Cloud Logging. I log e gli eventi di Adaptive Protection si trovano nella risorsa Network Security Policy in Cloud Logging. Dopo l'abilitazione di Adaptive Protection in un criterio di sicurezza, è previsto un periodo di addestramento di almeno un'ora prima che Adaptive Protection inizi a generare avvisi per gli attacchi sospetti. Durante il periodo di addestramento, Adaptive Protection apprende dal traffico delle richieste in entrata e sviluppa basi di riferimento distinte per ogni servizio di backend protetto da quel criterio di sicurezza. Adaptive Protection è in grado di individuare successivamente le attività sospette.
Se abiliti Adaptive Protection per un criterio di sicurezza e non ricevi avvisi dopo un periodo di addestramento di un'ora, significa che non esiste alcuna attività che possa essere identificata come targeting potenzialmente dannoso per i servizi di backend associati a quel criterio di sicurezza.
Se il potenziale attacco o traffico anomalo persiste per periodi di tempo più lunghi, superando diverse ore, Adaptive Protection inizia a considerare tale comportamento come comportamento di base e non continua ad avvisare su pattern di traffico simili. Una volta che il potenziale attacco è sceso e i modelli di traffico tornano alla base di riferimento originale, perché l'attacco è terminato o l'hai bloccato con le regole Google Cloud Armor appropriate, Adaptive Protection avvisa sui comportamenti futuri del traffico che sono considerati partenze dalla base di riferimento.
Adaptive Protection analizza il traffico altrimenti consentito tramite un criterio di sicurezza di Google Cloud Armor. Se imposti la regola predefinita per negare l'accesso con una lista consentita di traffico limitata, Adaptive Protection rileva solo le attività dannose sul traffico che supera la valutazione rispetto alla lista consentita.
Troppi avvisi o troppi log in Cloud Logging di Adaptive Protection
Un avviso di Adaptive Protection fornisce un punteggio di confidenza, che indica l'efficacia con cui i modelli di Adaptive Protection identificano l'attività rilevata come anomala e potenzialmente un attacco. Puoi filtrare in base alla voce specifica del log tramite Cloud Logging solo per visualizzare (o inoltrare al downstream) gli avvisi con un punteggio di confidenza superiore a una determinata soglia.
Adaptive Protection fornisce un meccanismo per segnalare gli avvisi come falsi positivi, descritto nella sezione Monitoraggio, feedback e segnalazione degli errori degli eventi. Tieni presente che i report con falsi positivi potrebbero non comportare modifiche immediate agli avvisi di Adaptive Protection. Nel tempo, i modelli di Adaptive Protection apprendono che questi pattern di traffico sono normali e accettabili e Adaptive Protection smette di inviare avvisi su questi pattern.
Se gli avvisi di Adaptive Protection sono troppo frequenti su un sottoinsieme di servizi di backend in un criterio di sicurezza, potrebbe suggerire che il traffico normale di questi servizi di backend presenti fluttuazioni significative che vengono costantemente identificate da Adaptive Protection come comportamenti anomali. Puoi creare un criterio di sicurezza separato senza che sia abilitato Adaptive Protection e associare questi servizi di backend al nuovo criterio di sicurezza.
Un particolare incidente segnalato da Adaptive Protection è considerato un falso positivo o non è pertinente.
Adaptive Protection fornisce un meccanismo per segnalare gli avvisi di falsi positivi. Segui la procedura descritta nella sezione Monitoraggio, feedback e segnalazione degli errori negli eventi. Tieni presente che i report con falsi positivi potrebbero non comportare modifiche immediate agli avvisi di Adaptive Protection. Nel tempo, i modelli di Adaptive Protection apprendono che questi pattern di traffico sono normali e accettabili e Adaptive Protection smette di inviare avvisi su questi pattern.
Come posso sapere che i miei criteri di sicurezza perimetrale vengono applicati?
Puoi controllare le azioni intraprese sui tuoi criteri di sicurezza perimetrali controllando le dashboard di monitoraggio, le metriche di monitoraggio o il logging per richiesta.
Dashboard di Monitoring
Cloud Monitoring è disponibile nella pagina Criteri di sicurezza della rete in Monitoring. Puoi utilizzare l'analisi per criterio di sicurezza nella pagina per misurare il numero di richieste consentite e rifiutate dal criterio di sicurezza perimetrale configurato. Puoi anche esaminare la suddivisione per servizio di backend per eseguire il debug. Per maggiori dettagli sulla dashboard di Cloud Monitoring, consulta Monitoraggio dei criteri di sicurezza di Google Cloud Armor.
Monitoraggio delle metriche
Le metriche non elaborate che misurano le richieste consentite e negate sono disponibili per i criteri di sicurezza perimetrale. Per ulteriori informazioni, consulta Monitoraggio delle metriche per i criteri di sicurezza.
Logging per richiesta
La decisione del criterio di sicurezza perimetrale viene registrata nei log delle richieste di bilanciamento del carico in enforcedEdgeSecurityPolicy
. Questo è separato da
enforcedSecurityPolicy
, che acquisisce la decisione sul criterio di sicurezza del backend.
Gestione di bot
Questa sezione contiene informazioni sulla risoluzione dei problemi relativi alla gestione dei bot.
Gli utenti non sono esentati come previsto
Potresti aver configurato regole del criterio di sicurezza con l'azione di reindirizzamento per la test reCAPTCHA e scoprire che alcuni utenti che ritieni legittimi non sono stati esentati come previsto. Per risolvere il problema, procedi nel seguente modo.
Innanzitutto, controlla i log delle singole richieste per verificare se esiste una regola del criterio di sicurezza con una priorità più alta che corrisponde al traffico e in cui l'azione è diversa. In particolare, cerca i campi configured_action
e outcome
.
Tieni presente che, affinché un utente sia esente, sono necessarie almeno due richieste. La richiesta iniziale viene fornita senza un cookie di esenzione e le richieste successive vengono fornite con un cookie di esenzione se l'utente supera la valutazione reCAPTCHA. Pertanto, sono previste almeno due voci di log.
- Se vedi
GOOGLE_RECAPTCHA
come azione configurata eREDIRECT
come risultato, la richiesta è stata reindirizzata per test reCAPTCHA; - Se vedi
GOOGLE_RECAPTCHA
come azione configurata eACCEPT
come risultato, la richiesta è esente dal reindirizzamento per test reCAPTCHA. - Se nei campi precedenti sono presenti valori diversi, è stata trovata una corrispondenza con una regola con un'azione diversa. In questo caso, si prevede che l'utente non venga reindirizzato o esente.
In secondo luogo, gli utenti devono soddisfare diversi requisiti per essere esentati dal reindirizzamento per la test reCAPTCHA.
- L'utente deve utilizzare un browser.
- Il browser deve attivare JavaScript per consentire il corretto caricamento della pagina di reindirizzamento con il codice JavaScript reCAPTCHA incorporato.
- Il browser deve abilitare i cookie per consentire l'impostazione e l'associazione automatica del cookie di esenzione.
- L'utente deve superare test reCAPTCHA; ad esempio, deve risolvere eventuali verifiche popup.
Gli utenti che non possono soddisfare uno dei requisiti di cui sopra non riceveranno l'esenzione, anche se viene trovata una regola con l'azione di reindirizzamento per la test reCAPTCHA.
Terzo, test reCAPTCHA viene eseguita solo quando viene visualizzata la pagina di reindirizzamento che incorpora il codice JavaScript reCAPTCHA. Per questo motivo, il reindirizzamento per test reCAPTCHA è applicabile solo alle richieste che prevedono una risposta che porti a un rendering a pagina intera. Non è previsto che altre richieste, come il caricamento di risorse all'interno di una pagina o quelle provenienti da uno script incorporato, che non prevedono la visualizzazione della risposta, non ricevano test reCAPTCHA. Di conseguenza, ti consigliamo di applicare questa azione con una condizione di corrispondenza per i percorsi degli URL che soddisfano questa condizione.
Ad esempio, supponiamo di avere una pagina web che contiene elementi incorporati come immagini, link ad altre pagine web e script. Non vuoi applicare l'azione di reindirizzamento per la test reCAPTCHA per i percorsi degli URL che ospitano immagini o che dovrebbero essere accessibili dagli script in cui non è previsto il rendering di una pagina intera. In alternativa, puoi applicare l'azione di reindirizzamento per la test reCAPTCHA per i percorsi degli URL che ospitano pagine web, come la pagina web principale o altre pagine web collegate.
Infine, se la pagina di reindirizzamento viene visualizzata correttamente, controlla nello Strumento per sviluppatori fornito dal browser per verificare se è stato impostato un cookie di esenzione e se è allegato nelle richieste successive per lo stesso sito. Per ulteriore assistenza, puoi contattare il team di assistenza Cloud.
Problemi con la limitazione di frequenza
Il traffico non è limitato come previsto
Potresti scoprire che un indirizzo IP client invia alti livelli di traffico a un'applicazione con una velocità superiore alla soglia impostata, ma il traffico non viene limitato come previsto. Segui questi passaggi per esaminare il problema.
In primo luogo, verifica se una regola di priorità più elevata consente il traffico proveniente da quell'indirizzo IP. Esamina i log per verificare se è stata attivata una regola ALLOW
per l'indirizzo IP. Potrebbe trattarsi di una regola ALLOW
da sola o in un'altra regola THROTTLE
o RATE_BASED_BAN
.
Se trovi una regola di priorità più alta, esegui una delle seguenti operazioni:
- Modifica le priorità per garantire che la regola di limitazione di frequenza abbia una priorità più alta, assegnandole un valore numerico inferiore.
- Escludi l'indirizzo IP dall'espressione corrispondente nella regola che ha una priorità maggiore.
Il problema potrebbe anche essere un'impostazione errata della soglia. In questo caso, le richieste vengono abbinate con precisione, ma viene attivata l'azione di conformità. Esamina i log per verificare che sia così, poi riduci la soglia nella regola.
Infine, l'indirizzo IP potrebbe non corrispondere alla regola di limitazione o di esclusione basata sulla frequenza. Per risolvere il problema, verifica la presenza di un errore nella condizione di corrispondenza, poi modifica la condizione di corrispondenza della regola impostandola sul valore corretto.