Cloudflare Page Shield-Logs erfassen

Parserversion: 1.0

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Cloudflare Page Shield-Logs mit Amazon S3 in Google Security Operations aufnehmen.

Page Shield hilft Ihnen, die von Ihren Websitebesuchern geladenen Ressourcen zu verwalten, einschließlich Skripts, ihrer Verbindungen und Cookies. Außerdem werden Warnbenachrichtigungen ausgelöst, wenn sich Ressourcen ändern oder als schädlich eingestuft werden.

Hinweis

  • Eine Google SecOps-Instanz
  • Cloudflare-Konto mit aktivierter Page Shield-Funktion
  • Privilegierter Zugriff auf das Cloudflare
  • Privilegierter Zugriff auf AWS (S3, IAM)

Bei dieser Option wird Cloudflare Logpush verwendet, um Page Shield-Ereignisse nach Amazon S3 zu exportieren, wo sie dann von Google SecOps aufgenommen werden.

Page Shield aktivieren

  1. Melden Sie sich im Cloudflare-Dashboard an.
  2. Wählen Sie Ihr Konto und Ihre Domain aus.
  3. Rufen Sie Sicherheit > Page Shield auf.
  4. Klicken Sie auf Page Shield aktivieren.

Amazon S3-Bucket erstellen

  1. Öffnen Sie die Amazon S3-Konsole.
  2. Klicken Sie auf Bucket erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:
    • Bucket-Name: Geben Sie einen aussagekräftigen Namen für den Bucket ein, z. B. cloudflare-pageshield-logs.
    • Region: Wählen Sie die gewünschte AWS-Region aus, z. B. us-east-1.
  4. Klicken Sie auf Erstellen.
  5. Speichern Sie den Bucket-Namen und die Region für die spätere Verwendung.

IAM-Nutzer mit S3-Zugriff erstellen

  1. Öffnen Sie die IAM-Konsole.
  2. Klicken Sie auf Nutzer > Nutzer hinzufügen.
  3. Geben Sie einen Nutzernamen ein, z. B. chronicle-s3-user.
  4. Wählen Sie Programmatischer Zugriff aus.
  5. Klicken Sie auf Next: Permissions.
  6. Wählen Sie Bestehende Richtlinien direkt anhängen aus.
  7. Suchen Sie nach der Richtlinie AmazonS3FullAccess und wählen Sie sie aus.
  8. Klicken Sie auf Weiter: Tags.
  9. Klicken Sie auf Weiter: Überprüfen.
  10. Klicken Sie auf Nutzer erstellen.
  11. Klicken Sie auf CSV-Datei herunterladen, um die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel zu speichern.

