Recopila registros del WAF de Akamai

Compatible con:

En este documento, se explica cómo exportar y transferir registros del WAF de Akamai a Google Security Operations con Google Cloud Storage o AWS S3. El analizador controla los registros y admite los formatos syslog y CEF. Extrae campos como direcciones IP, URLs, métodos HTTP, códigos de respuesta, usuarios-agente y la información de las reglas de seguridad, y los asigna al modelo de datos unificado (UDM) para una representación coherente. El analizador también controla campos específicos de Akamai, como attackData y clientReputation, y realiza las transformaciones de datos necesarias y enriquece el resultado de UDM.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

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

Exporta e ingiere registros del WAF de Akamai desde Cloud Storage

En esta sección, se describe el paso inicial del proceso: configurar el almacenamiento necesario para tus registros del WAF de Akamai.

Crea un Google Cloud bucket de Storage

  1. Accede a la consola de Google Cloud .
  2. Ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  3. Haz clic en Crear.

  4. En la página Crear un bucket, ingresa la información de tu bucket. Después de cada uno de los siguientes pasos, haz clic en Continuar para avanzar al siguiente paso:

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

      • Ingresa un nombre único que cumpla con los requisitos de nombres de bucket (por ejemplo, akamai-waf-logs).
      • Para habilitar el espacio de nombres jerárquico, haz clic en la flecha de expansión para expandir la sección Optimizar las cargas de trabajo orientadas a archivos y con uso intensivo de datos y, luego, selecciona Habilitar el espacio de nombres jerárquico en este bucket.
      • Para agregar una etiqueta de bucket, haz clic en la flecha de expansión para expandir la sección Etiquetas.
      • Haz clic en Agregar etiqueta y especifica una clave y un valor para tu etiqueta.
    2. En la sección Eligir dónde almacenar tus datos, haz lo siguiente:

      • Selecciona un tipo de ubicación
      • Usa el menú desplegable del tipo de ubicación para seleccionar una Ubicación en la que se almacenarán de forma permanente los datos de objetos de tu bucket.
      • Para configurar la replicación entre bucket, expande la sección Configura la bucket entre buckets.
    3. En la sección Elige una clase de almacenamiento para tus datos, selecciona una clase de almacenamiento predeterminada para el bucket o selecciona Autoclass para la administración automática de clases de almacenamiento de los datos de tu bucket.

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

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

      • Selecciona cualquiera de las opciones de Protección de datos que desees configurar para tu bucket.
      • Para elegir cómo se encriptarán los datos de tus objetos, haz clic en la flecha desplegable etiquetada como Encriptación de datos y selecciona un método de encriptación de datos.
  5. Haz clic en Crear.

Configura permisos para 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. Ingresa un nombre de cuenta de servicio para mostrar en la consola de Google Cloud .

  4. Haz clic en Crear y continuar.

  5. Otorga el rol roles/storage.admin en el bucket.

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

Crea y descarga Google Cloud el archivo de claves de la 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 electrónico de la cuenta de servicio recién creada.

  4. Haz clic en la pestaña Claves.

  5. Haz clic en el menú Agregar clave y, luego, selecciona Crear clave nueva.

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

    • Si haces clic en Crear, se descargará un archivo de claves de cuenta de servicio. Después de descargar el archivo de claves, no puedes volver a descargarlo.
    • La clave descargada tiene el siguiente formato, en el que PRIVATE_KEY es la parte privada del par de claves pública-privada.

