Raccogli i log di Cloudflare Page Shield

Supportato in:

Questo documento spiega come importare i log di Cloudflare Page Shield in Google Security Operations utilizzando Amazon S3.

Page Shield aiuta a gestire le risorse caricate dai visitatori del tuo sito web, inclusi script, connessioni e cookie, e attiva notifiche di avviso quando le risorse cambiano o sono considerate dannose.

Prima di iniziare

  • Un'istanza Google SecOps
  • Account Cloudflare con Page Shield abilitato
  • Accesso con privilegi alla dashboard di Cloudflare
  • Accesso privilegiato ad AWS (S3, IAM)

Questa opzione utilizza Cloudflare Logpush per esportare gli eventi Page Shield in Amazon S3, che poi vengono importati da Google SecOps.

Attiva Page Shield

  1. Accedi alla dashboard di Cloudflare.
  2. Seleziona il tuo account e il tuo dominio.
  3. Vai a Sicurezza > Page Shield.
  4. Fai clic su Attiva Page Shield.

Crea un bucket Amazon S3

  1. Apri la console Amazon S3.
  2. Fai clic su Crea bucket.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome bucket: inserisci un nome significativo per il bucket (ad esempio cloudflare-pageshield-logs).
    • Regione: seleziona la regione AWS che preferisci (ad esempio, us-east-1).
  4. Fai clic su Crea.
  5. Salva il nome e la regione del bucket per riferimento futuro.

Crea un utente IAM con accesso a S3

  1. Apri la console IAM.
  2. Fai clic su Utenti > Aggiungi utente.
  3. Inserisci un nome utente (ad esempio, chronicle-s3-user).
  4. Seleziona Accesso programmatico.
  5. Fai clic su Avanti: autorizzazioni.
  6. Scegli Collega direttamente le policy esistenti.
  7. Cerca e seleziona il criterio AmazonS3FullAccess.
  8. Fai clic su Avanti: tag.
  9. Fai clic su Successivo: esamina.
  10. Fai clic su Crea utente.
  11. Fai clic su Scarica file .csv per salvare l'ID chiave di accesso e la chiave di accesso segreta.

Configura la policy del bucket S3 per Cloudflare

  1. Nella console Amazon S3, seleziona il bucket.
  2. Fai clic su Autorizzazioni > Policy del bucket.
  3. Fai clic su Modifica.
  4. Incolla la seguente policy, sostituendo <BUCKET_NAME> con il nome del tuo bucket:

    {
      "Id": "Policy1506627184792",
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "Stmt1506627150918",
          "Action": ["s3:PutObject"],
          "Effect": "Allow",
          "Resource": "arn:aws:s3:::<BUCKET_NAME>/*",
          "Principal": {
            "AWS": ["arn:aws:iam::391854517948:user/cloudflare-logpush"]
          }
        }
      ]
    }
    
  5. Fai clic su Salva modifiche.

Crea job Cloudflare Logpush

  1. Accedi alla dashboard di Cloudflare.
  2. Seleziona il tuo account e il tuo dominio.
  3. Vai ad Analytics e log > Log.
  4. Fai clic su Crea un job Logpush.
  5. In Seleziona una destinazione, scegli Amazon S3.
  6. Inserisci le seguenti informazioni sulla destinazione:
    • Nome bucket: inserisci il nome del bucket S3 (ad esempio cloudflare-pageshield-logs).
    • Regione bucket: seleziona la regione corrispondente al tuo bucket S3.
    • (Facoltativo) Percorso del bucket: inserisci un prefisso del percorso (ad esempio, pageshield/).
  7. Fai clic su Continua.
  8. Per dimostrare la proprietà, Cloudflare invierà un file alla destinazione designata. Per trovare il token, seleziona il pulsante Apri nella scheda Panoramica del file di verifica della proprietà, poi incollalo nella dashboard di Cloudflare per verificare l'accesso al bucket. Inserisci il token di proprietà e seleziona Continua.
  9. In Seleziona un set di dati, scegli Eventi Page Shield.
  10. Fai clic su Avanti.
  11. Configura il job logpush:
    • Nome job: inserisci un nome descrittivo (ad esempio, pageshield-to-s3).
    • Se i log corrispondono: lascia vuoto per includere tutti gli eventi o configura i filtri in base alle esigenze.
    • Invia i seguenti campi: seleziona Tutti i campi o scegli campi specifici.
  12. Fai clic su Invia.

Configura un feed in Google SecOps per importare i log di Page Shield

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Cloudflare Page Shield S3).
  5. Seleziona Amazon S3 V2 come Tipo di origine.
  6. Seleziona Cloudflare Page Shield come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    • URI S3: inserisci l'URI del bucket nel formato s3://<BUCKET_NAME>/<BUCKET_PATH>/

    • Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:

      • Mai: non elimina mai i file dopo i trasferimenti.
      • Elimina file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
    • Età massima del file: includi i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.

    • ID chiave di accesso: chiave di accesso utente con accesso al bucket S3.

    • Chiave di accesso segreta: chiave segreta dell'utente con accesso al bucket S3.

    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.

    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.

  9. Fai clic su Avanti.

  10. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Tabella di mappatura UDM

