Raccogliere i log di Akamai WAF

Supportato in:

Panoramica

Questo parser gestisce i log del Web Application Firewall (WAF) di Akamai, supportando sia i formati syslog che CEF. Estrae campi come indirizzi IP, URL, metodi HTTP, codici di risposta, user agent e informazioni sulle regole di sicurezza, mappandoli all'UDM per una rappresentazione coerente. Il parser gestisce anche campi Akamai specifici come attackData e clientReputation, eseguendo le trasformazioni dei dati necessarie e arricchendo l'output UDM.

Prima di iniziare

  • Assicurati di avere un'istanza Google SecOps.
  • Assicurati di disporre dell'accesso con privilegi ad AWS IAM e S3.
  • Assicurati di disporre dell'accesso privilegiato ad Akamai.

Configura il bucket Amazon S3

  1. Crea un bucket Amazon S3 seguendo questa guida dell'utente: Creare un bucket
  2. Salva Name (Nome) e Region (Regione) del bucket per riferimento futuro.
  3. Crea un utente seguendo questa guida dell'utente: Creare un utente IAM.
  4. Seleziona l'utente creato.
  5. Seleziona la scheda Credenziali di sicurezza.
  6. Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
  7. Seleziona Servizio di terze parti come Caso d'uso.
  8. Fai clic su Avanti.
  9. (Facoltativo) Aggiungi un tag di descrizione.
  10. Fai clic su Crea chiave di accesso.
  11. Fai clic su Scarica file .csv. (Salva Chiave di accesso e Chiave di accesso segreta per riferimento futuro).
  12. Fai clic su Fine.
  13. Seleziona la scheda Autorizzazioni.
  14. Fai clic su Aggiungi autorizzazioni nella sezione Norme relative alle autorizzazioni.
  15. Seleziona Aggiungi autorizzazioni.
  16. Seleziona Collega direttamente i criteri.
  17. Cerca il criterio AmazonS3FullAccess.
  18. Seleziona il criterio.
  19. Fai clic su Avanti.
  20. Fai clic su Aggiungi autorizzazioni.

Configurare Akamai WAF per inviare i log ad Amazon S3

  1. Accedi al Control Center di Akamai.
  2. Vai alla sezione Sicurezza.
  3. Seleziona Log.
  4. Configura un nuovo invio di log:

    • Origine log:seleziona la configurazione del WAF.
    • Destinazione di caricamento:scegli Amazon S3.
    • Bucket S3:specifica il nome del bucket S3 che hai creato.
    • Regione:seleziona la regione AWS in cui si trova il bucket S3.
    • ID chiave di accesso e chiave di accesso segreta:fornisci le credenziali che hai generato.
    • Formato log:scegli il formato del log pertinente (ad es. JSON).
    • Frequenza di invio:seleziona la frequenza appropriata per l'invio dei log (ad esempio ogni 5 minuti).
  5. Verifica la pubblicazione dei log:

    • Dopo aver configurato LDS, monitora il bucket S3 per i file di log in entrata.

Configura un feed in Google SecOps per importare i log WAF di Akamai

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuova.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log WAF di Akamai).
  4. Seleziona Amazon S3 come Tipo di origine.
  5. Seleziona Akamai WAF come Tipo di log.
  6. Fai clic su Avanti.
  7. Specifica i valori per i seguenti parametri di input:

    • Regione: la regione in cui si trova il bucket Amazon S3.
    • URI S3: l'URI del bucket. s3:/BUCKET_NAME Sostituisci quanto segue:
      • BUCKET_NAME: il nome del bucket.
    • L'URI è un: seleziona il TIPO DI URI in base alla configurazione dello stream di log: File singolo | Directory | Directory che include sottodirectory.
    • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
    • ID chiave di accesso: la chiave di accesso utente con accesso al bucket S3.
    • Chiave di accesso segreta: la chiave segreta dell'utente con accesso al bucket S3.
    • Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
  8. Fai clic su Avanti.

  9. Rivedi la configurazione del nuovo feed nella schermata Concludi e poi fai clic su Invia.

Tabella di mappatura UDM

