Akamai WAF-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Akamai WAF-Logs mit dem Akamai CEF-Connector und Bindplane in Google Security Operations aufnehmen.

Hinweise

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

  • Eine Google SecOps-Instanz
  • Ein Windows 2016- oder höher- oder Linux-Host mit systemd für die Installation des Bindplane-Agents
  • Ein Linux-Server (empfohlen: CentOS/RHEL/Ubuntu) mit mindestens 2 CPU-Kernen, 6 GB RAM und 2 GB freiem Speicherplatz für den Akamai CEF Connector
  • Java 8 (JRE 1.8) oder höher ist auf dem CEF-Connector-Host installiert.
  • Wenn Sie den Agent hinter einem Proxy ausführen, achten Sie darauf, dass die Firewallports gemäß den Bindplane-Agent-Anforderungen geöffnet sind und dass die Proxy-Zulassungslisten *.cloudsecurity.akamaiapis.net und *.luna.akamaiapis.net
  • Privilegierter Zugriff auf das Akamai Control Center
  • Eine Akamai-Sicherheitskonfiguration mit aktiviertem App & API Protector, Kona Site Defender, Web Application Protector, Bot Manager oder Account Protector

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Aufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profile auf.
  3. Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.

SIEM-Integration im Akamai Control Center aktivieren

  1. Melden Sie sich im Akamai Control Center an.
  2. Klicken Sie unter WEB- UND DATENCENTER-SICHERHEIT auf Sicherheitskonfiguration.
  3. Öffnen Sie die Sicherheitskonfiguration und die entsprechende Version, für die Sie SIEM-Daten erfassen möchten.
  4. Klicken Sie auf Erweiterte Einstellungen und maximieren Sie Datenerhebung für SIEM-Integrationen.
  5. Klicken Sie auf Ein, um SIEM zu aktivieren.
  6. Wählen Sie die Sicherheitsrichtlinien aus, für die Sie Daten exportieren möchten:
    • Alle Sicherheitsrichtlinien: Wählen Sie diese Option aus, um SIEM-Daten für Ereignisse zu senden, die gegen eine oder alle Sicherheitsrichtlinien in der Sicherheitskonfiguration verstoßen.
    • Bestimmte Sicherheitsrichtlinien: Wählen Sie diese Option aus, um Daten zu einer oder mehreren bestimmten Sicherheitsrichtlinien zu senden. Wählen Sie die entsprechenden Richtlinien aus der Drop-down-Liste aus.
  7. Optional: Wenn Sie Account Protector verwenden und den unverschlüsselten Nutzernamen einbeziehen möchten, aktivieren Sie das Kästchen Nutzernamen einbeziehen.
  8. Optional: Wenn Sie JA4-Fingerprint-Informationen in SIEM-Ereignissen erhalten möchten, aktivieren Sie das Kästchen Include the JA4 Client TLS Fingerprint (JA4-Client-TLS-Fingerprint einbeziehen).
  9. Optional: Wenn Sie Ereignisse ausschließen möchten, die zu einem bestimmten Schutztyp und einer bestimmten Aktion gehören, klicken Sie auf Ausnahme hinzufügen. Wählen Sie den Schutz und die zugehörigen Aktionen aus, die nicht von SIEM erfasst werden sollen. Klicken Sie auf Speichern.
  10. Kopieren Sie den Wert im Feld Web Security Configuration ID (ID der Web-Sicherheitskonfiguration). Speichern Sie diese ID zur späteren Verwendung.
  11. Klicken Sie auf Aktivieren, um die Änderungen an der Sicherheitskonfiguration in das Produktionsnetzwerk zu übertragen. Klicken Sie unter Netzwerk auf Produktion und dann auf Aktivieren.

