Raccogliere i log del WAF di Cloudflare

Supportato in:

Questo parser estrae i campi dai log JSON del firewall delle applicazioni web (WAF) di Cloudflare, li trasforma e li mappa all'Unified Data Model (UDM). Gestisce varie azioni di Cloudflare, arricchendo i dati con metadati e informazioni di rete prima di strutturare l'output nel formato UDM.

Prima di iniziare

  • Assicurati di avere un'istanza Google SecOps.
  • Assicurati di disporre dell'accesso con privilegi a Google Cloud.
  • Assicurati di avere un piano Cloudflare Enterprise.
  • Assicurati di disporre dell'accesso con privilegi a Cloudflare.

Crea un Google Cloud bucket di archiviazione

  1. Accedi alla Google Cloud console
  2. Vai alla pagina Bucket Cloud Storage.

    Vai a Bucket

  3. Fai clic su Crea.

  4. Configura il bucket:

    • Nome: inserisci un nome univoco che soddisfi i requisiti per i nomi dei 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 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).
  5. Fai clic su Crea.

Concedi le autorizzazioni del bucket all'utente IAM di Cloudflare

  1. In Google Cloud, vai a Spazio di archiviazione > Browser > Bucket > Autorizzazioni.
  2. Aggiungi l'account logpush@cloudflare-data.iam.gserviceaccount.com con l'autorizzazione Amministratore oggetti Storage.

Creare un job Logpush per i log WAF utilizzando l'interfaccia utente di Cloudflare

  1. Accedi a Cloudflare.
  2. Vai ad Analytics e log > Logpush.
  3. Seleziona Crea un job Logpush.
  4. In Seleziona una destinazione, scegli Google Cloud Archiviazione.
  5. Inserisci i seguenti dettagli della destinazione:
    • Bucket: Google Cloud nome del bucket di archiviazione
    • Percorso: posizione del bucket all'interno del contenitore di archiviazione
    • Seleziona Organizza i log in sottocartelle giornaliere.
  6. Fai clic su Continua.
  1. Seleziona il set di dati Sicurezza (WAF) da inviare allo spazio di archiviazione.
  2. Configura il job logpush:
    • Inserisci il nome del job.
    • In Se i log corrispondono, puoi selezionare gli eventi da includere e/o rimuovere dai log. Per ulteriori informazioni, consulta la sezione Filtri. Questa opzione non è disponibile per tutti i set di dati.
    • Nei campi Invia quanto segue, puoi scegliere di inviare tutti i log alla destinazione di archiviazione o scegliere in modo selettivo i log da inviare.
  3. Fai clic su Invia.

Configura un feed in Google SecOps per importare i log WAF di Cloudflare

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log WAF di Cloudflare).
  4. Seleziona Google Cloud Storage come Tipo di origine.
  5. Seleziona Cloudflare WAF come Tipo di log.
  6. Fai clic su Ottieni account di servizio.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    • URI GCS: l'URL Cloud Storage.
    • L'URI è una: seleziona Directory che include sottodirectory.
    • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
    • Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
  9. Fai clic su Avanti.

  10. Rivedi la configurazione del nuovo feed nella schermata Concludi e poi fai clic su Invia.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
