Raccogliere i log WAF di Cloudflare
Questo parser estrae i campi dai log JSON del firewall per applicazioni web (WAF) di Cloudflare, li trasforma e li mappa al modello Unified Data Model (UDM). Gestisce varie azioni Cloudflare, arricchendo i dati con metadati e informazioni di rete prima di strutturare l'output nel formato UDM.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps.
- Accesso privilegiato a Google Cloud.
- Piano Cloudflare Enterprise.
- Accesso con privilegi a Cloudflare.
Crea un Google Cloud bucket di archiviazione
- Accedi alla Google Cloud console.
Vai alla pagina Bucket Cloud Storage.
Fai clic su Crea.
Configura il bucket:
- Nome: inserisci un nome univoco che soddisfi i requisiti del nome del bucket (ad esempio, cloudflare-waf).
- Scegli dove archiviare i tuoi dati: seleziona una località.
- Scegli una classe di archiviazione per i tuoi dati: seleziona una classe di archiviazione predefinita per il bucket oppure seleziona Autoclass per la gestione automatica della classe di archiviazione.
- Scegli come controllare l'accesso agli oggetti: seleziona no per applicare la prevenzione dell'accesso pubblico e seleziona un modello di controllo dell'accesso per gli oggetti del bucket.
- Classe di archiviazione: scegli in base alle tue esigenze (ad esempio, Standard).
Fai clic su Crea.
Concedi le autorizzazioni del bucket all'utente IAM di Cloudflare
- In Google Cloud, vai a Storage > Browser > Bucket > Autorizzazioni.
- Aggiungi l'account logpush@cloudflare-data.iam.gserviceaccount.com con l'autorizzazione Amministratore oggetti Storage.
Crea un job Logpush per i log WAF utilizzando la UI di Cloudflare
- Accedi a Cloudflare.
- Vai ad Analytics e log > Logpush.
- Seleziona Crea un job Logpush.
- In Seleziona una destinazione, scegli Google Cloud Storage.
- Inserisci i seguenti dettagli della destinazione:
- Bucket: Google Cloud Nome bucket di archiviazione
- Percorso: posizione del bucket all'interno del contenitore di archiviazione
- Seleziona Organizza i log in sottocartelle giornaliere.
- Fai clic su Continua.
- Seleziona il set di dati Sicurezza (WAF) da inviare allo spazio di archiviazione.
- Configura il job logpush:
- Inserisci il Nome del job.
- Nella sezione Se i log corrispondono, puoi selezionare gli eventi da includere e/o rimuovere dai log. Per saperne di più, consulta la sezione Filtri. Non tutti i set di dati hanno questa opzione disponibile.
- Nei campi Invia quanto segue, puoi scegliere di inviare tutti i log alla destinazione di archiviazione o selezionare in modo selettivo i log che vuoi inviare.
- Fai clic su Invia.
Configurare i feed
Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:
- Impostazioni SIEM > Feed
- Hub dei contenuti > Pacchetti di contenuti
Configura i feed da Impostazioni SIEM > Feed
Per configurare un feed:
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio Cloudflare WAF Logs).
- Seleziona Google Cloud Storage come Tipo di origine.
- Seleziona Cloudflare WAF come Tipo di log.
- Fai clic su Ottieni account di servizio.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
- URI GCS: l'URL Cloud Storage.
- L'URI è un: seleziona Directory che include sottodirectory.
- Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
Fai clic su Avanti.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Configurare i feed dall'hub dei contenuti
Specifica i valori per i seguenti campi:
- URI GCS: l'URL Cloud Storage.
- L'URI è un: seleziona Directory che include sottodirectory.
- Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
Opzioni avanzate
- Nome feed: un valore precompilato che identifica il feed.
- Tipo di origine: metodo utilizzato per raccogliere i log in Google SecOps.
- Spazio dei nomi dell'asset: lo spazio dei nomi associato al feed.
- Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
Action |
security_result.action_details |
Il valore di Action del log non elaborato viene assegnato direttamente a questo campo UDM. |
Action |
security_result.action |
Il valore di questo campo viene ricavato dal campo Action nel log non elaborato. Se Action è "allow", il campo UDM è impostato su ALLOW . Se Action è "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved" o "managedchallengeinteractivesolved", il campo UDM è impostato su ALLOW_WITH_MODIFICATION . Se Action è "drop", "block" o "connectionclose", il campo UDM è impostato su BLOCK . Se Action è "challengefailed" o "jschallengefailed", il campo UDM è impostato su FAIL . In caso contrario, è impostato su UNKNOWN_ACTION . |
ClientASN |
network.asn |
Il valore di ClientASN del log non elaborato viene assegnato direttamente a questo campo UDM dopo la conversione in una stringa. |
ClientASNDescription |
additional.fields.key |
La chiave è impostata staticamente su "ClientASNDescription". |
ClientASNDescription |
additional.fields.value.string_value |
Il valore di ClientASNDescription del log non elaborato viene assegnato direttamente a questo campo UDM. |
ClientCountry |
principal.location.country_or_region |
Il valore di ClientCountry del log non elaborato viene assegnato direttamente a questo campo UDM. |
ClientIP |
principal.ip |
Il valore di ClientIP del log non elaborato viene assegnato direttamente a questo campo UDM. |
ClientRefererHost |
intermediary.hostname |
Il valore di ClientRefererHost del log non elaborato viene assegnato direttamente a questo campo UDM. |
ClientRefererPath |
network.http.referral_url |
Il valore di ClientRefererPath del log non elaborato viene assegnato direttamente a questo campo UDM. |
ClientRequestHost |
target.hostname |
Il valore di ClientRequestHost del log non elaborato viene assegnato direttamente a questo campo UDM. |
ClientRequestMethod |
network.http.method |
Il valore di ClientRequestMethod del log non elaborato viene assegnato direttamente a questo campo UDM. |
ClientRequestPath |
target.file.full_path |
Il valore di ClientRequestPath del log non elaborato viene assegnato direttamente a questo campo UDM. |
ClientRequestProtocol |
network.application_protocol |
La parte del protocollo di ClientRequestProtocol (ad es. "HTTP" da "HTTP/1.1") viene estratto utilizzando grok, convertito in maiuscolo e assegnato a questo campo UDM. |
ClientRequestUserAgent |
network.http.user_agent |
Il valore di ClientRequestUserAgent del log non elaborato viene assegnato direttamente a questo campo UDM. |
Datetime |
metadata.event_timestamp |
Il valore di Datetime del log non elaborato viene analizzato come timestamp RFC 3339 e assegnato a questo campo UDM. |
EdgeColoCode |
additional.fields.key |
La chiave è impostata staticamente su "EdgeColoCode". |
EdgeColoCode |
additional.fields.value.string_value |
Il valore di EdgeColoCode del log non elaborato viene assegnato direttamente a questo campo UDM. |
EdgeResponseStatus |
network.http.response_code |
Il valore di EdgeResponseStatus del log non elaborato viene assegnato direttamente a questo campo UDM e convertito in un numero intero. |
Kind |
metadata.product_event_type |
Il valore di Kind del log non elaborato viene assegnato direttamente a questo campo UDM. |
Metadata.filter |
target.resource.attribute.labels.value |
Il valore di Metadata.filter del log non elaborato viene assegnato al campo value di un'etichetta all'interno di target.resource.attribute.labels . Il key per questa etichetta è impostato staticamente su "Filtro metadati". |
Metadata.type |
target.resource.attribute.labels.value |
Il valore di Metadata.type del log non elaborato viene assegnato al campo value di un'etichetta all'interno di target.resource.attribute.labels . L'elemento key per questa etichetta è impostato staticamente su "Tipo di metadati". Il valore di questo campo viene derivato in base alla presenza e ai valori di ClientIP , ClientRequestHost e app_protocol . Visualizza il codice del parser per la logica specifica. Impostato in modo statico su "Cloudflare". Impostato in modo statico su "Cloudflare log Aggregator". Impostato in modo statico su "CLOUDFLARE_WAF". |
RayID |
metadata.product_log_id |
Il valore di RayID del log non elaborato viene assegnato direttamente a questo campo UDM. |
RuleID |
security_result.rule_id |
Il valore di RuleID del log non elaborato viene assegnato direttamente a questo campo UDM. |
Source |
security_result.rule_name |
Il valore di Source del log non elaborato viene assegnato direttamente a questo campo UDM. |
timestamp |
metadata.event_timestamp , events.timestamp |
Il valore di timestamp del log non elaborato viene assegnato direttamente a questi campi UDM. |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.