Nutzer für die Verwaltung von SIEM im Akamai Control Center einrichten

  1. Klicken Sie im Akamai Control Center unter ACCOUNT ADMIN (Kontoadministrator) auf Identity & access (Identität und Zugriff).
  2. Suchen Sie auf dem Tab Nutzer und API-Clients nach dem Nutzer, dem Sie die Rolle zuweisen möchten, oder klicken Sie auf die Schaltfläche Nutzer erstellen.
  3. So weisen Sie einem vorhandenen Nutzer die SIEM-Rolle zu:
    • Öffnen Sie das Konto des Nutzers und klicken Sie auf den Tab Rollen bearbeiten.
    • Suchen Sie die entsprechende Gruppe, klicken Sie auf das Menü Rollen und wählen Sie die Rolle SIEM verwalten aus.
    • Klicken Sie auf Senden.
  4. So weisen Sie einem neuen Nutzer die SIEM-Rolle zu:
    • Klicken Sie auf Nutzer erstellen.
    • Geben Sie die grundlegenden Informationen für den Nutzer ein und rufen Sie den Bereich Rollen zuweisen auf.
    • Suchen Sie die entsprechende Gruppe, klicken Sie auf das Menü Rollen und wählen Sie die Rolle SIEM verwalten aus.
    • Klicken Sie auf Speichern.

SIEM API-Anmeldedaten im Akamai Control Center bereitstellen

  1. Rufen Sie die Seite Authentifizierungsanmeldedaten erstellen in der Akamai-Dokumentation auf.
  2. Folgen Sie der Anleitung, um die SIEM API für den Nutzer bereitzustellen, dem Sie die Verwaltung von SIEM zugewiesen haben.
  3. Kopieren und speichern Sie die folgenden Anmeldedaten sicher:
    • Access Token
    • Client-Token
    • Client-Secret
    • Basis-URL

Akamai CEF Connector installieren

  1. Laden Sie auf Ihrem Linux-Server das aktuelle CEF Connector-Distributionspaket aus dem Akamai GitHub-Repository herunter.
  2. Übertragen Sie das Paket entweder mit wget oder SFTP auf Ihren Server.
  3. Prüfen Sie den SHA256-Hash der heruntergeladenen Datei, um die Integrität sicherzustellen.
  4. Extrahieren Sie das Vertriebspaket:

    unzip CEFConnector-<version>.zip
    
  5. Wechseln Sie zum extrahierten Verzeichnis:

    cd CEFConnector-<version>
    
  6. Erstellen Sie einen symbolischen Link zum Startskript, um den Dienst zu installieren:

    sudo ln -s /path/to/CEFConnector-<version>/bin/AkamaiCEFConnector.sh /etc/init.d/AkamaiCEFConnector
    

