Cloudflare Page Shield-Logs erfassen

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, Ressourcen zu verwalten, die von Besuchern Ihrer Website geladen werden, einschließlich Skripts, deren 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 aktiviertem Page Shield
  • Privilegierter Zugriff auf das Cloudflare
  • Privilegierter Zugriff auf AWS (S3, IAM)

Bei dieser Option werden Page Shield-Ereignisse mit Cloudflare Logpush nach Amazon S3 exportiert und dann von Google SecOps aufgenommen.

Page Shield aktivieren

  1. Melden Sie sich im Cloudflare-Dashboard an.
  2. Wählen Sie Ihr Konto und Ihre Domain aus.
  3. Klicken Sie auf Sicherheit > Page Shield.
  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 Programmatic access (Programmatischer Zugriff) aus.
  5. Klicken Sie auf Next: Permissions.
  6. Wählen Sie Vorhandene 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 den Namen Ihres Buckets:

    {
      "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. Klicken Sie auf Analysen & Logs > Logs.
  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, klicken Sie auf dem Tab „Übersicht“ der Datei für die Inhaberschaftsanfechtung auf die Schaltfläche „Öffnen“ und fügen Sie es dann in das Cloudflare-Dashboard ein, um Ihren Zugriff auf den Bucket zu bestätigen. Geben Sie das Inhaberschaftstoken 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. Konfigurieren Sie Ihren Logpush-Job:
    • Jobname: Geben Sie einen aussagekräftigen Namen ein, z. B. pageshield-to-s3.
    • Wenn Protokolle ü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 Logtyp 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 Löschoption aus:

      • Nie: Löscht nach Übertragungen niemals 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: Der 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 Der Wert wird aus URLContainsCDNCGIPath übernommen und als string_value im Label mit dem Schlüssel „CGI“ festgelegt.
Aktion event.idm.read_only_udm.additional.fields.action_label Wert aus „Aktion“, 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 Konvertiert von „ts (UNIX)“ in „timestamp“
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 Wert aus „policie.id“, 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 Wert aus data.zones, 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
account_id event.idm.read_only_udm.principal.user.product_object_id Wert aus „account_id“ übernommen
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

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