Akamai WAF-Logs erfassen
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.netund*.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
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
- 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
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Profile auf.
- Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
SIEM-Integration im Akamai Control Center aktivieren
- Melden Sie sich im Akamai Control Center an.
- Klicken Sie unter WEB- UND DATENCENTER-SICHERHEIT auf Sicherheitskonfiguration.
- Öffnen Sie die Sicherheitskonfiguration und die entsprechende Version, für die Sie SIEM-Daten erfassen möchten.
- Klicken Sie auf Erweiterte Einstellungen und maximieren Sie Datenerhebung für SIEM-Integrationen.
- Klicken Sie auf Ein, um SIEM zu aktivieren.
- 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.
- Optional: Wenn Sie Account Protector verwenden und den unverschlüsselten Nutzernamen einbeziehen möchten, aktivieren Sie das Kästchen Nutzernamen einbeziehen.
- 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).
- 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.
- Kopieren Sie den Wert im Feld Web Security Configuration ID (ID der Web-Sicherheitskonfiguration). Speichern Sie diese ID zur späteren Verwendung.
- 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
- Klicken Sie im Akamai Control Center unter ACCOUNT ADMIN (Kontoadministrator) auf Identity & access (Identität und Zugriff).
- 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.
- 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.
- 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
- Rufen Sie die Seite Authentifizierungsanmeldedaten erstellen in der Akamai-Dokumentation auf.
- Folgen Sie der Anleitung, um die SIEM API für den Nutzer bereitzustellen, dem Sie die Verwaltung von SIEM zugewiesen haben.
- Kopieren und speichern Sie die folgenden Anmeldedaten sicher:
- Access Token
- Client-Token
- Client-Secret
- Basis-URL
Akamai CEF Connector installieren
- Laden Sie auf Ihrem Linux-Server das aktuelle CEF Connector-Distributionspaket aus dem Akamai GitHub-Repository herunter.
- Übertragen Sie das Paket entweder mit
wgetoder SFTP auf Ihren Server. - Prüfen Sie den SHA256-Hash der heruntergeladenen Datei, um die Integrität sicherzustellen.
Extrahieren Sie das Vertriebspaket:
unzip CEFConnector-<version>.zipWechseln Sie zum extrahierten Verzeichnis:
cd CEFConnector-<version>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
Rufen Sie das Verzeichnis
configin der CEF Connector-Installation auf:cd configÖffnen Sie die Datei
CEFConnector.propertiesmit einem Texteditor (z. B.nanoodervi):sudo nano CEFConnector.propertiesKonfigurieren 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=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
Speichern und schließen Sie die Datei.
CEF-Connector-Logging konfigurieren
- Rufen Sie das Verzeichnis
configin der CEF Connector-Installation auf. Öffnen Sie die Datei
log4j2.xmlmit einem Texteditor:sudo nano log4j2.xmlKonfigurieren 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>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.514für UDP oder601für TCP)<PROTOCOL>: Wählen Sie entwederUDPoderTCPaus.
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 claritySpeichern und schließen Sie die Datei.
Akamai CEF-Connector starten
Starten Sie den CEF-Connector-Dienst:
sudo /etc/init.d/AkamaiCEFConnector startPrüfen Sie, ob der Dienst ausgeführt wird:
sudo /etc/init.d/AkamaiCEFConnector statusPrü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
- Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
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
- Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
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
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
Konfigurationsdatei aufrufen:
- Suchen Sie die Datei
config.yaml. Normalerweise befindet sie sich unter Linux im Verzeichnis/etc/bindplane-agent/oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor (z. B.
nano,vioder Notepad).
- Suchen Sie die Datei
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-agentUm 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
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die Suche oder den Rohlog-Scan auf.
So suchen Sie mit dem Erfassungslabel nach aktuellen Akamai WAF-Logs:
metadata.log_type = "AKAMAI_WAF"Prüfen Sie, ob die Logs mit den erwarteten Feldern und Zeitstempeln angezeigt werden.
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.logauf 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.timebasedauffalsefestgelegt 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:
Öffnen Sie die Konfigurationsdatei des Connectors:
sudo nano /path/to/CEFConnector-<version>/config/CEFConnector.propertiesZeitbasierte 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).
- Ersetzen Sie
Starten Sie den CEF-Connector neu:
sudo /etc/init.d/AkamaiCEFConnector restartNachdem die Verlaufsdaten abgerufen wurden, kehren Sie zum Offset-Modus zurück:
akamai.data.timebased=falseStarten 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