Akamai-WAF-Protokolle erfassen

Unterstützt in:

Übersicht

Dieser Parser verarbeitet Akamai Web Application Firewall (WAF)-Protokolle und unterstützt sowohl syslog- als auch CEF-Formate. Es werden Felder wie IP-Adressen, URLs, HTTP-Methoden, Antwortcodes, User-Agents und Informationen zu Sicherheitsregeln extrahiert und dem UDM für eine einheitliche Darstellung zugeordnet. Der Parser verarbeitet auch bestimmte Akamai-Felder wie attackData und clientReputation, führt die erforderlichen Datentransformationen durch und ergänzt die UDM-Ausgabe.

Hinweis

  • Sie benötigen eine Google SecOps-Instanz.
  • Sie benötigen Berechtigungen für AWS IAM und S3.
  • Sie benötigen erhöhte Zugriffsrechte für Akamai.

Amazon S3-Bucket konfigurieren

  1. Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu dieser Anleitung: Bucket erstellen.
  2. Notieren Sie sich den Namen und die Region des Buckets für später.
  3. Erstellen Sie einen Nutzer. Folgen Sie dazu der Anleitung unter IAM-Nutzer erstellen.
  4. Wählen Sie den erstellten Nutzer aus.
  5. Wählen Sie den Tab Sicherheitsanmeldedaten aus.
  6. Klicken Sie im Bereich Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
  7. Wählen Sie als Anwendungsfall Drittanbieterdienst aus.
  8. Klicken Sie auf Weiter.
  9. Optional: Fügen Sie ein Beschreibungs-Tag hinzu.
  10. Klicken Sie auf Zugriffsschlüssel erstellen.
  11. Klicken Sie auf CSV-Datei herunterladen. Speichern Sie den Zugriffsschlüssel und den geheimen Zugriffsschlüssel für später.
  12. Klicken Sie auf Fertig.
  13. Wählen Sie den Tab Berechtigungen aus.
  14. Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
  15. Wählen Sie Berechtigungen hinzufügen aus.
  16. Wählen Sie Richtlinien direkt anhängen aus.
  17. Suchen Sie nach der Richtlinie AmazonS3FullAccess.
  18. Wählen Sie die Richtlinie aus.
  19. Klicken Sie auf Weiter.
  20. Klicken Sie auf Berechtigungen hinzufügen.

Akamai WAF so konfigurieren, dass Protokolle an Amazon S3 gesendet werden

  1. Melden Sie sich im Akamai Control Center an.
  2. Gehen Sie zum Abschnitt Sicherheit.
  3. Wählen Sie Protokolle aus.
  4. So konfigurieren Sie eine neue Log Delivery:

    • Protokollquelle:Wählen Sie Ihre WAF-Konfiguration aus.
    • Zustellungsziel:Wählen Sie Amazon S3 aus.
    • S3-Bucket:Geben Sie den Namen des von Ihnen erstellten S3-Buckets an.
    • Region:Wählen Sie die AWS-Region aus, in der sich Ihr S3-Bucket befindet.
    • Zugriffsschlüssel-ID und geheimer Zugriffsschlüssel:Geben Sie die von Ihnen generierten Anmeldedaten ein.
    • Protokollformat:Wählen Sie das relevante Protokollformat aus, z. B. JSON.
    • Auslieferungshäufigkeit:Wählen Sie die gewünschte Häufigkeit für die Protokollauslieferung aus, z. B. alle 5 Minuten.
  5. Logzustellung prüfen:

    • Überwachen Sie nach der Konfiguration von LDS den S3-Bucket auf eingehende Protokolldateien.

Feed in Google SecOps für die Aufnahme von Akamai-WAF-Logs konfigurieren

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Akamai WAF-Logs.
  4. Wählen Sie als Quelltyp Amazon S3 aus.
  5. Wählen Sie Akamai WAF als Logtyp aus.
  6. Klicken Sie auf Weiter.
  7. 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. s3:/BUCKET_NAME Ersetzen Sie Folgendes:
      • BUCKET_NAME: der Name des Buckets.
    • URI ist: Wählen Sie den URI-TYP gemäß der Konfiguration des Protokollstreams aus: Einzelne Datei | Verzeichnis | Verzeichnis mit Unterverzeichnissen.
    • Optionen zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.
    • Access Key ID: Der Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.
    • Secret Access Key: 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.
  8. Klicken Sie auf Weiter.

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

UDM-Zuordnungstabelle

