Recopila registros de la WAF de Akamai

Compatible con:

Descripción general

Este analizador controla los registros del firewall de aplicaciones web (WAF) de Akamai y admite los formatos syslog y CEF. Extrae campos como direcciones IP, URLs, métodos HTTP, códigos de respuesta, usuarios-agentes y la información de las reglas de seguridad, y los asigna a la UDM para obtener una representación coherente. El analizador también controla campos específicos de Akamai, como attackData y clientReputation, realiza las transformaciones de datos necesarias y enriquece el resultado de la UDM.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de tener acceso con privilegios a AWS IAM y S3.
  • Asegúrate de tener acceso con privilegios a Akamai.

Configura el bucket de Amazon S3

  1. Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
  2. Guarda el Nombre y la Región del bucket para usarlos como referencia en el futuro.
  3. Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
  4. Selecciona el Usuario creado.
  5. Selecciona la pestaña Credenciales de seguridad.
  6. Haz clic en Crear clave de acceso en la sección Claves de acceso.
  7. Selecciona Servicio de terceros como Caso de uso.
  8. Haz clic en Siguiente.
  9. Opcional: Agrega una etiqueta de descripción.
  10. Haz clic en Crear clave de acceso.
  11. Haz clic en Descargar archivo .csv. (Guarda la Clave de acceso y la Clave de acceso secreta para usarlas como referencia en el futuro).
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. Haz clic en Agregar permisos en la sección Políticas de permisos.
  15. Selecciona Agregar permisos.
  16. Selecciona Adjuntar políticas directamente.
  17. Busca la política AmazonS3FullAccess.
  18. Selecciona la política.
  19. Haz clic en Siguiente.
  20. Haz clic en Agregar permisos.

Configura el WAF de Akamai para enviar registros a Amazon S3

  1. Accede al Control Center de Akamai.
  2. Ve a la sección Seguridad.
  3. Selecciona Registros.
  4. Configura una nueva entrega de registros:

    • Fuente de registro: Selecciona tu configuración de WAF.
    • Destino de publicación: Elige Amazon S3.
    • Bucket de S3: Especifica el nombre del bucket de S3 que creaste.
    • Región: Selecciona la región de AWS en la que se encuentra tu bucket de S3.
    • ID de clave de acceso y clave de acceso secreta: Proporciona las credenciales que generaste.
    • Formato de registro: Elige el formato de registro relevante (por ejemplo, JSON).
    • Frecuencia de entrega: Selecciona la frecuencia adecuada para la entrega de registros (por ejemplo, cada 5 minutos).
  5. Verifica la entrega de registros:

    • Después de configurar LDS, supervisa el bucket de S3 en busca de archivos de registro entrantes.

Configura un feed en Google SecOps para transferir registros de Akamai WAF

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de Akamai WAF).
  4. Selecciona Amazon S3 como el Tipo de fuente.
  5. Selecciona Akamai WAF como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifica valores para los siguientes parámetros de entrada:

    • Región: Es la región en la que se encuentra el bucket de Amazon S3.
    • URI de S3: Es el URI del bucket. s3:/BUCKET_NAME Reemplaza lo siguiente:
      • BUCKET_NAME: el nombre del bucket.
    • URI es un: Selecciona el TIPO DE URI según la configuración del flujo de registro: Archivo único | Directorio | Directorio que incluye subdirectorios.
    • Opciones de eliminación de fuentes: Selecciona la opción de eliminación según tus preferencias.
    • ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.
    • Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.
    • Espacio de nombres de recursos: Es el espacio de nombres de recursos.
    • Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.
  8. Haz clic en Siguiente.

  9. Revisa la configuración de tu nuevo feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Tabla de asignación de UDM