Akamai CEF Connector konfigurieren

  1. Rufen Sie das Verzeichnis config in der CEF Connector-Installation auf:

    cd config
    
  2. Öffnen Sie die Datei CEFConnector.properties mit einem Texteditor (z. B. nano oder vi):

    sudo nano CEFConnector.properties
    
  3. Konfigurieren Sie die folgenden erforderlichen Parameter:

    # Akamai API Configuration
    akamai.data.requesturlhost=https://cloudsecurity.akamaiapis.net
    akamai.data.configs=<YOUR_SECURITY_CONFIG_ID>
    akamai.data.timebased=false
    akamai.data.limit=200000
    
    # API Credentials (from Step: Provision SIEM API credentials)
    akamai.data.accesstoken=<YOUR_ACCESS_TOKEN>
    akamai.data.clienttoken=<YOUR_CLIENT_TOKEN>
    akamai.data.clientsecret=<YOUR_CLIENT_SECRET>
    akamai.data.baseurl=<YOUR_BASE_URL>
    
    # CEF Format Configuration
    akamai.cefformatheader=CEF:0|Akamai|akamai_siem|1.0|eventClassId()|name()|severity()
    
    akamai.cefformatextension=act=appliedAction() app=${httpMessage.protocol} c6a2=ipv6src() c6a2Label="Source IPv6 Address" cs1=${attackData.rules} cs1Label="Rules" cs2=${attackData.ruleMessages} cs2Label="Rule Messages" cs3=${attackData.ruleData} cs3Label="Rule Data" cs4=${attackData.ruleSelectors} cs4Label="Rule Selectors" cs5=${attackData.clientReputation} cs5Label="Client Reputation" cs6=${attackData.apiId} cs6Label="API ID" devicePayloadId=${httpMessage.requestId} dhost=${httpMessage.host} dpt=${httpMessage.port} flexString1=${attackData.configId} flexString1Label="Security Config ID" flexString2=${attackData.policyId} flexString2Label="Firewall Policy Id" out=${httpMessage.bytes} request=requestURL() requestMethod=${httpMessage.method} src=${attackData.clientIP} start=${httpMessage.start} AkamaiSiemSlowPostAction=${attackData.slowPostAction} AkamaiSiemSlowPostRate=${attackData.slowPostRate} AkamaiSiemRuleVersions=${attackData.ruleVersions} AkamaiSiemRuleTags=${attackData.ruleTags} AkamaiSiemJA4=${identity.ja4} AkamaiSiemRuleActions=${attackData.ruleActions}
    
    # Connector Pull Configuration
    connector.refresh.period=60
    connector.consumer.count=3
    connector.retry=5
    
    # Proxy Configuration (if applicable)
    # connector.proxy.host=
    # connector.proxy.port=
    
  4. Ersetzen Sie die folgenden Platzhalter durch Ihre tatsächlichen Werte:

    • <YOUR_SECURITY_CONFIG_ID>: Die ID der Web Security-Konfiguration, die Sie zuvor kopiert haben. Bei mehreren Konfigurationen trennen Sie die IDs durch Semikolons (z. B. 12345;67890).
    • <YOUR_ACCESS_TOKEN>: Das Zugriffstoken aus den Akamai-API-Anmeldedaten
    • <YOUR_CLIENT_TOKEN>: Das Client-Token aus den Akamai API-Anmeldedaten.
    • <YOUR_CLIENT_SECRET>: Der Clientschlüssel aus den Akamai API-Anmeldedaten.
    • <YOUR_BASE_URL>: Die Basis-URL aus den Akamai-API-Anmeldedaten
  5. Speichern und schließen Sie die Datei.

CEF-Connector-Logging konfigurieren

  1. Rufen Sie das Verzeichnis config in der CEF Connector-Installation auf.
  2. Öffnen Sie die Datei log4j2.xml mit einem Texteditor:

    sudo nano log4j2.xml
    
  3. Konfigurieren Sie die folgenden Parameter für die Syslog-Ausgabe an Bindplane:

    <!-- Syslog Appender Configuration -->
    <Syslog name="SyslogAppender" 
            host="<BINDPLANE_IP_ADDRESS>" 
            port="<BINDPLANE_PORT>" 
            protocol="<PROTOCOL>" 
            facility="LOCAL0"
            format="RFC5424">
        <PatternLayout pattern="%m%n"/>
    </Syslog>
    
  4. Ersetzen Sie die folgenden Platzhalter:

    • <BINDPLANE_IP_ADDRESS>: Die IP-Adresse des Servers, auf dem der Bindplane-Agent installiert ist.
    • <BINDPLANE_PORT>: Die Portnummer, an der der Bindplane-Agent auf Anfragen wartet (z. B. 514 für UDP oder 601 für TCP)
    • <PROTOCOL>: Wählen Sie entweder UDP oder TCP aus.
  5. Achten Sie darauf, dass der CEF-Connector Logs an den Remote-Syslog-Server (BindPpane) sendet, indem Sie die CEF-spezifischen Einstellungen konfigurieren:

    # In CEFConnector.properties, ensure these are set:
    # Note: These settings are typically in log4j2.xml but referenced here for clarity
    
  6. Speichern und schließen Sie die Datei.

Akamai CEF-Connector starten

  1. Starten Sie den CEF-Connector-Dienst:

    sudo /etc/init.d/AkamaiCEFConnector start
    
  2. Prüfen Sie, ob der Dienst ausgeführt wird:

    sudo /etc/init.d/AkamaiCEFConnector status
    
  3. Prüfen Sie die Logs, um sicherzustellen, dass der Connector Ereignisse von Akamai abruft und an Bindplane sendet:

    tail -f /path/to/CEFConnector-<version>/bin/logs/cefconnector.log
    

