Protokolle für Bereich 1 erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Area 1 Email Security-Logs (von Cloudflare) mit AWS S3 in Google Security Operations aufnehmen. Der Parser verarbeitet die Logs im JSON-Format. Es werden relevante Felder aus der verschachtelten JSON-Struktur extrahiert, dem Unified Data Model (UDM) zugeordnet und mit geografischen Informationen und Sicherheitsdetails wie Hash-Werten und Status von Anhängen angereichert.

Hinweise

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Google SecOps-Instanz
  • Ein Windows-Host mit Windows 2016 oder höher oder ein Linux-Host mit systemd
  • Wenn die Ausführung hinter einem Proxy erfolgt, sind die Firewallports geöffnet.
  • Berechtigter Zugriff auf Area 1 Email Security (von Cloudflare)

AWS IAM und S3-Bucket konfigurieren

  1. Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu dieser Anleitung: Bucket erstellen.
  2. Melden Sie sich in der AWS-Konsole an.
  3. Gehen Sie zu S3 > Bucket erstellen.
  4. Geben Sie einen Namen für den Bucket ein, z. B. area1-security-logs.
  5. Behalten Sie die anderen Standardeinstellungen bei oder konfigurieren Sie bei Bedarf die Verschlüsselung und die Versionsverwaltung.
  6. Klicken Sie auf Erstellen.
  7. Speichern Sie den Namen und die Region des Buckets zur späteren Verwendung.
  8. Erstellen Sie einen Nutzer gemäß dieser Anleitung: IAM-Nutzer erstellen.
  9. Wählen Sie den erstellten Nutzer aus.
  10. Wählen Sie den Tab Sicherheitsanmeldedaten aus.
  11. Klicken Sie im Abschnitt Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
  12. Wählen Sie Drittanbieterdienst als Anwendungsfall aus.
  13. Klicken Sie auf Weiter.
  14. Optional: Fügen Sie ein Beschreibungstag hinzu.
  15. Klicken Sie auf Zugriffsschlüssel erstellen.
  16. Klicken Sie auf CSV-Datei herunterladen und speichern Sie den Access Key (Zugriffsschlüssel) und den Secret Access Key (geheimer Zugriffsschlüssel) für die zukünftige Verwendung.
  17. Klicken Sie auf Fertig.
  18. Wählen Sie den Tab Berechtigungen aus.
  19. Klicken Sie unter Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
  20. Wählen Sie Richtlinien direkt anhängen aus.
  21. Suchen Sie nach der Richtlinie AmazonS3FullAccess.
  22. Wählen Sie die Richtlinie aus.
  23. Klicken Sie auf Weiter.
  24. Klicken Sie auf Berechtigungen hinzufügen.

API-Anmeldedaten für Area 1 abrufen

  1. Melden Sie sich im Area 1 Security-Dashboard (Cloudflare) an.
  2. Gehen Sie zu den Einstellungen> API-Zugriff.
  3. Generieren Sie den API-Schlüssel (Token).
  4. Kopieren Sie das Token und speichern Sie es an einem sicheren Ort.

Erforderliche Python-Pakete konfigurieren

  1. Melden Sie sich auf dem Host für die Protokollerfassung an (z. B. einer AWS-VM) und führen Sie Folgendes aus, um AWS-Anmeldedaten zu konfigurieren:

    pip install boto3 requests
    aws configure
    