Action security_result.action_details Il valore di Action dal log non elaborato viene assegnato direttamente a questo campo UDM.
Action security_result.action Il valore di questo campo è 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 viene impostato su FAIL. In caso contrario, viene impostato su UNKNOWN_ACTION.
ClientASN network.asn Il valore di ClientASN dal log non elaborato viene assegnato direttamente a questo campo UDM dopo la conversione in stringa.
ClientASNDescription additional.fields.key La chiave è impostata in modo statico su "ClientASNDescription".
ClientASNDescription additional.fields.value.string_value Il valore di ClientASNDescription dal log non elaborato viene assegnato direttamente a questo campo UDM.
ClientCountry principal.location.country_or_region Il valore di ClientCountry dal log non elaborato viene assegnato direttamente a questo campo UDM.
ClientIP principal.ip Il valore di ClientIP dal log non elaborato viene assegnato direttamente a questo campo UDM.
ClientRefererHost intermediary.hostname Il valore di ClientRefererHost dal log non elaborato viene assegnato direttamente a questo campo UDM.
ClientRefererPath network.http.referral_url Il valore di ClientRefererPath dal log non elaborato viene assegnato direttamente a questo campo UDM.
ClientRequestHost target.hostname Il valore di ClientRequestHost dal log non elaborato viene assegnato direttamente a questo campo UDM.
ClientRequestMethod network.http.method Il valore di ClientRequestMethod dal log non elaborato viene assegnato direttamente a questo campo UDM.
ClientRequestPath target.file.full_path Il valore di ClientRequestPath dal log non elaborato viene assegnato direttamente a questo campo UDM.
ClientRequestProtocol network.application_protocol La parte di protocollo di ClientRequestProtocol (ad es. "HTTP" da "HTTP/1.1") viene estratto utilizzando grok, convertito in lettere maiuscole e assegnato a questo campo UDM.
ClientRequestUserAgent network.http.user_agent Il valore di ClientRequestUserAgent dal log non elaborato viene assegnato direttamente a questo campo UDM.
Datetime metadata.event_timestamp Il valore di Datetime dal log non elaborato viene analizzato come timestamp RFC 3339 e assegnato a questo campo UDM.
EdgeColoCode additional.fields.key La chiave è impostata in modo statico su "EdgeColoCode".
EdgeColoCode additional.fields.value.string_value Il valore di EdgeColoCode dal log non elaborato viene assegnato direttamente a questo campo UDM.
EdgeResponseStatus network.http.response_code Il valore 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 dal log non elaborato viene assegnato direttamente a questo campo UDM.
Metadata.filter target.resource.attribute.labels.value Il valore Metadata.filter del log non elaborato viene assegnato al campo value di un'etichetta in target.resource.attribute.labels. Il valore key per questa etichetta è impostato in modo statico su "Filtro metadati".
Metadata.type target.resource.attribute.labels.value Il valore Metadata.type del log non elaborato viene assegnato al campo value di un'etichetta in target.resource.attribute.labels. Il valore key per questa etichetta è impostato in modo statico su "Tipo di metadati". Il valore di questo campo viene dedotto in base alla presenza e ai valori di ClientIP, ClientRequestHost e app_protocol. Consulta 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 dal log non elaborato viene assegnato direttamente a questo campo UDM.
RuleID security_result.rule_id Il valore di RuleID dal log non elaborato viene assegnato direttamente a questo campo UDM.
Source security_result.rule_name Il valore di Source dal log non elaborato viene assegnato direttamente a questo campo UDM.
timestamp metadata.event_timestamp, events.timestamp Il valore di timestamp dal log non elaborato viene assegnato direttamente a questi campi UDM.

Modifiche

2024-08-08

  • Ho estratto i dati da "ClientRequestHost" e "ClientRequestURI", li ho uniti e ho mappato il risultato a "target.url".

2023-08-30

  • Campo "ClientRequestPath" inizializzato.

2023-02-02

  • Il valore "security_result" è stato convalidato prima di essere unito all'evento.

2022-09-16

  • È stato mappato il campo "Azione" a "security_result.action_details".
  • È stata mappata la colonna "security_result.action" a "ALLOW_WITH_MODIFICATION" quando l'azione contiene "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved", "managedchallengeinteractivesolved".
  • "security_result.action" è stato mappato a "BLOCK" quando l'azione contiene "drop", "block", "connectionclose".
  • "security_result.action" è stato mappato a "FAIL" quando l'azione contiene "challengefailed", "jschallengefailed".

2022-07-25

  • Analizzatore appena creato

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.