Area 1-Logs erfassen

Parserversion:3.0

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. Er extrahiert relevante Felder aus der verschachtelten JSON-Struktur, ordnet sie dem Unified Data Model (UDM) zu und ergänzt die Daten mit geografischen Informationen und Sicherheitsdetails wie Anhang-Hashes und -Disposition.

Hinweis

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

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

AWS IAM und S3-Bucket konfigurieren

  1. Erstellen Sie einen Amazon S3-Bucket gemäß dieser Anleitung: Bucket erstellen.
  2. Melden Sie sich in der AWS-Konsole an.
  3. Rufen Sie S3 > Bucket erstellen auf.
  4. Geben Sie einen Namen für den Bucket ein, z. B. area1-security-logs.
  5. Übernehmen Sie die anderen Standardeinstellungen 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 für die spätere 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 als Anwendungsfall die Option Drittanbieterdienst 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 Zugriffsschlüssel und den geheimen Zugriffsschlüssel für die spätere 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.

Area 1-API-Anmeldedaten abrufen

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

Erforderliche Python-Pakete konfigurieren

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

    pip install boto3 requests
    aws configure
    

Skript zum Abrufen von Area 1-Logs 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 die folgenden 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 Sie vi: Klicken Sie auf esc und geben Sie dann :wq ein.

Umgebungsvariablen speichern

  1. Erstellen Sie eine sichere Datei, um Umgebungsvariablen in /etc/area1.env oder /home/user/.area1.env zu speichern.

    export AREA1_API_TOKEN="your_actual_area1_api_token"
    export AWS_PROFILE="<your_aws_programmatic_username>"
    
  2. Achten Sie darauf, dass 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 ein Wrapperskript für Cron, indem Sie sudo vi /usr/local/bin/run_area1.sh ausführen, und kopieren Sie dann den folgenden Code:

    #!/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. Legen Sie fest, dass die Ausführung täglich um 01:00 Uhr UTC erfolgt:

    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 „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 Einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feedname 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 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 für das Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.
    • 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.
  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 für das Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.
    • 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.§

Erweiterte Optionen

  • Feedname: Ein vorab ausgefüllter Wert, der den Feed identifiziert.
  • Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
  • Asset-Namespace: Namespace, der mit dem Feed verknüpft 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 mit einem Grok-Muster 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 festgelegt.
subject network.email.subject Der Wert wird aus dem Feld subject übernommen.
time 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.
envelope_to.0" instead of "replyto network.email.to Aus Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

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