Campo log (crescente) Mappatura UDM Logica
attackData.clientIP principal.ip, principal.asset.ip Indirizzo IP del client che avvia la richiesta. Estratto dal campo attackData.clientIP nei log akamai_siem.
attackData.configId metadata.product_log_id ID configurazione di sicurezza. Estratto dal campo attackData.configId nei log akamai_siem. È stato aggiunto anche come detection_field nell'oggetto security_result.
attackData.policyId N/D Utilizzato nella logica del parser per compilare security_result.summary con il valore "PolicyId:[value]".
attackData.ruleActions security_result.action, security_result.action_details Azioni intraprese in base alla regola attivata. Estratto dal campo attackData.ruleActions nei log akamai_siem. "deny" viene mappato a BLOCK, mentre gli altri valori ("alert", "monitor", "allow", "tarpit") vengono mappati a ALLOW. Il valore originale viene memorizzato anche in action_details.
attackData.ruleData security_result.detection_fields Dati associati alla regola attivata. Estratto dal campo attackData.ruleData nei log akamai_siem. Aggiunto a security_result.detection_fields con la chiave "RuleData".
attackData.ruleMessages security_result.threat_name Messaggi associati alla regola attivata. Estratto dal campo attackData.ruleMessages nei log akamai_siem.
attackData.ruleSelectors security_result.detection_fields Selettori associati alla regola attivata. Estratto dal campo attackData.ruleSelectors nei log akamai_siem. Aggiunta a security_result.detection_fields con la chiave "RuleSelector".
attackData.ruleTags security_result.category_details Tag associati alla regola attivata. Estratto dal campo attackData.ruleTags nei log akamai_siem.
attackData.ruleVersions security_result.detection_fields Versioni delle regole attivate. Estratto dal campo attackData.ruleVersions nei log akamai_siem. Aggiunta a security_result.detection_fields con la chiave "Versione regola".
clientReputation principal.labels Informazioni sulla reputazione del cliente. Estratto dal campo clientReputation nei log akamai_siem. Aggiunto come etichetta all'entità con chiave "reputation".
cliIP, cli_ip, principal_ip principal.ip, principal.asset.ip Indirizzo IP client. Estratto da cliIP o cli_ip o principal_ip a seconda del formato del log.
cp additional.fields Codice CP. Estratto dal campo cp. Aggiunto a additional.fields con la chiave "cp".
eventId metadata.product_log_id ID evento. Estratto dal campo eventId.
eventTime, log_date metadata.event_timestamp Timestamp dell'evento. Estratto da eventTime o analizzato da log_date a seconda del formato del log.
eventType.eventDefinition.eventDefinitionId target.resource.product_object_id ID definizione evento. Estratto da eventType.eventDefinition.eventDefinitionId.
eventType.eventDefinition.eventDescription metadata.description Descrizione dell'evento. Estratto da eventType.eventDefinition.eventDescription.
eventType.eventDefinition.eventName metadata.product_event_type Nome dell'evento. Estratto da eventType.eventDefinition.eventName.
eventType.eventTypeId additional.fields ID tipo di evento. Estratto da eventType.eventTypeId. Aggiunto a additional.fields con la chiave "eventTypeId".
eventType.eventTypeName additional.fields Nome del tipo di evento. Estratto da eventType.eventTypeName. Aggiunto a additional.fields con la chiave "eventTypeName".
format N/D Utilizzato dall'analizzatore per determinare il formato del log.
geo.asn principal.location.name Numero di sistema autonomo (ASN). Estratto da geo.asn o AkamaiSiemASN a seconda del formato del log. Il valore è preceduto dal prefisso "ASN ".
geo.city principal.location.city Città. Estratto da geo.city o AkamaiSiemCity a seconda del formato del log.
geo.country principal.location.country_or_region Paese. Estratto da geo.country o AkamaiSiemContinent a seconda del formato del log.
httpMessage.bytes network.sent_bytes Byte inviati nel messaggio HTTP. Estratto da httpMessage.bytes.
httpMessage.host target.hostname, target.asset.hostname Nome host. Estratto da httpMessage.host o reqHost a seconda del formato del log.
httpMessage.method network.http.method Metodo HTTP. Estratto da httpMessage.method o network_http_method o reqMethod a seconda del formato del log. Convertito in maiuscolo.
httpMessage.path target.url Percorso richiesta. Estratto da httpMessage.path o target_url o reqPath a seconda del formato del log. Se httpMessage.query è presente, viene aggiunto al percorso con un separatore "?".
httpMessage.port target.port Porta. Estratto da httpMessage.port o reqPort a seconda del formato del log.
httpMessage.protocol N/D Utilizzato dal parser per determinare il protocollo.
httpMessage.query N/D Utilizzato nella logica del parser per essere aggiunto a httpMessage.path, se presente.
httpMessage.requestId network.session_id ID richiesta. Estratto da httpMessage.requestId o reqId a seconda del formato del log.
httpMessage.requestHeaders, AkamaiSiemRequestHeaders additional.fields Intestazioni delle richieste. Estratto da httpMessage.requestHeaders o AkamaiSiemRequestHeaders a seconda del formato del log. Aggiunto a additional.fields con la chiave "AkamaiSiemRequestHeaders".
httpMessage.responseHeaders, AkamaiSiemResponseHeaders additional.fields Intestazioni di risposta. Estratto da httpMessage.responseHeaders o AkamaiSiemResponseHeaders a seconda del formato del log. Aggiunto a additional.fields con la chiave "AkamaiSiemResponseHeaders".
httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code, statusCode network.http.response_code Codice di risposta HTTP. Estratto da httpMessage.status o AkamaiSiemResponseStatus o network_http_response_code o statusCode a seconda del formato del log.
httpMessage.tls, AkamaiSiemTLSVersion, tlsVersion network.tls.version Versione TLS. Estratto da httpMessage.tls o AkamaiSiemTLSVersion o tlsVersion a seconda del formato del log.
httpMessage.useragent, network_http_user_agent, UA, useragent network.http.user_agent User agent. Estratto da httpMessage.useragent o network_http_user_agent o UA o useragent a seconda del formato del log.
log_description metadata.description Descrizione del log. Estratto da log_description.
log_rule security_result.rule_name Regola di log. Estratto da log_rule.
message N/D Il messaggio del log non elaborato. Utilizzato dal parser per varie estrazioni.
network_http_referral_url network.http.referral_url URL del referral HTTP. Estratto da network_http_referral_url.
proto N/D Utilizzato nella logica del parser per compilare security_result.summary se attackData.policyId non è presente.
reqHost target.hostname, target.asset.hostname Richiedi l'host. Estratto da reqHost.
reqId metadata.product_log_id, network.session_id ID richiesta. Estratto da reqId.
reqMethod network.http.method Metodo di richiesta. Estratto da reqMethod.
reqPath target.url Percorso richiesta. Estratto da reqPath.
reqPort target.port Richiedi porta. Estratto da reqPort.
rspContentType target.file.mime_type Tipo di contenuti della risposta. Estratto da rspContentType.
securityRules security_result.rule_name, security_result.about.resource.attribute.labels Regole di sicurezza. Estratto da securityRules. La prima parte viene mappata a rule_name e il resto viene aggiunto come etichette con le chiavi "non_deny_rules" e "deny_rule_format".
statusCode network.http.response_code Codice di stato. Estratto da statusCode.
state principal.location.state, target.user.personal_address.state Stato. Estratto da state.
tlsVersion network.tls.version Versione TLS. Estratto da tlsVersion.
type metadata.product_event_type Tipo di evento. Estratto da type.
UA network.http.user_agent User agent. Estratto da UA.
version metadata.product_version, principal.asset.software.version Versione. Estratto da version.
N/D metadata.event_timestamp Il timestamp dell'evento è ricavato dal campo _ts nei log akamai_lds, dal campo httpMessage.start nei log akamai_siem o dal campo log_date in altri formati.
N/D metadata.vendor_name Hardcoded su "Akamai".
N/D metadata.product_name Hardcoded su "Kona".
N/D metadata.log_type Hardcoded su "AKAMAI_WAF".
N/D network.application_protocol Imposta su "HTTP" per i log akamai_siem e akamai_lds oppure su "DNS" per altri formati.
N/D security_result.severity Imposta il valore su MEDIO per l'azione "avviso", su CRITICO per l'azione "nega" e su ALTO per le altre azioni.
N/D event.idm.read_only_udm.metadata.event_type Impostato su "NETWORK_HTTP" per la maggior parte dei formati di log, "GENERIC_EVENT" per gli eventi con campi eventId o eventData oppure "STATUS_UPDATE" per gli eventi con cli_ip o p_ip, ma senza reqHost.

Modifiche

2024-05-21

  • Miglioramento
  • "rules.data" è stato mappato a "security_result.detection_fields".
  • Sono stati mappati "rules.action", "rules.selector" e "rules.version" a "security_result.action_details".
  • "rules.id" è stato mappato a "security_result.rule_id",
  • "rules.tag" è stato mappato a "security_result.category_details".
  • "rules.message" è stato mappato a "security_result.threat_name".

2024-03-01

  • Miglioramento
  • "attackData.configId" è stato mappato a "metadata.product_log_id" e "security_result.detection_fields".

2023-10-27

  • Miglioramento
  • "rule.id" è stato mappato a "security_result.rule_id".
  • Quando "httpMessage.host" non è presente, il valore impostato in "metadata.event_type" è passato da "NETWORK_HTTP" a "GENERIC_EVENT".
  • È stato aggiunto il supporto per l'analisi di "attackData" quando "attackData.rules" è un array.

2023-04-24

  • Miglioramento
  • Log analizzati importati in formato CEF.

2023-04-04

  • Miglioramento
  • "reqHost" è stato mappato a "target.hostname".
  • "reqPort" è stato mappato a "target.port".
  • "reqPath" è stato mappato a "target.url".
  • "reqId" è stato mappato a "network.session_id".
  • È stata mappata la colonna "statusCode" a "network.http.response_code".
  • "reqMethod" è stato mappato a "network.http.method".
  • "UA" è stato mappato a "network.http.user_agent".
  • "bytes" è stato mappato a "network.sent_bytes".
  • "reqMethod" è stato mappato a "network.http.method".
  • Log con errori analizzati in formato syslog.
  • Sono stati aggiunti controlli delle condizioni per "attackData.rules" per l'analisi corretta.
  • Ove possibile, è stato modificato il valore "metadata.event_type" in "NETWORK_HTTP" da "STATUS_UPDATE".

2022-08-12

  • Miglioramento
  • "security_policy_id" è stato mappato a security_result.rule_name.
  • "non_deny_rules" è stato mappato a security_result.about.resource.attribute.labels.
  • "deny_rule_format" è stato mappato a security_result.about.resource.attribute.labels.

2022-11-07

  • Miglioramento
  • Aggiorna SecurityRules per controllare ["-"] anche nei dati.

2022-06-14

  • Miglioramento
  • Regole di sicurezza mappate a security_result.rule_name.
  • La città è stata mappata a principal.location.city.
  • Paese mappato a principal.location.country_or_region.
  • È stato mappato cli_ip a principal.ip.
  • Stato mappato a target.user.personal_address.state.
  • Versione mappata a metadata.product_version.
  • Useragent mappato a network.http.user_agent.

2022-06-14

  • Enhancement-
  • Proto mappato a security_result.summary.
  • Regole di sicurezza mappate a security_result.rule_name.
  • La città è stata mappata a principal.location.city.
  • Paese mappato a principal.location.country_or_region.
  • cliIP è stato mappato a principal.ip.
  • È stato mappato il cp a event.idm.read_only_udm.additional.fields.
  • Ho mappato reqId a metadata.product_log_id.
  • È stato mappato rspContentType a target.file.mime_type.
  • Stato mappato a target.user.personal_address.state.
  • Versione mappata a principal.asset.software.version.

2022-03-23

  • Bugfix: correzione dell'errore di analisi dei dati con tutti i pattern di corrispondenza.
  • Sono state aggiunte mappature per i nuovi campi.
  • eventId mappato a metadata.product_log_id.
  • eventDefinitionId mappato a target.resource.product_object_id.
  • eventDescription mappato a metadata.description.
  • eventName mappato a metadata.product_event_type.
  • eventTypeName mappato a additional.fields.
  • eventTypeId mappato a additional.fields.
  • eventData mappato a additional.fields.