Campo de registro (en orden ascendente) Asignación de UDM Lógica
attackData.clientIP principal.ip, principal.asset.ip Es la dirección IP del cliente que inicia la solicitud. Se extrae del campo attackData.clientIP en los registros de akamai_siem.
attackData.configId metadata.product_log_id ID de configuración de seguridad Se extrae del campo attackData.configId en los registros de akamai_siem. También se agregó como detection_field en el objeto security_result.
attackData.policyId N/A Se usa en la lógica del analizador para propagar security_result.summary con el valor "PolicyId:[value]".
attackData.ruleActions security_result.action, security_result.action_details Acciones que se realizan en función de la regla activada. Se extrae del campo attackData.ruleActions en los registros de akamai_siem. “deny” se asigna a BLOCK, y otros valores ("alert", "monitor", "allow", "tarpit") se asignan a ALLOW. El valor original también se almacena en action_details.
attackData.ruleData security_result.detection_fields Datos asociados con la regla activada. Se extrae del campo attackData.ruleData en los registros de akamai_siem. Se agregó a security_result.detection_fields con la clave "RuleData".
attackData.ruleMessages security_result.threat_name Son los mensajes asociados con la regla activada. Se extrae del campo attackData.ruleMessages en los registros de akamai_siem.
attackData.ruleSelectors security_result.detection_fields Son los selectores asociados con la regla activada. Se extrae del campo attackData.ruleSelectors en los registros de akamai_siem. Se agregó a security_result.detection_fields con la clave "RuleSelector".
attackData.ruleTags security_result.category_details Etiquetas asociadas con la regla activada. Se extrae del campo attackData.ruleTags en los registros de akamai_siem.
attackData.ruleVersions security_result.detection_fields Versiones de las reglas activadas. Se extrae del campo attackData.ruleVersions en los registros de akamai_siem. Se agregó a security_result.detection_fields con la clave "Rule Version".
clientReputation principal.labels Información de reputación del cliente Se extrae del campo clientReputation en los registros de akamai_siem. Se agregó como etiqueta al principal con la clave "reputation".
cliIP, cli_ip, principal_ip principal.ip, principal.asset.ip Dirección IP del cliente. Se extrae de cliIP, cli_ip o principal_ip, según el formato del registro.
cp additional.fields Código de CP Se extrae del campo cp. Se agregó a additional.fields con la clave "cp".
eventId metadata.product_log_id ID del evento. Se extrae del campo eventId.
eventTime, log_date metadata.event_timestamp Marca de tiempo del evento. Se extrae de eventTime o se analiza desde log_date según el formato del registro.
eventType.eventDefinition.eventDefinitionId target.resource.product_object_id Es el ID de la definición del evento. Se extrajo de eventType.eventDefinition.eventDefinitionId.
eventType.eventDefinition.eventDescription metadata.description Descripción del evento. Se extrajo de eventType.eventDefinition.eventDescription.
eventType.eventDefinition.eventName metadata.product_event_type Nombre del evento. Se extrajo de eventType.eventDefinition.eventName.
eventType.eventTypeId additional.fields Es el ID del tipo de evento. Se extrajo de eventType.eventTypeId. Se agregó a additional.fields con la clave "eventTypeId".
eventType.eventTypeName additional.fields Es el nombre del tipo de evento. Se extrajo de eventType.eventTypeName. Se agregó a additional.fields con la clave "eventTypeName".
format N/A El analizador lo usa para determinar el formato del registro.
geo.asn principal.location.name Número de sistema autónomo (ASN). Se extrae de geo.asn o AkamaiSiemASN, según el formato del registro. El valor tiene el prefijo “ASN”.
geo.city principal.location.city Ciudad. Se extrae de geo.city o AkamaiSiemCity, según el formato del registro.
geo.country principal.location.country_or_region País Se extrae de geo.country o AkamaiSiemContinent, según el formato del registro.
httpMessage.bytes network.sent_bytes Bytes enviados en el mensaje HTTP. Se extrajo de httpMessage.bytes.
httpMessage.host target.hostname, target.asset.hostname Nombre de host. Se extrae de httpMessage.host o reqHost, según el formato del registro.
httpMessage.method network.http.method Método HTTP. Se extrae de httpMessage.method, network_http_method o reqMethod, según el formato del registro. Se convirtió en mayúsculas.
httpMessage.path target.url Ruta de la solicitud. Se extrae de httpMessage.path, target_url o reqPath, según el formato del registro. Si httpMessage.query está presente, se agrega a la ruta con un separador "?".
httpMessage.port target.port Puerto Se extrae de httpMessage.port o reqPort, según el formato del registro.
httpMessage.protocol N/A El analizador lo usa para determinar el protocolo.
httpMessage.query N/A Se usa en la lógica del analizador para adjuntarse a httpMessage.path si está presente.
httpMessage.requestId network.session_id ID de la solicitud. Se extrae de httpMessage.requestId o reqId, según el formato del registro.
httpMessage.requestHeaders, AkamaiSiemRequestHeaders additional.fields Encabezados de la solicitud Se extrae de httpMessage.requestHeaders o AkamaiSiemRequestHeaders, según el formato del registro. Se agregó a additional.fields con la clave "AkamaiSiemRequestHeaders".
httpMessage.responseHeaders, AkamaiSiemResponseHeaders additional.fields Encabezados de respuesta. Se extrae de httpMessage.responseHeaders o AkamaiSiemResponseHeaders, según el formato del registro. Se agregó a additional.fields con la clave "AkamaiSiemResponseHeaders".
httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code, statusCode network.http.response_code Código de respuesta HTTP. Se extrae de httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code o statusCode, según el formato del registro.
httpMessage.tls, AkamaiSiemTLSVersion, tlsVersion network.tls.version Versión de TLS Se extrae de httpMessage.tls, AkamaiSiemTLSVersion o tlsVersion, según el formato del registro.
httpMessage.useragent, network_http_user_agent, UA, useragent network.http.user_agent Usuario-agente. Se extrae de httpMessage.useragent, network_http_user_agent, UA o useragent, según el formato del registro.
log_description metadata.description Descripción del registro. Se extrajo de log_description.
log_rule security_result.rule_name Regla de registro. Se extrajo de log_rule.
message N/A El mensaje de registro sin formato. El analizador lo usa para varias extracciones.
network_http_referral_url network.http.referral_url URL de referencia HTTP. Se extrajo de network_http_referral_url.
proto N/A Se usa en la lógica del analizador para propagar security_result.summary si no está presente attackData.policyId.
reqHost target.hostname, target.asset.hostname Solicitar host Se extrajo de reqHost.
reqId metadata.product_log_id, network.session_id ID de la solicitud. Se extrajo de reqId.
reqMethod network.http.method Método de solicitud. Se extrajo de reqMethod.
reqPath target.url Ruta de la solicitud. Se extrajo de reqPath.
reqPort target.port Puerto de solicitud Se extrajo de reqPort.
rspContentType target.file.mime_type Tipo de contenido de la respuesta. Se extrajo de rspContentType.
securityRules security_result.rule_name, security_result.about.resource.attribute.labels Reglas de seguridad Se extrajo de securityRules. La primera parte se asigna a rule_name y el resto se agrega como etiquetas con las claves "non_deny_rules" y "deny_rule_format".
statusCode network.http.response_code Código de estado. Se extrajo de statusCode.
state principal.location.state, target.user.personal_address.state Estado. Se extrajo de state.
tlsVersion network.tls.version Versión de TLS Se extrajo de tlsVersion.
type metadata.product_event_type Tipo de evento. Se extrajo de type.
UA network.http.user_agent Usuario-agente. Se extrajo de UA.
version metadata.product_version, principal.asset.software.version Versión. Se extrajo de version.
N/A metadata.event_timestamp La marca de tiempo del evento se obtiene del campo _ts en los registros de akamai_lds, del campo httpMessage.start en los registros de akamai_siem o del campo log_date en otros formatos.
N/A metadata.vendor_name Está codificado de forma fija en "Akamai".
N/A metadata.product_name Se codifica en “Kona”.
N/A metadata.log_type Está codificado de forma fija en "AKAMAI_WAF".
N/A network.application_protocol Se establece en "HTTP" para los registros akamai_siem y akamai_lds, o en "DNS" para otros formatos.
N/A security_result.severity Establece el valor en MEDIUM para la acción "alert", CRITICAL para la acción "deny" y HIGH para otras acciones.
N/A event.idm.read_only_udm.metadata.event_type Establece el valor en "NETWORK_HTTP" para la mayoría de los formatos de registro, "GENERIC_EVENT" para eventos con campos eventId o eventData, o "STATUS_UPDATE" para eventos con cli_ip o p_ip, pero sin reqHost.