BindPlane-Agent installieren

Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.

Fenstereinbau

  1. Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
  2. Führen Sie dazu diesen Befehl aus:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux-Installation

  1. Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
  2. Führen Sie dazu diesen Befehl aus:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Zusätzliche Installationsressourcen

BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren

  1. Konfigurationsdatei aufrufen:

    1. Suchen Sie die Datei config.yaml. Normalerweise befindet sie sich unter Linux im Verzeichnis /etc/bindplane-agent/ oder unter Windows im Installationsverzeichnis.
    2. Öffnen Sie die Datei mit einem Texteditor (z. B. nano, vi oder Notepad).
  2. Bearbeiten Sie die Datei config.yamlso:

    receivers:
        udplog:
          # Replace the port and IP address as required
          listen_address: "0.0.0.0:514"
        tcplog:
          # Alternative TCP receiver if using TCP protocol
          listen_address: "0.0.0.0:601"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in the Get ingestion authentication file section
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from the Get customer ID section
        customer_id: <YOUR_CUSTOMER_ID>
        # Select the appropriate regional endpoint based on where your Google SecOps instance is provisioned
        # For regional endpoints, see: https://cloud.google.com/chronicle/docs/reference/ingestion-api#regional_endpoints
        endpoint: malachiteingestion-pa.googleapis.com
        # Set the log_type to ensure the correct parser is applied
        log_type: 'AKAMAI_WAF'
        raw_log_field: body
        # Add optional ingestion labels for better organization
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
            # - tcplog  # Uncomment if using TCP
          exporters:
            - chronicle/chronicle_w_labels
    

Bindplane-Agent neu starten, um die Änderungen zu übernehmen

  • Führen Sie den folgenden Befehl aus, um den Bindplane-Agent unter Linux neu zu starten:

    sudo systemctl restart bindplane-agent
    
  • Um den Bindplane-Agent unter Windows neu zu starten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Logaufnahme prüfen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die Suche oder den Rohlog-Scan auf.
  3. So suchen Sie mit dem Erfassungslabel nach aktuellen Akamai WAF-Logs:

    metadata.log_type = "AKAMAI_WAF"
    
  4. Prüfen Sie, ob die Logs mit den erwarteten Feldern und Zeitstempeln angezeigt werden.

  5. Prüfen Sie, ob die Felder im CEF-Format richtig geparst und UDM zugeordnet werden.

Fehlerbehebung

Probleme mit dem CEF-Connector

  • Keine Ereignisse werden abgerufen: Prüfen Sie die Datei cefconnector.log auf Fehler. Prüfen Sie, ob die Akamai-API-Anmeldedaten korrekt und die Sicherheitskonfigurations-IDs gültig sind.
  • Verbindungsfehler: Prüfen Sie, ob die Proxyeinstellungen (falls zutreffend) korrekt konfiguriert sind und die erforderlichen Domains auf der Zulassungsliste stehen.
  • Datenbank zurücksetzen: Wenn Sie das Offset-Tracking zurücksetzen müssen, führen Sie Folgendes aus:

    sudo /etc/init.d/AkamaiCEFConnector resetdb
    

Probleme mit Bindplane-Agent

  • Protokolle erreichen Bindplane nicht: Prüfen Sie, ob der CEF-Connector so konfiguriert ist, dass Syslog an die richtige Bindplane-IP-Adresse und den richtigen Port gesendet wird. Prüfen Sie die Firewallregeln zwischen dem CEF-Connector und dem Bindplane-Agent.
  • Protokolle erreichen Google SecOps nicht: Prüfen Sie die Bindplane-Konfigurationsdatei, die Kunden-ID und den Authentifizierungspfad für die Aufnahme. Bindplane-Logs auf Fehler prüfen:

    sudo journalctl -u observiq-otel-collector -f
    