S3-Bucket-Richtlinie für Cloudflare konfigurieren

  1. Wählen Sie in der Amazon S3-Konsole Ihren Bucket aus.
  2. Klicken Sie auf Berechtigungen > Bucket-Richtlinie.
  3. Klicken Sie auf Bearbeiten.
  4. Fügen Sie die folgende Richtlinie ein und ersetzen Sie <BUCKET_NAME> durch Ihren Bucket-Namen:

    {
      "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. Klicken Sie auf Änderungen speichern.

Cloudflare Logpush-Job erstellen

  1. Melden Sie sich im Cloudflare-Dashboard an.
  2. Wählen Sie Ihr Konto und Ihre Domain aus.
  3. Rufen Sie Analysen & Logs > Logs auf.
  4. Klicken Sie auf Logpush-Job erstellen.
  5. Wählen Sie unter Ziel auswählen die Option Amazon S3 aus.
  6. Geben Sie die folgenden Zielinformationen ein:
    • Bucket-Name: Geben Sie den Namen Ihres S3-Buckets ein (z. B. cloudflare-pageshield-logs).
    • Bucket-Region: Wählen Sie die Region aus, die Ihrem S3-Bucket entspricht.
    • Bucket-Pfad (optional): Geben Sie ein Pfadpräfix ein, z. B. pageshield/.
  7. Klicken Sie auf Weiter.
  8. Um die Inhaberschaft nachzuweisen, sendet Cloudflare eine Datei an das von Ihnen angegebene Ziel. Wenn Sie das Token aufrufen möchten, wählen Sie auf dem Tab „Übersicht“ der Datei für die Inhaberschaftsprüfung die Schaltfläche „Öffnen“ aus und fügen Sie es dann in das Cloudflare-Dashboard ein, um Ihren Zugriff auf den Bucket zu bestätigen. Geben Sie das Eigentümer-Token ein und wählen Sie „Weiter“ aus.
  9. Wählen Sie unter Dataset auswählen die Option Page Shield-Ereignisse aus.
  10. Klicken Sie auf Weiter.
  11. Logpush-Job konfigurieren:
    • Jobname: Geben Sie einen aussagekräftigen Namen ein, z. B. pageshield-to-s3.
    • Wenn Logs übereinstimmen: Lassen Sie das Feld leer, um alle Ereignisse einzuschließen, oder konfigurieren Sie Filter nach Bedarf.
    • Folgende Felder senden: Wählen Sie Alle Felder aus oder wählen Sie bestimmte Felder aus.
  12. Klicken Sie auf Senden.

Feed in Google SecOps konfigurieren, um Page Shield-Logs aufzunehmen

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf Neuen Feed hinzufügen.
  3. Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Cloudflare Page Shield S3.
  5. Wählen Sie Amazon S3 V2 als Quelltyp aus.
  6. Wählen Sie Cloudflare Page Shield als Log type (Protokolltyp) aus.
  7. Klicken Sie auf Weiter.
  8. Geben Sie Werte für die folgenden Eingabeparameter an:

    • S3-URI: Geben Sie den Bucket-URI im Format s3://<BUCKET_NAME>/<BUCKET_PATH>/ ein.

    • Option zum Löschen der Quelle: Wählen Sie die gewünschte Option zum Löschen aus:

      • Nie: Löscht nach Übertragungen nie Dateien.
      • Übertragene Dateien löschen: Dateien werden nach der erfolgreichen Übertragung gelöscht.
      • Übertragene Dateien und leere Verzeichnisse löschen: Löscht Dateien und leere Verzeichnisse nach der erfolgreichen Übertragung.
    • Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.

    • Zugriffsschlüssel-ID: Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.

    • Geheimer Zugriffsschlüssel: Der geheime Schlüssel des Nutzers mit Zugriff auf den S3-Bucket.

    • Asset-Namespace: Der Asset-Namespace.

    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.

  9. Klicken Sie auf Weiter.

  10. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
URLContainsCDNCGIPath event.idm.read_only_udm.additional.fields.CGI_label Wert aus URLContainsCDNCGIPath, als string_value im Label mit dem Schlüssel „CGI“ festgelegt
Aktion event.idm.read_only_udm.additional.fields.action_label Der Wert wird aus der Aktion übernommen und als „string_value“ im Label mit dem Schlüssel „action“ festgelegt.
resource.first_page_url event.idm.read_only_udm.additional.fields.first_page_label Wert aus resource.first_page_url, als string_value im Label mit dem Schlüssel „first_page_url“ festgelegt
resource.last_page_url event.idm.read_only_udm.additional.fields.last_page_label Wert aus resource.last_page_url, als string_value im Label mit dem Schlüssel „last_page_url“ festgelegt
Name event.idm.read_only_udm.additional.fields.name_label Der Wert wird aus dem Namen übernommen und als „string_value“ im Label mit dem Schlüssel „name“ festgelegt.
ts event.idm.read_only_udm.metadata.event_timestamp Von „ts“ (UNIX) in „timestamp“ konvertiert
event.idm.read_only_udm.metadata.event_type Abgeleitet basierend auf has_principal, has_target, has_target_user: NETWORK_CONNECTION, wenn sowohl „principal“ als auch „target“; USER_UNCATEGORIZED, wenn „target_user“; STATUS_UPDATE, wenn „principal“; andernfalls GENERIC_EVENT
resource.url event.idm.read_only_udm.network.http.referral_url Wert aus „resource.url“
Host event.idm.read_only_udm.principal.asset.hostname Wert aus „Host“ oder „host.hostname“
Host event.idm.read_only_udm.principal.hostname Wert aus „Host“ oder „host.hostname“
alert_type event.idm.read_only_udm.principal.resource.attribute.labels.alert_type_label Der Wert wird aus „alert_type“ übernommen und als Wert im Label mit dem Schlüssel „alert_type“ festgelegt.
resource.cryptomining_score event.idm.read_only_udm.principal.resource.attribute.labels.crypto_label Der Wert wird aus „resource.cryptomining_score“ übernommen und als Wert im Label mit dem Schlüssel „cryptominingscore%{index2}“ festgelegt.
resource.dataflow_score event.idm.read_only_udm.principal.resource.attribute.labels.dataflow_label Der Wert wird aus „resource.dataflow_score“ übernommen und als Wert im Label mit dem Schlüssel „dataflowscore%{index2}“ festgelegt.
policie.description event.idm.read_only_udm.principal.resource.attribute.labels.desc_label Der Wert wird aus „policie.description“ übernommen und als Wert im Label mit dem Schlüssel „description_%{index}“ festgelegt.
version.fetched_at event.idm.read_only_udm.principal.resource.attribute.labels.fetched_at_label Der Wert wird aus „version.fetched_at“ übernommen und als Wert im Label mit dem Schlüssel „fetchedat%{index2}“ festgelegt.
version.hash event.idm.read_only_udm.principal.resource.attribute.labels.hash_label Der Wert wird aus „version.hash“ übernommen und als Wert im Label mit dem Schlüssel „hash_%{index2}“ festgelegt.
policie.id event.idm.read_only_udm.principal.resource.attribute.labels.id_label Der Wert wird aus „policie.id“ übernommen und als Wert im Label mit dem Schlüssel „policyid%{index}“ festgelegt.
data.options.remove_dashboard_links event.idm.read_only_udm.principal.resource.attribute.labels.remove_dash_label Der Wert wird aus „data.options.remove_dashboard_links“ übernommen und als Wert im Label mit dem Schlüssel „remove_dashboard_links“ festgelegt.
resource.resource_type event.idm.read_only_udm.principal.resource.attribute.labels.res_type_label Der Wert wird aus „resource.resource_type“ übernommen und als Wert im Label mit dem Schlüssel „resourcetype%{index2}“ festgelegt.
data.type event.idm.read_only_udm.principal.resource.attribute.labels.type_label Wert aus data.type, als Wert im Label mit dem Schlüssel „type“ festgelegt
data.zones event.idm.read_only_udm.principal.resource.attribute.labels.zones_label Der Wert wird aus „data.zones“ übernommen und als Wert im Label mit dem Schlüssel „zones“ festgelegt.
resource.id event.idm.read_only_udm.principal.resource.id Wert aus „resource.id“
PageURL event.idm.read_only_udm.principal.url Wert aus PageURL
Die Konto-ID von Tinfoil Security event.idm.read_only_udm.principal.user.product_object_id Wert aus „account_id“
policy_id event.idm.read_only_udm.security_result.detection_fields.policy_id_label Der Wert wird aus „policy_id“ übernommen und als Wert im Label mit dem Schlüssel „policy_id“ festgelegt.
policy_name event.idm.read_only_udm.security_result.detection_fields.policy_name_label Der Wert wird aus „policy_name“ übernommen und als Wert im Label mit dem Schlüssel „policy_name“ festgelegt.
Text event.idm.read_only_udm.security_result.description Wert aus Text
resource.first_seen_at event.idm.read_only_udm.security_result.first_discovered_time Von „resource.first_seen_at“ in ISO8601-Zeitstempel konvertiert
PolicyID event.idm.read_only_udm.security_result.rule_name Wert aus PolicyID
data.severity event.idm.read_only_udm.security_result.severity Abgeleitet von data.severity: „INFO“ → „INFORMATIONAL“; „WARN“ → „MEDIUM“; andernfalls „UNKNOWN_SEVERITY“
URL event.idm.read_only_udm.target.url Wert aus URL übernommen
URLHost event.idm.read_only_udm.target.user.email_addresses Wert aus „URLHost“, wenn er mit dem E-Mail-Muster übereinstimmt

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten