Recopilar registros de Akamai WAF

Disponible en:

En este documento se explica cómo exportar e ingerir registros de WAF de Akamai en Google Security Operations mediante Google Cloud Storage o AWS S3. El analizador gestiona los registros y admite los formatos syslog y CEF. Extrae campos como direcciones IP, URLs, métodos HTTP, códigos de respuesta, agentes de usuario e información de reglas de seguridad, y los asigna al modelo de datos unificado (UDM) para que se representen de forma coherente. El analizador también gestiona campos específicos de Akamai, como attackData y clientReputation, y realiza las transformaciones de datos necesarias, así como enriquece la salida de UDM.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Acceso privilegiado a Google Cloud o AWS
  • Acceso privilegiado a Akamai

Exportar e ingerir registros de Akamai WAF desde Cloud Storage

En esta sección se describe el primer paso del proceso: configurar el almacenamiento necesario para los registros de tu WAF de Akamai.

Crea un Google Cloud segmento de almacenamiento

  1. Inicia sesión en la Google Cloud consola.
  2. Ve a la página Segmentos de Cloud Storage.

    Ir a Contenedores

  3. Haz clic en Crear.

  4. En la página Crear un bucket, introduce la información del bucket. Después de cada uno de los pasos siguientes, haga clic en Continuar para pasar al siguiente:

    1. En la sección Empezar, haz lo siguiente:

      • Introduce un nombre único que cumpla los requisitos de nombres de segmentos (por ejemplo, akamai-waf-logs).
      • Para habilitar el espacio de nombres jerárquico, haz clic en la flecha para desplegar la sección Optimizar para cargas de trabajo orientadas a archivos y con gran cantidad de datos y, a continuación, selecciona Habilitar espacio de nombres jerárquico en este bucket.
      • Para añadir una etiqueta de contenedor, haz clic en la flecha para desplegar la sección Etiquetas.
      • Haga clic en Añadir etiqueta y especifique una clave y un valor para la etiqueta.
    2. En la sección Elige dónde quieres almacenar los datos, haz lo siguiente:

      • Selecciona un Tipo de ubicación.
      • Usa el menú desplegable del tipo de ubicación para seleccionar una Ubicación donde se almacenarán permanentemente los datos de los objetos de tu segmento.
      • Para configurar la replicación entre contenedores, despliega la sección Configurar la replicación entre contenedores.
    3. En la sección Elige una clase de almacenamiento para tus datos, selecciona una clase de almacenamiento predeterminada para el segmento o Autoclass para gestionar automáticamente la clase de almacenamiento de los datos del segmento.

    4. En la sección Elige cómo quieres controlar el acceso a los objetos, selecciona no para aplicar la prevención del acceso público y elige un modelo de control de acceso para los objetos del segmento.

    5. En la sección Elige cómo proteger los datos de los objetos, haz lo siguiente:

      • Selecciona cualquiera de las opciones de Protección de datos que quieras configurar para tu contenedor.
      • Para elegir cómo se cifrarán los datos de los objetos, haga clic en la flecha del desplegable Cifrado de datos y seleccione un Método de cifrado de datos.
  5. Haz clic en Crear.

Configurar permisos de Cloud Storage

  1. Ve a la página Crear cuenta de servicio.

    Ir a Crear cuenta de servicio

  2. Selecciona un proyecto de Google Cloud.

  3. Escribe el nombre de la cuenta de servicio, que será el que se muestre en la Google Cloud consola.

  4. Haz clic en Crear y continuar.

  5. Concede el rol roles/storage.admin en el segmento.

  6. Haz clic en Hecho para terminar de crear la cuenta de servicio.

Crear y descargar un Google Cloud archivo de clave de cuenta de servicio

  1. Ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona un proyecto Google Cloud.

  3. Haz clic en la dirección de correo de la cuenta de servicio que acabas de crear.

  4. Haga clic en la pestaña Claves.

  5. Haz clic en el menú Añadir clave y, a continuación, selecciona Crear clave.

  6. Selecciona JSON como tipo de clave y haz clic en Crear.

    • Al hacer clic en Crear, se descarga un archivo de clave de cuenta de servicio. Una vez que hayas descargado el archivo de clave, no podrás volver a descargarlo.
    • La clave descargada tiene el siguiente formato, donde PRIVATE_KEY es la parte privada del par de claves pública y privada.