Logfeld (aufsteigend) UDM-Zuordnung Logik
attackData.clientIP principal.ip, principal.asset.ip IP-Adresse des Clients, der die Anfrage initiiert. Aus dem Feld attackData.clientIP in den akamai_siem-Protokollen extrahiert.
attackData.configId metadata.product_log_id Sicherheitskonfigurations-ID. Aus dem Feld attackData.configId in den akamai_siem-Protokollen extrahiert. Wird auch als detection_field im security_result-Objekt hinzugefügt.
attackData.policyId Wird in der Parserlogik verwendet, um security_result.summary mit dem Wert „PolicyId:[value]“ zu füllen.
attackData.ruleActions security_result.action, security_result.action_details Aktionen, die aufgrund der ausgelösten Regel ausgeführt wurden. Aus dem Feld attackData.ruleActions in den akamai_siem-Protokollen extrahiert. „deny“ wird BLOCK zugeordnet, andere Werte („alert“, „monitor“, „allow“, „tarpit“) werden ALLOW zugeordnet. Der ursprüngliche Wert wird auch in action_details gespeichert.
attackData.ruleData security_result.detection_fields Daten, die mit der ausgelösten Regel verknüpft sind. Aus dem Feld attackData.ruleData in den akamai_siem-Protokollen extrahiert. Dem Datensatz security_result.detection_fields mit dem Schlüssel „RuleData“ hinzugefügt.
attackData.ruleMessages security_result.threat_name Nachrichten, die mit der ausgelösten Regel verknüpft sind. Aus dem Feld attackData.ruleMessages in den akamai_siem-Protokollen extrahiert.
attackData.ruleSelectors security_result.detection_fields Mit der ausgelösten Regel verknüpfte Auslöser. Aus dem Feld attackData.ruleSelectors in den akamai_siem-Protokollen extrahiert. Dem Element security_result.detection_fields mit dem Schlüssel „RuleSelector“ hinzugefügt.
attackData.ruleTags security_result.category_details Tags, die mit der ausgelösten Regel verknüpft sind. Aus dem Feld attackData.ruleTags in den akamai_siem-Protokollen extrahiert.
attackData.ruleVersions security_result.detection_fields Versionen der ausgelösten Regeln. Aus dem Feld attackData.ruleVersions in den akamai_siem-Protokollen extrahiert. Wurde security_result.detection_fields mit dem Schlüssel „Rule Version“ hinzugefügt.
clientReputation principal.labels Informationen zum Ruf des Kunden. Aus dem Feld clientReputation in den akamai_siem-Protokollen extrahiert. Dem Principal mit dem Schlüssel „reputation“ als Label hinzugefügt.
cliIP, cli_ip, principal_ip principal.ip, principal.asset.ip IP-Adresse des Clients. Je nach Log-Format aus cliIP, cli_ip oder principal_ip extrahiert.
cp additional.fields CP-Code Aus dem Feld cp extrahiert. Dem additional.fields-Element mit dem Schlüssel „cp“ hinzugefügt.
eventId metadata.product_log_id Ereignis-ID. Aus dem Feld eventId extrahiert.
eventTime, log_date metadata.event_timestamp Zeitstempel des Ereignisses. Je nach Log-Format aus eventTime extrahiert oder aus log_date geparst.
eventType.eventDefinition.eventDefinitionId target.resource.product_object_id ID der Ereignisdefinition. Aus eventType.eventDefinition.eventDefinitionId extrahiert.
eventType.eventDefinition.eventDescription metadata.description Beschreibung des Termins. Aus eventType.eventDefinition.eventDescription extrahiert.
eventType.eventDefinition.eventName metadata.product_event_type Ereignisname. Aus eventType.eventDefinition.eventName extrahiert.
eventType.eventTypeId additional.fields Ereignistyp-ID. Aus eventType.eventTypeId extrahiert. Wurde additional.fields mit dem Schlüssel „eventTypeId“ hinzugefügt.
eventType.eventTypeName additional.fields Name des Ereignistyps. Aus eventType.eventTypeName extrahiert. Wurde additional.fields mit dem Schlüssel „eventTypeName“ hinzugefügt.
format Wird vom Parser verwendet, um das Protokollformat zu ermitteln.
geo.asn principal.location.name Autonomous System Number (ASN). Je nach Log-Format aus geo.asn oder AkamaiSiemASN extrahiert. Dem Wert wird das Präfix „ASN“ vorangestellt.
geo.city principal.location.city Ort: Je nach Log-Format aus geo.city oder AkamaiSiemCity extrahiert.
geo.country principal.location.country_or_region Land Je nach Log-Format aus geo.country oder AkamaiSiemContinent extrahiert.
httpMessage.bytes network.sent_bytes In der HTTP-Nachricht gesendete Bytes. Aus httpMessage.bytes extrahiert.
httpMessage.host target.hostname, target.asset.hostname Hostname. Je nach Log-Format aus httpMessage.host oder reqHost extrahiert.
httpMessage.method network.http.method HTTP-Methode. Je nach Log-Format aus httpMessage.method, network_http_method oder reqMethod extrahiert. In Großbuchstaben umgewandelt.
httpMessage.path target.url Anfragepfad. Je nach Log-Format aus httpMessage.path, target_url oder reqPath extrahiert. Wenn httpMessage.query vorhanden ist, wird es mit einem Trennzeichen „?“ an den Pfad angehängt.
httpMessage.port target.port Port. Je nach Log-Format aus httpMessage.port oder reqPort extrahiert.
httpMessage.protocol Wird vom Parser verwendet, um das Protokoll zu bestimmen.
httpMessage.query Wird in der Parserlogik verwendet, um httpMessage.path anzuschließen, falls vorhanden.
httpMessage.requestId network.session_id Anfrage-ID. Je nach Log-Format aus httpMessage.requestId oder reqId extrahiert.
httpMessage.requestHeaders, AkamaiSiemRequestHeaders additional.fields Anfrageheader Je nach Log-Format aus httpMessage.requestHeaders oder AkamaiSiemRequestHeaders extrahiert. Zu additional.fields mit dem Schlüssel „AkamaiSiemRequestHeaders“ hinzugefügt.
httpMessage.responseHeaders, AkamaiSiemResponseHeaders additional.fields Antwortheader Je nach Log-Format aus httpMessage.responseHeaders oder AkamaiSiemResponseHeaders extrahiert. Wurde additional.fields mit dem Schlüssel „AkamaiSiemResponseHeaders“ hinzugefügt.
httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code, statusCode network.http.response_code HTTP-Antwortcode. Je nach Protokollformat aus httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code oder statusCode extrahiert.
httpMessage.tls, AkamaiSiemTLSVersion, tlsVersion network.tls.version TLS-Version Je nach Log-Format aus httpMessage.tls, AkamaiSiemTLSVersion oder tlsVersion extrahiert.
httpMessage.useragent, network_http_user_agent, UA, useragent network.http.user_agent User-Agent Je nach Protokollformat aus httpMessage.useragent, network_http_user_agent, UA oder useragent extrahiert.
log_description metadata.description Logbeschreibung. Aus log_description extrahiert.
log_rule security_result.rule_name Protokollregel Aus log_rule extrahiert.
message Die Roh-Lognachricht. Wird vom Parser für verschiedene Extraktionen verwendet.
network_http_referral_url network.http.referral_url HTTP-Referrer-URL. Aus network_http_referral_url extrahiert.
proto Wird in der Parserlogik verwendet, um security_result.summary zu füllen, wenn attackData.policyId nicht vorhanden ist.
reqHost target.hostname, target.asset.hostname Host anfordern Aus reqHost extrahiert.
reqId metadata.product_log_id, network.session_id Anfrage-ID. Aus reqId extrahiert.
reqMethod network.http.method Anfragemethode. Aus reqMethod extrahiert.
reqPath target.url Anfragepfad. Aus reqPath extrahiert.
reqPort target.port Port anfordern. Aus reqPort extrahiert.
rspContentType target.file.mime_type Antwortinhaltstyp. Aus rspContentType extrahiert.
securityRules security_result.rule_name, security_result.about.resource.attribute.labels Sicherheitsregeln. Aus securityRules extrahiert. Der erste Teil wird rule_name zugeordnet und der Rest wird als Label mit den Schlüsseln „non_deny_rules“ und „deny_rule_format“ hinzugefügt.
statusCode network.http.response_code Statuscode Aus statusCode extrahiert.
state principal.location.state, target.user.personal_address.state Bundesstaat. Aus state extrahiert.
tlsVersion network.tls.version TLS-Version Aus tlsVersion extrahiert.
type metadata.product_event_type Ereignistyp. Aus type extrahiert.
UA network.http.user_agent User-Agent Aus UA extrahiert.
version metadata.product_version, principal.asset.software.version Version. Aus version extrahiert.
metadata.event_timestamp Der Ereigniszeitstempel wird aus dem Feld _ts in akamai_lds-Protokollen, dem Feld httpMessage.start in akamai_siem-Protokollen oder dem Feld log_date in anderen Formaten abgeleitet.
metadata.vendor_name „Akamai“ ist hartcodiert.
metadata.product_name Hartcodiert auf „Kona“.
metadata.log_type Hartcodiert auf „AKAMAI_WAF“.
network.application_protocol Legen Sie „HTTP“ für akamai_siem- und akamai_lds-Protokolle oder „DNS“ für andere Formate fest.
security_result.severity Legen Sie für die Aktion „Benachrichtigen“ den Wert „MITTEL“, für die Aktion „Ablehnen“ den Wert „KRITISCH“ und für andere Aktionen den Wert „HOCH“ fest.
event.idm.read_only_udm.metadata.event_type Legen Sie für die meisten Protokollformate „NETWORK_HTTP“, für Ereignisse mit eventId- oder eventData-Feldern „GENERIC_EVENT“ oder für Ereignisse mit cli_ip- oder p_ip-, aber ohne reqHost-Feld „STATUS_UPDATE“ fest.