Campo log Mappatura UDM Funzione logica
URLContainsCDNCGIPath event.idm.read_only_udm.additional.fields.CGI_label Valore estratto da URLContainsCDNCGIPath, impostato come string_value nell'etichetta con la chiave "CGI"
Azione event.idm.read_only_udm.additional.fields.action_label Valore estratto da Azione, impostato come string_value nell'etichetta con la chiave "action"
resource.first_page_url event.idm.read_only_udm.additional.fields.first_page_label Valore estratto da resource.first_page_url, impostato come string_value nell'etichetta con la chiave "first_page_url"
resource.last_page_url event.idm.read_only_udm.additional.fields.last_page_label Valore estratto da resource.last_page_url, impostato come string_value nell'etichetta con la chiave "last_page_url"
nome event.idm.read_only_udm.additional.fields.name_label Valore estratto dal nome, impostato come string_value nell'etichetta con chiave "name"
ts event.idm.read_only_udm.metadata.event_timestamp Convertito da ts (UNIX) a timestamp
event.idm.read_only_udm.metadata.event_type Derivato in base a has_principal, has_target, has_target_user: NETWORK_CONNECTION se sia il principale che il target; USER_UNCATEGORIZED se target_user; STATUS_UPDATE se principale; altrimenti GENERIC_EVENT
resource.url event.idm.read_only_udm.network.http.referral_url Valore estratto da resource.url
Host event.idm.read_only_udm.principal.asset.hostname Valore tratto da Host o host.hostname
Host event.idm.read_only_udm.principal.hostname Valore tratto da Host o host.hostname
alert_type event.idm.read_only_udm.principal.resource.attribute.labels.alert_type_label Valore estratto da alert_type, impostato come valore nell'etichetta con la chiave "alert_type"
resource.cryptomining_score event.idm.read_only_udm.principal.resource.attribute.labels.crypto_label Valore estratto da resource.cryptomining_score, impostato come valore nell'etichetta con la chiave "cryptominingscore%{index2}"
resource.dataflow_score event.idm.read_only_udm.principal.resource.attribute.labels.dataflow_label Valore estratto da resource.dataflow_score, impostato come valore nell'etichetta con la chiave "dataflowscore%{index2}"
policie.description event.idm.read_only_udm.principal.resource.attribute.labels.desc_label Valore tratto da policie.description, impostato come valore nell'etichetta con chiave "description_%{index}"
version.fetched_at event.idm.read_only_udm.principal.resource.attribute.labels.fetched_at_label Valore estratto da version.fetched_at, impostato come valore nell'etichetta con la chiave "fetchedat%{index2}"
version.hash event.idm.read_only_udm.principal.resource.attribute.labels.hash_label Valore estratto da version.hash, impostato come valore nell'etichetta con la chiave "hash_%{index2}"
policie.id event.idm.read_only_udm.principal.resource.attribute.labels.id_label Valore tratto da policie.id, impostato come valore nell'etichetta con chiave "policyid%{index}"
data.options.remove_dashboard_links event.idm.read_only_udm.principal.resource.attribute.labels.remove_dash_label Valore estratto da data.options.remove_dashboard_links, impostato come valore nell'etichetta con la chiave "remove_dashboard_links"
resource.resource_type event.idm.read_only_udm.principal.resource.attribute.labels.res_type_label Valore estratto da resource.resource_type, impostato come valore nell'etichetta con chiave "resourcetype%{index2}"
data.type event.idm.read_only_udm.principal.resource.attribute.labels.type_label Valore estratto da data.type, impostato come valore nell'etichetta con la chiave "type"
data.zones event.idm.read_only_udm.principal.resource.attribute.labels.zones_label Valore estratto da data.zones, impostato come valore nell'etichetta con la chiave "zones"
resource.id event.idm.read_only_udm.principal.resource.id Valore estratto da resource.id
PageURL event.idm.read_only_udm.principal.url Valore tratto da PageURL
account_id event.idm.read_only_udm.principal.user.product_object_id Valore estratto da account_id
policy_id event.idm.read_only_udm.security_result.detection_fields.policy_id_label Valore estratto da policy_id, impostato come valore nell'etichetta con la chiave "policy_id"
policy_name event.idm.read_only_udm.security_result.detection_fields.policy_name_label Valore tratto da policy_name, impostato come valore nell'etichetta con la chiave "policy_name"
testo event.idm.read_only_udm.security_result.description Valore estratto dal testo
resource.first_seen_at event.idm.read_only_udm.security_result.first_discovered_time Convertito da resource.first_seen_at a timestamp ISO8601
PolicyID event.idm.read_only_udm.security_result.rule_name Valore tratto da PolicyID
data.severity event.idm.read_only_udm.security_result.severity Derivato da data.severity: se "INFO" → "INFORMATIONAL"; se "WARN" → "MEDIUM"; altrimenti "UNKNOWN_SEVERITY"
URL event.idm.read_only_udm.target.url Valore estratto dall'URL
URLHost event.idm.read_only_udm.target.user.email_addresses Valore estratto da URLHost se corrisponde al pattern email

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