Configura el WAF de Akamai para enviar registros a Cloud Storage

  1. Accede a Akamai Control Center.
  2. Ve a la sección Seguridad.
  3. Selecciona Registros.
  4. Configura una nueva entrega de registros:
    • Fuente de registro: Selecciona la configuración del WAF.
    • Destino: Selecciona Google Cloud Storage.
    • Nombre visible: Ingresa una descripción del nombre único.
    • Bucket: Especifica el nombre del bucket de Cloud Storage que creaste (por ejemplo, gs://akamai-waf-logs).
    • ID del proyecto: Ingresa el ID único de tu proyecto Google Cloud .
    • Nombre de la cuenta de servicio: Ingresa el nombre de la cuenta de servicio que creaste antes.
    • Clave privada: Ingresa el valor de private_key de la clave JSON que generaste y descargaste antes. (Debes ingresar tu 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 desees (por ejemplo, JSON).
    • Frecuencia de envío: Selecciona la frecuencia con la que deseas 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 proporcionaste.

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

Configura feeds

Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:

  • Configuración de SIEM > Feeds
  • Centro de contenido > Paquetes de contenido

Configura feeds desde Configuración del SIEM > Feeds con Google Cloud Almacenamiento

Para configurar un feed, sigue estos pasos:

  1. Ve a SIEM Settings > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la siguiente página, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros del WAF de Akamai).
  5. Selecciona Google Cloud Storage como el Tipo de fuente.
  6. Selecciona Akamai WAF como el Tipo de registro.
  7. Haz clic en Obtener cuenta de servicio como la Cuenta de servicio de Chronicle.
  8. Haz clic en Siguiente.
  9. Especifica valores para los siguientes parámetros de entrada:

    • URI del bucket de almacenamiento:URL del bucket de almacenamiento Google Cloud (por ejemplo, gs://akamai-waf-logs)
    • URI Is A: Selecciona Directory which includes subdirectories.
    • Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
  10. Haz clic en Siguiente.

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

Configura feeds desde el Centro de contenido

Especifica valores para los siguientes campos:

  • URI del bucket de almacenamiento:URL del bucket de almacenamiento Google Cloud (por ejemplo, gs://akamai-waf-logs)
  • URI Is A: Selecciona Directory which includes subdirectories.
  • Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.

Opciones avanzadas

  • Nombre del feed: Es un valor completado previamente que identifica el feed.
  • Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
  • Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
  • Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.

Exporta e ingiere registros del WAF de Akamai desde AWS S3

En esta sección, se explican los pasos iniciales para configurar tu bucket de Amazon S3 para recibir y almacenar registros del WAF de Akamai.

Configura el bucket de Amazon S3

  1. Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Crea un bucket.
  2. Guarda el Nombre y la Región del bucket para futuras referencias.
  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 para guardar la clave de acceso y la clave de acceso secreta para consultarlas 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 a Akamai Control Center.
  2. Ve a la sección Seguridad.
  3. Selecciona Registros.
  4. Sigue estos pasos para configurar una nueva entrega de registros:

    • Fuente de registro: Selecciona la configuración del WAF.
    • Destino: 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 que desees (por ejemplo, JSON).
    • Frecuencia de entrega: Selecciona la frecuencia con la que deseas que se entreguen los registros (por ejemplo, cada 5 minutos).

  5. Verifica la entrega del registro:

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

Configura feeds desde SIEM Settings > Feeds con AWS S3

Para configurar un feed, sigue estos pasos:

  1. Ve a SIEM Settings > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la siguiente página, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros del WAF de Akamai).
  5. Selecciona Amazon S3 como el Tipo de fuente.
  6. Selecciona Akamai WAF como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. 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 is a: Selecciona el TIPO DE URI según la configuración del flujo de registros: Single file | Directory | Directory which includes subdirectories.
    • Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
    • 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.
  9. Haz clic en Siguiente.

  10. 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 (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 Es el ID de configuración de seguridad. Se extrae del campo attackData.configId en los registros de akamai_siem. También se agregó como un 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 Son las acciones que se tomaron 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 Son los 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 a 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 a 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 Son las etiquetas asociadas a la regla activada. Se extrae del campo attackData.ruleTags en los registros de akamai_siem.
attackData.ruleVersions security_result.detection_fields Son las 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 "Versión de la regla".
clientReputation principal.labels Es la información de reputación del cliente. Se extrae del campo clientReputation en los registros de akamai_siem. Se agregó como etiqueta a la 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 Es la 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 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 Son los 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ó a mayúsculas.
httpMessage.path target.url Es la 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 agregar 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 Son los 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 Es el 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 Es la 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 Es el usuario-agente. Se extrae de httpMessage.useragent, network_http_user_agent, UA o useragent, según el formato del registro.
log_description metadata.description Es la descripción del registro. Se extrajo de log_description.
log_rule security_result.rule_name Es la regla de registro. Se extrajo de log_rule.
message N/A Es el mensaje de registro sin procesar. El analizador lo usa para varias extracciones.
network_http_referral_url network.http.referral_url Es la URL de referencia HTTP. Se extrajo de network_http_referral_url.
proto N/A Se usa en la lógica del analizador para completar security_result.summary si attackData.policyId no está presente.
reqHost target.hostname, target.asset.hostname Es el host de la solicitud. Se extrajo de reqHost.
reqId metadata.product_log_id, network.session_id ID de la solicitud. Se extrajo de reqId.
reqMethod network.http.method Es el método de la solicitud. Se extrajo de reqMethod.
reqPath target.url Es la 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 Es la versión de TLS. Se extrajo de tlsVersion.
type metadata.product_event_type Es el tipo de evento. Se extrajo de type.
UA network.http.user_agent Es el 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 deriva del campo _ts en los registros de akamai_lds, el campo httpMessage.start en los registros de akamai_siem o el campo log_date en otros formatos.
N/A metadata.vendor_name Se codificó de forma rígida como "Akamai".
N/A metadata.product_name Se codificó de forma rígida como "Kona".
N/A metadata.log_type Se codificó de forma rígida como "AKAMAI_WAF".
N/A network.application_protocol Se debe configurar como "HTTP" para los registros de akamai_siem y akamai_lds, o como "DNS" para otros formatos.
N/A security_result.severity Se debe establecer en MEDIUM para la acción "alert", en CRITICAL para la acción "deny" y en HIGH para otras acciones.
N/A event.idm.read_only_udm.metadata.event_type Se establece en "NETWORK_HTTP" para la mayoría de los formatos de registro, en "GENERIC_EVENT" para los eventos con campos eventId o eventData, o en "STATUS_UPDATE" para los eventos con cli_ip o p_ip, pero sin reqHost.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.