Änderungen

2024-05-21

  • Optimierung
  • „rules.data“ wurde in „security_result.detection_fields“ umgewandelt.
  • „rules.action“, „rules.selector“ und „rules.version“ wurden in „security_result.action_details“ umgewandelt.
  • „rules.id“ wurde zu „security_result.rule_id“ zugeordnet,
  • „rules.tag“ wurde in „security_result.category_details“ geändert.
  • „rules.message“ wurde in „security_result.threat_name“ geändert.

2024-03-01

  • Optimierung
  • „attackData.configId“ wurde auf „metadata.product_log_id“ und „security_result.detection_fields“ zugeordnet.

2023-10-27

  • Optimierung
  • „rule.id“ wurde in „security_result.rule_id“ umgewandelt.
  • Wenn „httpMessage.host“ nicht vorhanden ist, wurde der Wert in „metadata.event_type“ von „NETWORK_HTTP“ in „GENERIC_EVENT“ geändert.
  • Unterstützung für das Parsen von „attackData“ hinzugefügt, wenn „attackData.rules“ ein Array ist.

2023-04-24

  • Optimierung
  • Geparste Protokolle, die im CEF-Format aufgenommen wurden.

2023-04-04

  • Optimierung
  • „reqHost“ wurde „target.hostname“ zugeordnet.
  • „reqPort“ wurde „target.port“ zugeordnet.
  • „reqPath“ wurde „target.url“ zugeordnet.
  • „reqId“ wurde „network.session_id“ zugeordnet.
  • „statusCode“ wurde in „network.http.response_code“ umgewandelt.
  • „reqMethod“ wurde „network.http.method“ zugeordnet.
  • „UA“ wurde „network.http.user_agent“ zugeordnet.
  • „bytes“ wurde in „network.sent_bytes“ geändert.
  • „reqMethod“ wurde „network.http.method“ zugeordnet.
  • Geparste fehlerhafte Protokolle im syslog-Format.
  • Es wurden Bedingungsüberprüfungen für „attackData.rules“ hinzugefügt, um das korrekte Parsen zu ermöglichen.
  • „metadata.event_type“ wurde nach Möglichkeit von „STATUS_UPDATE“ in „NETWORK_HTTP“ geändert.

