Akamai-WAF-Protokolle erfassen
Ü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
- Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu dieser Anleitung: Bucket erstellen.
- Notieren Sie sich den Namen und die Region des Buckets für später.
- Erstellen Sie einen Nutzer. Folgen Sie dazu der Anleitung unter IAM-Nutzer erstellen.
- Wählen Sie den erstellten Nutzer aus.
- Wählen Sie den Tab Sicherheitsanmeldedaten aus.
- Klicken Sie im Bereich Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
- Wählen Sie als Anwendungsfall Drittanbieterdienst aus.
- Klicken Sie auf Weiter.
- Optional: Fügen Sie ein Beschreibungs-Tag hinzu.
- Klicken Sie auf Zugriffsschlüssel erstellen.
- Klicken Sie auf CSV-Datei herunterladen. Speichern Sie den Zugriffsschlüssel und den geheimen Zugriffsschlüssel für später.
- Klicken Sie auf Fertig.
- Wählen Sie den Tab Berechtigungen aus.
- Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
- Wählen Sie Berechtigungen hinzufügen aus.
- Wählen Sie Richtlinien direkt anhängen aus.
- Suchen Sie nach der Richtlinie AmazonS3FullAccess.
- Wählen Sie die Richtlinie aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Berechtigungen hinzufügen.
Akamai WAF so konfigurieren, dass Protokolle an Amazon S3 gesendet werden
- Melden Sie sich im Akamai Control Center an.
- Gehen Sie zum Abschnitt Sicherheit.
- Wählen Sie Protokolle aus.
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.
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
- Gehen Sie zu SIEM-Einstellungen > Feeds.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Akamai WAF-Logs.
- Wählen Sie als Quelltyp Amazon S3 aus.
- Wählen Sie Akamai WAF als Logtyp aus.
- Klicken Sie auf Weiter.
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.
Klicken Sie auf Weiter.
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.