Netzwerk und Verbindung

  • Prüfen Sie, ob der CEF-Connector die Akamai SIEM API-Endpunkte erreichen kann.
  • Prüfen Sie, ob der Bindplane-Agent den Google SecOps-Aufnahmeendpunkt (malachiteingestion-pa.googleapis.com) erreichen kann.
  • Prüfen Sie, ob alle erforderlichen Firewallports geöffnet sind.

Vergangene Sicherheitsereignisse abrufen

Der Akamai CEF Connector kann in zwei Modi betrieben werden:

  • Offsetbasiert (empfohlen): Der Connector protokolliert Sicherheitsereignisse automatisch, sobald sie nahezu in Echtzeit erfasst werden. Dies ist der Standardmodus, wenn akamai.data.timebased auf false festgelegt ist.
  • Zeitbasiert: Damit können Sie Ereignisse abrufen, die innerhalb eines bestimmten Zeitraums (bis zu 12 Stunden in der Vergangenheit) aufgetreten sind.

So rufen Sie fehlende oder vergangene Sicherheitsereignisse ab:

  1. Öffnen Sie die Konfigurationsdatei des Connectors:

    sudo nano /path/to/CEFConnector-<version>/config/CEFConnector.properties
    
  2. Zeitbasierte Konfiguration ändern:

    akamai.data.timebased=true
    akamai.data.timebased.from=<EPOCH_START_TIME>
    akamai.data.timebased.to=<EPOCH_END_TIME>
    
    • Ersetzen Sie <EPOCH_START_TIME> durch die Startzeit im Epoch-Format (innerhalb der letzten 12 Stunden).
    • Ersetzen Sie <EPOCH_END_TIME> durch die Endzeit im Epoch-Format (optional; wenn leer gelassen, werden Ereignisse bis zur Gegenwart abgerufen).
  3. Starten Sie den CEF-Connector neu:

    sudo /etc/init.d/AkamaiCEFConnector restart
    
  4. Nachdem die Verlaufsdaten abgerufen wurden, kehren Sie zum Offset-Modus zurück:

    akamai.data.timebased=false
    
  5. Starten Sie den CEF-Connector neu.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
src (attackData.clientIP) principal.ip Quell-IP-Adresse des Clients, der die Anfrage stellt
c6a2 (ipv6src) principal.ip IPv6-Quelladresse, wenn „attackData.clientIP“ im IPv6-Format ist
dhost (httpMessage.host) target.hostname Hostname aus dem HTTP-HOST-Header
dpt (httpMessage.port) target.port Portnummer, die von der eingehenden Anfrage verwendet wird
requestMethod (httpMessage.method) network.http.method HTTP-Methode der eingehenden Anfrage (GET, POST usw.)
request (requestURL) target.url Vollständige URL aus httpMessage-Feldern berechnen
cs1 (attackData.rules) security_result.rule_id Regel-IDs der Regeln, die für diese Anfrage ausgelöst wurden
cs2 (attackData.ruleMessages) security_result.rule_name Meldungen zu ausgelösten Regeln
act (appliedAction) security_result.action Ergriffene Maßnahme (Warnung, Ablehnen, Abbrechen usw.)
severity security_result.severity Berechneter Schweregrad (5 für „Erkennen“, 10 für „Reduzieren“)
cs5 (attackData.clientReputation) security_result.threat_name Client-IP-Bewertungen für Client Reputation
cs6 (attackData.apiId) security_result.detection_fields API-ID für API-Schutz
start (httpMessage.start) metadata.event_timestamp Zeitpunkt, zu dem der Edge-Server die Verbindung initiiert hat (Epochenformat)
devicePayloadId (httpMessage.requestId) metadata.product_log_id Global eindeutige ID der Nachricht
flexString1 (attackData.configId) security_result.detection_fields ID der Sicherheitskonfiguration, die auf diese Anfrage angewendet wurde
flexString2 (attackData.policyId) security_result.detection_fields ID der Firewallrichtlinie, die auf diese Anfrage angewendet wird
AkamaiSiemJA4 (identity.ja4) network.tls.client.ja3 JA4-Client-TLS-Fingerabdruck

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