Cambios

2024-05-21

  • Mejora
  • Se asignó "rules.data" a "security_result.detection_fields".
  • Se asignaron "rules.action", "rules.selector" y "rules.version" a "security_result.action_details".
  • Se asignó "rules.id" a "security_result.rule_id".
  • Se asignó "rules.tag" a "security_result.category_details".
  • Se asignó "rules.message" a "security_result.threat_name".

2024-03-01

  • Mejora
  • Se asignó "attackData.configId" a "metadata.product_log_id" y "security_result.detection_fields".

2023-10-27

  • Mejora
  • Se asignó "rule.id" a "security_result.rule_id".
  • Cuando no está presente "httpMessage.host", se cambió el valor establecido en "metadata.event_type" de "NETWORK_HTTP" a "GENERIC_EVENT".
  • Se agregó compatibilidad para analizar "attackData" cuando "attackData.rules" es un array.

2023-04-24

  • Mejora
  • Registros analizados transferidos en formato CEF

2023-04-04

  • Mejora
  • Se asignó "reqHost" a "target.hostname".
  • Se asignó "reqPort" a "target.port".
  • Se asignó "reqPath" a "target.url".
  • Se asignó "reqId" a "network.session_id".
  • Se asignó "statusCode" a "network.http.response_code".
  • Se asignó "reqMethod" a "network.http.method".
  • Se asignó "UA" a "network.http.user_agent".
  • Se asignó "bytes" a "network.sent_bytes".
  • Se asignó "reqMethod" a "network.http.method".
  • Se analizaron los registros con errores en formato syslog.
  • Se agregaron verificaciones de condiciones para "attackData.rules" para un análisis correcto.
  • Se modificó "metadata.event_type" de "STATUS_UPDATE" a "NETWORK_HTTP" siempre que fue posible.