Skript zum Abrufen von Protokollen für Bereich 1 erstellen

  1. Erstellen Sie die folgende Datei, indem Sie sudo vi area1_to_s3.py eingeben, und kopieren Sie dann den folgenden Code:

    • Nehmen Sie folgende Anpassungen vor:
    #!/usr/bin/env python3
    import os
    import requests
    import boto3
    import datetime
    import json
    
    # Configuration
    AREA1_API_TOKEN = os.environ.get("AREA1_API_TOKEN")  # Load securely from env
    AWS_PROFILE = os.environ.get("AWS_PROFILE", None)    # Optional, for named profiles
    S3_BUCKET_NAME = "area1-security-logs"
    LOG_TYPE = "events"
    
    # Time range
    end_time = datetime.datetime.utcnow()
    start_time = end_time - datetime.timedelta(days=1)
    
    def fetch_area1_logs():
        url = f"https://api.area1security.com/v1/{LOG_TYPE}"
        headers = {
            "Authorization": f"Bearer {AREA1_API_TOKEN}",
            "Accept": "application/json"
        }
        params = {
            "startDate": start_time.strftime("%Y-%m-%dT%H:%M:%SZ"),
            "endDate": end_time.strftime("%Y-%m-%dT%H:%M:%SZ")
        }
        response = requests.get(url, headers=headers, params=params)
        response.raise_for_status()
        return response.json()
    
    def upload_to_s3(data):
        filename = f"area1_{LOG_TYPE}_{start_time.strftime('%Y%m%d')}.json"
    
        session = boto3.Session(profile_name=AWS_PROFILE) if AWS_PROFILE else boto3.Session()
        s3 = session.client("s3")
    
        s3.put_object(
            Bucket=S3_BUCKET_NAME,
            Key=f"logs/{filename}",
            Body=json.dumps(data).encode("utf-8"),
            ContentType="application/json"
        )
        print(f"[✓] Uploaded {filename} to s3://{S3_BUCKET_NAME}/logs/")
    
    if __name__ == "__main__":
        logs = fetch_area1_logs()
        upload_to_s3(logs)
    
  2. Speichern und beenden vi: Klicken Sie auf esc und geben Sie dann :wq ein.

Umgebungsvariablen speichern

  1. Erstellen Sie eine sichere Datei zum Speichern von Umgebungsvariablen in /etc/area1.env (oder /home/user/.area1.env).

    export AREA1_API_TOKEN="your_actual_area1_api_token"
    export AWS_PROFILE="<your_aws_programmatic_username>"
    
  2. Prüfen Sie, ob die Datei sicher ist:

    chmod 600 /etc/area1.env
    

Skript ausführen und testen

  1. Führen Sie das folgende Skript aus:

    python3 area1_to_s3.py
    
  2. Hier sollten Sie dies sehen:

    Uploaded area1_events_20250701.json to s3://area1-security-logs/logs/
    

Mit Cron automatisieren

  1. Erstellen Sie das Wrapper-Script für Cron, indem Sie sudo vi /usr/local/bin/run_area1.sh ausführen und dann den folgenden Code kopieren:

    #!/usr/bin/env bash
    set -euo pipefail
    
    source /etc/area1.env
    /usr/bin/python3 /opt/scripts/area1_to_s3.py
    
  2. Machen Sie die Datei ausführbar:

    chmod +x /usr/local/bin/run_area1.sh
    
  3. Tägliche Ausführung um 01:00 Uhr UTC:

    crontab -e
    0 1 * * * /usr/local/bin/run_area1.sh >> /var/log/area1_to_s3.log 2>&1
    

Feeds einrichten

Es gibt zwei verschiedene Einstiegspunkte zum Einrichten von Feeds in der Google SecOps-Plattform:

  • SIEM-Einstellungen > Feeds
  • Content Hub> Content-Pakete

Feeds über die SIEM-Einstellungen > „Feeds“ einrichten

