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 su quale evento specifico attiva le regole predefinite, leggi l'articolo Utilizzare la registrazione delle richieste e attiva la registrazione dettagliata. Cloud Logging registra un livello più elevato di dettagli nei log che puoi utilizzare per analizzare e eseguire il debug di criteri e regole.
Il traffico è consentito nonostante una regola di rifiuto configurata nel criterio di sicurezza di Google Cloud Armor
Per risolvere il problema, segui questi passaggi:
Assicurati che il criterio di sicurezza di Google Cloud Armor sia associato a un servizio di backend di destinazione. Ad esempio, il seguente comando descrive tutti i dati associati al servizio di backend
BACKEND
. I risultati retitrati devono includere il nome del criterio di sicurezza Google Cloud Armor associato a questo servizio di backend.gcloud compute backend-services describe BACKEND
Esamina i log HTTP(S) per determinare quali criteri e regole sono stati abbinati al tuo traffico, nonché l'azione associata. Per visualizzare i log, utilizza Cloud Logging.
Di seguito è riportato un log di esempio di una richiesta consentita con i campi di interesse evidenziati. Controlla 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 associato 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'
Esamina la gerarchia delle regole per assicurarti che venga applicata la regola corretta. È possibile che una regola con priorità più elevata 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 come una regola Consenti con priorità superiore (priorità 100) corrisponda al traffico proveniente dall'indirizzo IP 1.2.3.4, impedendo alla regola di blocco con priorità inferiore (priorità 200) di attivarsi 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 di XSS e SQLi in modalità di anteprima e poi controllare il log per verificare la presenza di 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, disattivala 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, disattiva 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 i campi della richiesta HTTP, ad esempio
url
ecookie
. Ad esempio,requestUrl
viene confrontato 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 di 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 e disattiva la modalità di anteprima per implementare la regola.
I client con firme negate non vengono bloccati o rifiutati
Se utilizzi Google Cloud Armor con Cloud CDN, i criteri di sicurezza vengono applicati solo alle richieste di contenuti dinamici, ai fallimenti della cache o ad altre richieste destinate al server di origine CDN. I successi della cache vengono gestiti anche se il criterio di sicurezza di Google Cloud Armor applicato a valle impedirebbe alla richiesta di raggiungere il server di origine CDN.
Attenua il rischio per il corpo POST che supera gli 8 KB quando utilizzi le regole WAF preconfigurate
Quando una regola WAF preconfigurata viene valutata in un criterio di sicurezza di Google Cloud Armor, vengono controllati fino a 8 KB del corpo del messaggio POST per verificare la corrispondenza delle firme con le regole WAF. Questo approccio offre protezione e ispezione a 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 ispezionato raggiunga i tuoi backend. Crea una regola per negare il traffico che supera le dimensioni del corpo del messaggio POST di 8 KB (8192 byte). 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 con nome.
Indirizzi IP all'interno di un elenco di indirizzi IP denominato
Gli indirizzi IP negli elenchi corrispondono sempre a quelli dei siti web dei fornitori elencati nella guida sugli elenchi di indirizzi IP denominati di Google Cloud Armor. In caso di domande sugli elenchi, contatta il team di assistenza di Cloud.
Gli indirizzi IP all'interno di un elenco di indirizzi IP denominati non sono aggiornati in Google Cloud Armor
Google Cloud Armor sincronizza i propri elenchi con i fornitori di elenchi di indirizzi IP quotidianamente. È possibile che i dati siano obsoleti e che presentino un ritardo di alcune ore o un giorno rispetto ai dati di un fornitore. Tuttavia, se ritieni che i dati non aggiornati siano in ritardo più del previsto, ad esempio più di una settimana, contatta il team di assistenza di Cloud.
Difficoltà a creare un criterio di sicurezza che fa riferimento a un elenco di indirizzi IP denominati
Puoi provare a creare un criterio di sicurezza che faccia riferimento a un elenco di indirizzi IP denominati, utilizzando un comando come questo:
gcloud compute security-policies rules create 750 \ --security-policy my \ --expression "evaluatePreconfiguredExpr('sourceiplist-example')" \ --action "allow"
Se il comando non va a buon fine, viene visualizzato un errore 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 fornitore in questione sia supportato e che il nome dell'elenco di indirizzi IP sia indicato correttamente. Puoi verificarlo utilizzando il seguente
gcloud
comando per elencare gli insiemi di espressioni preconfigurati correnti:
gcloud compute security-policies list-preconfigured-expression-sets
Il traffico viene bloccato nonostante una regola preconfigurata per una lista consentita di indirizzi IP denominati
Potresti scoprire che il traffico è bloccato da un indirizzo IP che si trova in un elenco di indirizzi IP denominati:
Assicurati che il traffico provenga da un indirizzo IP presente in una lista consentita di indirizzi IP denominati.
Controlla se esistono altre regole di sicurezza con una priorità più elevata che possono bloccare il traffico. Se il problema persiste, contatta il team di assistenza Cloud.
Assicurati che il criterio di sicurezza sia associato al servizio di backend corretto:
gcloud compute backend-services describe BACKEND_SERVICE
Controlla le regole presenti 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 rifiuto predefinita, una regola di autorizzazione per gli indirizzi IP di Fastly e una regola di rifiuto per un referrer contenente
altostrat
. Sono elencate anche le rispettive priorità.Esamina i log per determinare quale regola corrisponde al tuo traffico e all'azione associata. Per informazioni sulla registrazione, consulta Utilizzare 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, la richiesta corrisponde a una regola di rifiuto con una priorità più elevata pari a 50. Se confrontiamo questo valore con quanto indicato nel criterio di sicurezza, la regola corrisponde alla regola di rifiuto per un referrer contenentealtostrat
. Poiché la richiesta ha un referer dihttp://www.altostrat.com/
, l'applicazione delle regole 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
Attiva 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 l'invio di un risultato.
Per domande sul volume di traffico verso i tuoi backend, controlla le statistiche sulle richieste nelle dashboard di Cloud Monitoring in Criteri di sicurezza di rete.
I risultati sono troppo rumorosi
Per ricevere assistenza in merito a questo problema, contatta il team di assistenza Cloud.
Problemi con Cloud Armor Adaptive Protection
Segui queste istruzioni per risolvere i problemi relativi ad Adaptive Protection.
Adaptive Protection è abilitata per un criterio di sicurezza, ma non sono presenti log in Cloud Logging
I log di Adaptive Protection vengono generati separatamente dai log delle richieste di Google Cloud Armor e vengono visualizzati in una risorsa diversa 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, è necessario un periodo di addestramento di almeno un'ora prima che Adaptive Protection inizi a generare avvisi per attacchi sospetti. Durante il periodo di addestramento, Adaptive Protection apprende dal traffico delle richieste in entrata e sviluppa linee di base distinte per ogni servizio di backend protetto dal criterio di sicurezza. Adaptive Protection è quindi in grado di identificare attività sospette.
Se attivi Adaptive Protection per una policy di sicurezza e non rilevi avvisi dopo un periodo di addestramento di un'ora, significa che non sono presenti attività che possono essere identificate come sfruttamento potenzialmente dannoso di nessuno dei servizi di backend associati a quella policy di sicurezza.
Se il potenziale attacco o il traffico anomalo persiste per periodi di tempo più lunghi, superando diverse ore, Adaptive Protection inizia a considerare questo comportamento come comportamento di riferimento e non continua ad avvisare su pattern di traffico simili. Una volta che il potenziale attacco si attenua e i pattern di traffico tornano alla base di riferimento originale, perché l'attacco è terminato o lo hai bloccato con le regole di Google Cloud Armor appropriate, Adaptive Protection avvisa sui comportamenti futuri del traffico considerati deviazioni dalla base di riferimento.
Adaptive Protection analizza il traffico che altrimenti verrebbe consentito tramite un criterio di sicurezza di Google Cloud Armor. Se imposti la regola predefinita per negare l'accesso con una lista consentita limitata del traffico, Adaptive Protection rileva solo le attività dannose sul traffico che supera la valutazione rispetto alla lista consentita.
Sono presenti troppi avvisi o troppi log in Cloud Logging da Adaptive Protection
Un avviso Adaptive Protection fornisce un punteggio di attendibilità, che indica con quale intensità 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 per visualizzare solo (o inoltrare a valle) gli avvisi con un punteggio di attendibilità superiore a una determinata soglia.
La Protezione adattiva fornisce un meccanismo per segnalare gli avvisi come falsi positivi, descritto nella sezione Monitoraggio, feedback e segnalazione di errori relativi agli eventi. Tieni presente che i report sui falsi positivi potrebbero non comportare modifiche immediate ai contenuti per cui Adaptive Protection genera avvisi. Nel tempo, i modelli di Adaptive Protection imparano 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, è possibile 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 distinto senza che Adaptive Protection sia abilitato e associare questi servizi di backend al nuovo criterio di sicurezza.
Un determinato incidente segnalato da Adaptive Protection è considerato un falso positivo o non è pertinente
La Protezione adattiva fornisce un meccanismo per segnalare gli avvisi di falsi positivi. Segui la procedura descritta nella sezione Monitoraggio, feedback ed errori relativi agli eventi di generazione di report. Tieni presente che i report di falsi positivi potrebbero non comportare modifiche immediate agli elementi per i quali Adaptive Protection genera avvisi. Nel tempo, i modelli di Adaptive Protection scoprono che questi pattern di traffico sono normali e accettabili e Adaptive Protection smette di inviare avvisi su questi pattern.
Come faccio a sapere che i miei criteri di sicurezza perimetrale vengono applicati?
Puoi controllare le azioni intraprese sui criteri di sicurezza dell'edge controllando le dashboard di monitoraggio, le metriche di monitoraggio o la registrazione per richiesta.
Dashboard di Monitoring
Cloud Monitoring è disponibile nella pagina Criteri di sicurezza della rete in Monitoraggio. Puoi utilizzare la suddivisione 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 di un determinato servizio di backend. Per informazioni dettagliate sulla dashboard 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 rifiutate sono disponibili per i criteri di sicurezza di Edge. Per ulteriori informazioni, consulta Metriche di monitoraggio per i criteri di sicurezza.
Logging per richiesta
La decisione relativa al criterio di sicurezza dell'edge viene registrata nei log delle richieste di bilanciamento del carico
in enforcedEdgeSecurityPolicy
. Si tratta di un valore distinto da enforcedSecurityPolicy
, che acquisisce la decisione relativa ai criteri di sicurezza di backend.
Gestione di bot
Questa sezione contiene informazioni sulla risoluzione dei problemi relativi alla gestione dei bot.
Gli utenti non sono esenti come previsto
Potresti aver configurato regole dei criteri 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 la risoluzione dei problemi, segui i passaggi riportati di seguito.
Innanzitutto, controlla i log per richiesta 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 per l'esenzione di un utente sono necessarie almeno due richieste. La richiesta iniziale non contiene un cookie di esenzione, mentre le richieste successive sono associate a 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 è stata esentata dal reindirizzamento per test reCAPTCHA. - Se nei campi precedenti vengono visualizzati valori diversi, è stata trovata una corrispondenza con una regola con un'azione diversa. In questo caso, è previsto che l'utente non venga reindirizzato o esentato.
In secondo luogo, esistono diversi requisiti da parte dell'utente per essere esentato dal reindirizzamento per la test reCAPTCHA.
- L'utente deve utilizzare un browser.
- Il browser deve attivare JavaScript per consentire il caricamento corretto della pagina di reindirizzamento con JavaScript di reCAPTCHA incorporato.
- Il browser deve attivare i cookie per consentire l'impostazione e l'aggancio automatico del cookie di esenzione.
- L'utente deve superare test reCAPTCHA, ad esempio deve risolvere le eventuali verifiche popup.
Tieni presente che gli utenti che non possono soddisfare nessuno dei requisiti sopra indicati non riceveranno l'esenzione, anche se viene trovata una corrispondenza con una regola con l'azione di reindirizzamento per la test reCAPTCHA.
In terzo luogo, test reCAPTCHA viene eseguita solo quando viene visualizzata la pagina di reindirizzamento che incorpora il codice JavaScript di reCAPTCHA. Per questo motivo, il reindirizzamento per test reCAPTCHA è applicabile solo alle richieste che prevedono una risposta che genera il rendering di una pagina completa. Altre richieste, come il caricamento di asset all'interno di una pagina o richieste provenienti da uno script incorporato che non prevedono il rendering della risposta, non dovrebbero ricevere 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 che tu abbia una pagina web contenente elementi incorporati come immagini, link ad altre pagine web e script. Non vuoi applicare l'azione di reindirizzamento per la test reCAPTCHA ai percorsi URL che ospitano immagini o a cui si suppone che venga eseguito l'accesso da script in cui non è previsto il rendering di una pagina completa. In alternativa, puoi applicare l'azione di reindirizzamento per la test reCAPTCHA per i percorsi 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 se è impostato un cookie di esenzione e se è allegato nelle richieste successive per lo stesso sito. Per ulteriore assistenza, puoi contattare il team dell'assistenza Cloud.
Problemi con la limitazione di frequenza
Il traffico non viene limitato come previsto
Potresti scoprire che un indirizzo IP client invia livelli elevati di traffico a un'applicazione a una velocità che supera la soglia impostata, ma il traffico non viene limitato come previsto. Per esaminare il problema, segui questi passaggi.
Innanzitutto, verifica se una regola con priorità più alta consente il traffico da quell'indirizzo IP. Esamina i log per verificare se è stata attivata una regola ALLOW
per l'indirizzo IP. Può trattarsi di una regola ALLOW
da sola o di un'altra regola THROTTLE
o
RATE_BASED_BAN
.
Se trovi una regola con priorità più alta, esegui una delle seguenti operazioni:
- Modifica le priorità per assicurarti che la regola di limitazione della frequenza abbia una priorità più elevata, assegnandole un valore numerico inferiore.
- Escludi l'indirizzo IP dall'espressione corrispondente nella regola con priorità più elevata.
Il problema potrebbe anche essere dovuto a una soglia impostata in modo errato. In questo caso, le richieste vengono associate con precisione, ma viene attivata l'azione di conformità. Esamina i log per verificare che sia così, quindi riduci la soglia nella regola.
Infine, l'indirizzo IP potrebbe non corrispondere alla regola di limitazione o di blocco basato sulla frequenza. Per risolvere il problema, controlla se è presente un errore nella condizione di corrispondenza, quindi modifica la condizione di corrispondenza della regola impostandola sul valore corretto.