2022-08-12

  • Optimierung
  • „security_policy_id“ wurde auf „security_result.rule_name“ zugeordnet.
  • „non_deny_rules“ wurde in „security_result.about.resource.attribute.labels“ zugeordnet.
  • „deny_rule_format“ wurde security_result.about.resource.attribute.labels zugeordnet.

2022-11-07

  • Optimierung
  • Aktualisieren Sie die Sicherheitsregeln, damit [-] auch in den Daten geprüft wird.

2022-06-14

  • Optimierung
  • security_rules wurde security_result.rule_name zugeordnet.
  • Stadt wurde principal.location.city zugeordnet.
  • Das Land wurde principal.location.country_or_region zugeordnet.
  • cli_ip wurde principal.ip zugeordnet.
  • „Bundesland“ wurde „target.user.personal_address.state“ zugeordnet.
  • Zugeordnete Version zu „metadata.product_version“.
  • User-Agent wurde network.http.user_agent zugeordnet.

2022-06-14

  • Enhancement-
  • „proto“ wurde auf „security_result.summary“ zugeordnet.
  • securityRules wurde security_result.rule_name zugeordnet.
  • Stadt wurde principal.location.city zugeordnet.
  • Das Land wurde principal.location.country_or_region zugeordnet.
  • cliIP wurde principal.ip zugeordnet.
  • „cp“ wurde auf „event.idm.read_only_udm.additional.fields“ zugeordnet.
  • „reqId“ wurde mit „metadata.product_log_id“ abgeglichen.
  • rspContentType wurde auf target.file.mime_type zugeordnet.
  • „Bundesland“ wurde „target.user.personal_address.state“ zugeordnet.
  • Zugeordnete Version zu principal.asset.software.version.

2022-03-23

  • Fehlerbehebung: Daten konnten nicht mit allen Abgleichmustern geparst werden.
  • Es wurden Zuordnungen für neue Felder hinzugefügt.
  • eventId muss mit metadata.product_log_id übereinstimmen.
  • eventDefinitionId ist mit target.resource.product_object_id verknüpft.
  • „eventDescription“ ist „metadata.description“ zugeordnet.
  • „eventName“ ist „metadata.product_event_type“ zugeordnet.
  • eventTypeName ist „additional.fields“ zugeordnet.
  • eventTypeId ist „additional.fields“ zugeordnet.
  • „eventData“ ist „additional.fields“ zugeordnet.