Configurar Akamai WAF para enviar registros a Cloud Storage

  1. Inicia sesión en Akamai Control Center.
  2. Ve a la sección Seguridad.
  3. Selecciona Registros.
  4. Configura un nuevo registro de entrega:
    • Fuente de registro: selecciona la configuración de tu WAF.
    • Destino: selecciona Google Cloud Storage.
    • Nombre visible: introduce una descripción única.
    • Segmento: especifica el nombre del segmento de Cloud Storage que has creado (por ejemplo, gs://akamai-waf-logs/).
    • ID del proyecto: introduce el ID único de tu Google Cloud proyecto.
    • Nombre de cuenta de servicio: introduce el nombre de la cuenta de servicio que has creado anteriormente.
    • Clave privada: introduce el valor private_key de la clave JSON que has generado y descargado anteriormente. (Debe introducir su clave privada en formato PEM con símbolos de salto de línea (\n). Por ejemplo, -----BEGIN PRIVATE KEY-----\nprivate_key\n-----END PRIVATE KEY-----\n).
    • Formato de registro: elige el formato de registro que quieras (por ejemplo, JSON).
    • Frecuencia de envío: selecciona la frecuencia con la que quieres que se envíen los registros (por ejemplo, every 60 seconds).
  5. Haz clic en Validar y guardar para validar la conexión con el destino y guardar los detalles que has proporcionado.

  6. Haz clic en Siguiente para ir a la pestaña Resumen.

Configurar feeds

Para configurar un feed, sigue estos pasos:

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir feed.
  3. En la página siguiente, haga clic en Configurar un solo feed.
  4. En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Registros de WAF de Akamai).
  5. Seleccione Google Cloud Storage como Tipo de origen.
  6. Seleccione Akamai WAF como Tipo de registro.
  7. Haz clic en Obtener cuenta de servicio en Cuenta de servicio de Chronicle.
  8. Haz clic en Siguiente.
  9. Especifique los valores de los siguientes parámetros de entrada:

    • URI de segmento de almacenamiento: Google Cloud URL de segmento de almacenamiento (por ejemplo, gs://akamai-waf-logs/). Esta URL debe terminar con una barra inclinada (/).
    • El URI es un: selecciona Directorio que incluye subdirectorios.
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
  10. Haz clic en Siguiente.

  11. Revise la configuración del nuevo feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.

Exportar e ingerir registros de Akamai WAF desde AWS S3

En esta sección se explican los pasos iniciales para configurar el segmento de Amazon S3 de forma que reciba y almacene los registros de Akamai WAF.

Configurar un segmento de Amazon S3

  1. Crea un segmento de Amazon S3 siguiendo esta guía de usuario: Crear un segmento.
  2. Guarda el nombre y la región del bucket para consultarlos más adelante.
  3. Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
  4. Selecciona el Usuario creado.
  5. Selecciona la pestaña Credenciales de seguridad.
  6. En la sección Claves de acceso, haz clic en Crear clave de acceso.
  7. Selecciona Servicio de terceros en Caso práctico.
  8. Haz clic en Siguiente.
  9. Opcional: añade una etiqueta de descripción.
  10. Haz clic en Crear clave de acceso.
  11. Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para futuras consultas.
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. Haz clic en Añadir permisos en la sección Políticas de permisos.
  15. Selecciona Añadir permisos.
  16. Seleccione Adjuntar políticas directamente.
  17. Busca la política AmazonS3FullAccess.
  18. Selecciona la política.
  19. Haz clic en Siguiente.
  20. Haz clic en Añadir permisos.

Configurar Akamai WAF para enviar registros a Amazon S3

  1. Inicia sesión en Akamai Control Center.
  2. Ve a la sección Seguridad.
  3. Selecciona Registros.
  4. Configura un nuevo envío de registros:

    • Fuente de registro: selecciona la configuración de tu WAF.
    • Destino: elige Amazon S3.
    • Segmento de S3: especifica el nombre del segmento de S3 que has creado.
    • Región: selecciona la región de AWS en la que se encuentra tu contenedor de S3.
    • ID de clave de acceso y clave de acceso secreta: proporciona las credenciales que has generado.
    • Formato de registro: elige el formato de registro que quieras (por ejemplo, JSON).
    • Frecuencia de entrega: selecciona la frecuencia con la que quieres que se entreguen los registros (por ejemplo, cada 5 minutos).

  5. Verifica la entrega de registros:

    • Después de configurar LDS, monitoriza el segmento de S3 para ver si hay archivos de registro entrantes.

Configurar feeds desde Configuración de SIEM > Feeds con AWS S3

Para configurar un feed, sigue estos pasos:

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir feed.
  3. En la página siguiente, haga clic en Configurar un solo feed.
  4. En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Registros de WAF de Akamai).
  5. Selecciona Amazon S3 como Tipo de fuente.
  6. Seleccione Akamai WAF como Tipo de registro.
  7. Haz clic en Siguiente.
  8. Especifique los valores de los siguientes parámetros de entrada:

    • Región: la región en la que se encuentra el segmento de Amazon S3.
    • URI de S3: el URI del segmento. s3:/BUCKET_NAME Sustituye lo siguiente:
      • BUCKET_NAME: el nombre del segmento.
    • El URI es un: selecciona el tipo de URI según la configuración del flujo de registros: Archivo único, Directorio o Directorio que incluye subdirectorios.
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
    • ID de clave de acceso: la clave de acceso del usuario con acceso al segmento de S3.
    • Clave de acceso secreta: la clave secreta del usuario con acceso al segmento de S3.
  9. Haz clic en Siguiente.

  10. Revise la configuración de la nueva fuente en la pantalla Finalizar y, a continuación, haga clic en Enviar.