2022-08-12

  • Mejora
  • Se asignó "security_policy_id" a security_result.rule_name.
  • Se asignó "non_deny_rules" a security_result.about.resource.attribute.labels.
  • Se asignó "deny_rule_format" a security_result.about.resource.attribute.labels.

2022-11-07

  • Mejora
  • Se actualizó SecurityRules para verificar ["-"] también en los datos.

2022-06-14

  • Mejora
  • Se asignó security_rules a security_result.rule_name.
  • Ciudad asignada a principal.location.city.
  • País asignado a principal.location.country_or_region.
  • Se asignó cli_ip a principal.ip.
  • Se asignó el estado a target.user.personal_address.state.
  • Versión asignada a metadata.product_version.
  • Se asignó el usuario-agente a network.http.user_agent.

2022-06-14

  • Enhancement-
  • Se asignó el proto a security_result.summary.
  • Se asignó securityRules a security_result.rule_name.
  • Ciudad asignada a principal.location.city.
  • País asignado a principal.location.country_or_region.
  • Se asignó cliIP a principal.ip.
  • Se asignó cp a event.idm.read_only_udm.additional.fields.
  • Se asignó reqId a metadata.product_log_id.
  • Se asignó rspContentType a target.file.mime_type.
  • Se asignó el estado a target.user.personal_address.state.
  • Versión asignada a principal.asset.software.version.

2022-03-23

  • Se corrigió el error que se producía cuando no se podían analizar los datos con todos los patrones de coincidencia.
  • Se agregaron asignaciones para campos nuevos.
  • eventId asignado a metadata.product_log_id.
  • eventDefinitionId asignado a target.resource.product_object_id.
  • eventDescription asignado a metadata.description.
  • eventName asignado a metadata.product_event_type
  • eventTypeName asignado a additional.fields
  • eventTypeId asignado a additional.fields.
  • eventData asignado a additional.fields