So konfigurieren Sie einen Feed:

  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 Feed name einen Namen für den Feed ein, z. B. Area1 Logs.
  5. Wählen Sie Amazon S3 als Quelltyp aus.
  6. Wählen Sie Area1 Security als Log type (Logtyp) aus.
  7. Klicken Sie auf Weiter.
  8. Geben Sie Werte für die folgenden Eingabeparameter an:

    • Region: Die Region, in der sich der Amazon S3-Bucket befindet.
    • S3-URI: Der Bucket-URI (das Format sollte s3://<your-log-bucket-name> sein). Ersetzen Sie Folgendes:
      • your-log-bucket-name: der Name des Buckets.
    • URI ist ein: Wählen Sie Verzeichnis mit Unterverzeichnissen aus.
    • Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option aus.
    • Zugriffsschlüssel-ID: Der Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.
    • Secret Access Key (Geheimer Zugriffsschlüssel): Der geheime Schlüssel des Nutzers mit Zugriff auf den S3-Bucket.
  9. Klicken Sie auf Weiter.

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

Feeds über den Content Hub einrichten

Geben Sie Werte für die folgenden Felder an:

  • Region: Die Region, in der sich der Amazon S3-Bucket befindet.

    • S3-URI: Der Bucket-URI (das Format sollte s3://<your-log-bucket-name> sein). Ersetzen Sie Folgendes:
      • your-log-bucket-name: der Name des Buckets.
    • URI ist ein: Wählen Sie Verzeichnis mit Unterverzeichnissen aus.
    • Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option aus.
    • Zugriffsschlüssel-ID: Der Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.
    • Geheimer Zugriffsschlüssel: Der geheime Nutzersicherheitsschlüssel mit Zugriff auf den S3-Bucket.§

Erweiterte Optionen

  • Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
  • Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
  • Asset-Namespace: Der Namespace, der dem Feed zugeordnet ist.
  • Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
alert_id security_result.rule_id Der Wert wird aus dem Feld alert_id übernommen.
alert_reasons security_result.description Der Wert wird aus dem Feld alert_reasons übernommen.
attachments.att_size security_result.about.file.size Der Wert wird aus dem Feld attachments.att_size übernommen und in eine vorzeichenlose Ganzzahl konvertiert.
attachments.disposition security_result.about.user.attribute.labels.value Der Wert wird aus dem Feld attachments.disposition übernommen.
attachments.extension security_result.about.file.mime_type Der Wert wird aus dem Feld attachments.extension übernommen.
attachments.md5 security_result.about.file.md5 Der Wert wird aus dem Feld attachments.md5 übernommen.
attachments.name security_result.about.file.full_path Der Wert wird aus dem Feld attachments.name übernommen.
attachments.sha1 security_result.about.file.sha1 Der Wert wird aus dem Feld attachments.sha1 übernommen.
attachments.sha256 security_result.about.file.sha256 Der Wert wird aus dem Feld attachments.sha256 übernommen.
attachments.ssdeep security_result.about.file.ssdeep Der Wert wird aus dem Feld attachments.ssdeep übernommen.
delivery_mode security_result.detection_fields.value Der Wert wird aus dem Feld delivery_mode übernommen.
envelope_from principal.user.email_addresses, network.email.from Der Wert wird aus dem Feld envelope_from übernommen.
envelope_to network.email.to, target.user.email_addresses Der Wert wird aus dem Feld envelope_to übernommen.
final_disposition security_result.category_details Der Wert wird aus dem Feld final_disposition übernommen.
message_id metadata.product_log_id Der Wert wird aus dem Feld message_id übernommen, nachdem die Zeichen „<“ und „>“ entfernt wurden.
replyto network.email.bounce_address Der Wert wird aus dem Feld replyto übernommen.
smtp_helo_server_ip principal.ip Der Wert wird aus dem Feld smtp_helo_server_ip übernommen.
smtp_helo_server_ip_as_name principal.location.name Der Wert wird aus dem Feld smtp_helo_server_ip_as_name übernommen.
smtp_helo_server_ip_as_number principal.asset_id Der Wert wird aus dem Feld smtp_helo_server_ip_as_number übernommen und mit asset_id: vorangestellt.
smtp_helo_server_ip_geo principal.location.country_or_region, principal.location.state, principal.location.city Der Wert wird mithilfe eines Grok-Musters aus dem Feld smtp_helo_server_ip_geo extrahiert.
smtp_helo_server_name principal.administrative_domain Der Wert wird aus dem Feld smtp_helo_server_name übernommen.
source metadata.vendor_name Der Wert wird aus dem Feld source übernommen. Wenn das Feld leer ist, wird der Wert auf area1security gesetzt.
subject network.email.subject Der Wert wird aus dem Feld subject übernommen.
Zeit metadata.event_timestamp Der Wert wird aus dem Feld time übernommen und in einen Zeitstempel konvertiert.
metadata.event_type Der Wert wird auf EMAIL_TRANSACTION festgelegt.
metadata.product_name Der Wert wird auf AREA1 festgelegt.
metadata.log_type Der Wert wird auf AREA1 festgelegt.
security_result.about.user.attribute.labels.key Der Wert wird auf disposition festgelegt.
security_result.category Der Wert wird auf SOFTWARE_MALICIOUS festgelegt.
security_result.detection_fields.key Der Wert wird auf delivery_mode festgelegt.

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