Tabla de asignación de UDM

Campo de registro (ascendente) Asignación de UDM Lógica
attackData.clientIP principal.ip, principal.asset.ip Dirección IP del cliente que inicia la solicitud. Extraído del campo attackData.clientIP de los registros akamai_siem.
attackData.configId metadata.product_log_id ID de configuración de seguridad. Extraído del campo attackData.configId de los registros akamai_siem. También se ha añadido como detection_field en el objeto security_result.
attackData.policyId N/A Se usa en la lógica del analizador para rellenar security_result.summary con el valor PolicyId:[value].
attackData.ruleActions security_result.action, security_result.action_details Acciones realizadas en función de la regla activada. Extraído del campo attackData.ruleActions de los registros akamai_siem. "deny" se asigna a BLOCK, mientras que otros valores ("alert", "monitor", "allow" y "tarpit") se asignan a ALLOW. El valor original también se almacena en action_details.
attackData.ruleData security_result.detection_fields Datos asociados a la regla activada. Extraído del campo attackData.ruleData de los registros akamai_siem. Se ha añadido a security_result.detection_fields con la clave "RuleData".
attackData.ruleMessages security_result.threat_name Mensajes asociados a la regla activada. Extraído del campo attackData.ruleMessages de los registros akamai_siem.
attackData.ruleSelectors security_result.detection_fields Selectores asociados a la regla activada. Extraído del campo attackData.ruleSelectors de los registros akamai_siem. Se ha añadido a security_result.detection_fields con la clave "RuleSelector".
attackData.ruleTags security_result.category_details Etiquetas asociadas a la regla activada. Extraído del campo attackData.ruleTags de los registros akamai_siem.
attackData.ruleVersions security_result.detection_fields Versiones de las reglas activadas. Extraído del campo attackData.ruleVersions de los registros akamai_siem. Se ha añadido a security_result.detection_fields con la clave "Rule Version".
clientReputation principal.labels Información sobre la reputación del cliente. Extraído del campo clientReputation de los registros akamai_siem. Se ha añadido 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, en función del formato del registro.
cp additional.fields Código de CP. Extraído del campo cp. Se ha añadido a additional.fields con la clave "cp".
eventId metadata.product_log_id ID de evento. Extraído del campo eventId.
eventTime, log_date metadata.event_timestamp Marca de tiempo del evento. Se extrae de eventTime o se analiza a partir de log_date, según el formato del registro.
eventType.eventDefinition.eventDefinitionId target.resource.product_object_id ID de definición de evento. Extraído de eventType.eventDefinition.eventDefinitionId.
eventType.eventDefinition.eventDescription metadata.description Descripción del evento. Extraído de eventType.eventDefinition.eventDescription.
eventType.eventDefinition.eventName metadata.product_event_type Nombre del evento. Extraído de eventType.eventDefinition.eventName.
eventType.eventTypeId additional.fields ID del tipo de evento. Extraído de eventType.eventTypeId. Se ha añadido a additional.fields con la clave "eventTypeId".
eventType.eventTypeName additional.fields Nombre del tipo de evento. Extraído de eventType.eventTypeName. Se ha añadido a additional.fields con la clave "eventTypeName".
format N/A Usado por el analizador 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. Extraído 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, en función del formato del registro. Se ha convertido a mayúsculas.
httpMessage.path target.url Ruta de la solicitud. Se extrae de httpMessage.path, target_url o reqPath, en función del formato del registro. Si httpMessage.query está presente, se añade a la ruta con el separador "?".
httpMessage.port target.port Puerto. Se extrae de httpMessage.port o reqPort, según el formato del registro.
httpMessage.protocol N/A Usado por el analizador para determinar el protocolo.
httpMessage.query N/A Se usa en la lógica del analizador para añadirlo a httpMessage.path si está presente.
httpMessage.requestId network.session_id ID de solicitud. Se extrae de httpMessage.requestId o reqId, según el formato del registro.
httpMessage.requestHeaders, AkamaiSiemRequestHeaders additional.fields Encabezados de solicitud. Se extrae de httpMessage.requestHeaders o AkamaiSiemRequestHeaders, según el formato del registro. Se ha añadido 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 ha añadido a additional.fields con la clave "AkamaiSiemResponseHeaders".
httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code, statusCode network.http.response_code Código de respuesta HTTP. Extraído 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, en función del formato del registro.
httpMessage.useragent, network_http_user_agent, UA, useragent network.http.user_agent User-agent. Extraído de httpMessage.useragent, network_http_user_agent, UA o useragent, según el formato del registro.
log_description metadata.description Descripción del registro. Extraído de log_description.
log_rule security_result.rule_name Regla de registro. Extraído de log_rule.
message N/A El mensaje de registro sin procesar. Usada por el analizador para varias extracciones.
network_http_referral_url network.http.referral_url URL de referencia HTTP. Extraído de network_http_referral_url.
proto N/A Se usa en la lógica del analizador para rellenar security_result.summary si attackData.policyId no está presente.
reqHost target.hostname, target.asset.hostname Solicitar host. Extraído de reqHost.
reqId metadata.product_log_id, network.session_id ID de solicitud. Extraído de reqId.
reqMethod network.http.method Método de solicitud. Extraído de reqMethod.
reqPath target.url Ruta de la solicitud. Extraído de reqPath.
reqPort target.port Solicita la portabilidad. Extraído de reqPort.
rspContentType target.file.mime_type Tipo de contenido de la respuesta. Extraído de rspContentType.
securityRules security_result.rule_name, security_result.about.resource.attribute.labels Reglas de seguridad. Extraído de securityRules. La primera parte se asigna a rule_name y el resto se añade como etiquetas con las claves "non_deny_rules" y "deny_rule_format".
statusCode network.http.response_code Código de estado. Extraído de statusCode.
state principal.location.state, target.user.personal_address.state Estado. Extraído de state.
tlsVersion network.tls.version Versión de TLS. Extraído de tlsVersion.
type metadata.product_event_type Tipo de evento. Extraído de type.
UA network.http.user_agent User-agent. Extraído de UA.
version metadata.product_version, principal.asset.software.version Versión. Extraído de version.
N/A metadata.event_timestamp La marca de tiempo del evento se deriva del campo _ts de los registros akamai_lds, del campo httpMessage.start de los registros akamai_siem o del campo log_date de otros formatos.
N/A metadata.vendor_name Codificado como "Akamai".
N/A metadata.product_name Codificado como "Kona".
N/A metadata.log_type Codificado como "AKAMAI_WAF".
N/A network.application_protocol Asigna el valor "HTTP" a los registros akamai_siem y akamai_lds, o "DNS" a otros formatos.
N/A security_result.severity Define el valor 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 Se asigna el valor "NETWORK_HTTP" a la mayoría de los formatos de registro, "GENERIC_EVENT" a los eventos con los campos eventId o eventData, o "STATUS_UPDATE" a los eventos con los campos cli_ip o p_ip, pero sin reqHost.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.