Recopilar registros de WAF de Akamai
En este documento se explica cómo ingerir registros de WAF de Akamai en Google Security Operations mediante el conector CEF de Akamai y Bindplane.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Una instancia de Google SecOps
- Un host con Windows 2016 o una versión posterior, o Linux con systemd para instalar el agente de Bindplane
- Un servidor Linux (se recomienda CentOS, RHEL o Ubuntu) con al menos 2 núcleos de CPU, 6 GB de RAM y 2 GB de espacio libre en disco para el conector CEF de Akamai
- Java 8 (JRE 1.8) o una versión posterior instalado en el host del conector CEF
- Si se ejecuta a través de un proxy, asegúrese de que los puertos del cortafuegos estén abiertos según los requisitos del agente de Bindplane y de que el proxy permita las listas
*.cloudsecurity.akamaiapis.nety*.luna.akamaiapis.net. - Acceso privilegiado a Akamai Control Center
- Una configuración de seguridad de Akamai con App & API Protector, Kona Site Defender, Web Application Protector, Bot Manager o Account Protector habilitado
Obtener el archivo de autenticación de ingestión de Google SecOps
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recogida.
- Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.
Obtener el ID de cliente de Google SecOps
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Habilitar la integración de SIEM en Akamai Control Center
- Inicia sesión en Akamai Control Center.
- En WEB & DATA CENTER SECURITY (SEGURIDAD DE WEB Y CENTRO DE DATOS), haz clic en Security Configuration (Configuración de seguridad).
- Abre la configuración de seguridad y la versión adecuada de la que quieras recoger datos de SIEM.
- Haga clic en Configuración avanzada y expanda Recogida de datos para integraciones de SIEM.
- Haz clic en Activado para habilitar SIEM.
- Elige las políticas de seguridad de las que quieras exportar datos:
- Todas las políticas de seguridad: selecciona esta opción para enviar datos de SIEM de eventos que infrinjan alguna o todas las políticas de seguridad de la configuración de seguridad.
- Políticas de seguridad específicas: selecciona esta opción para enviar datos sobre una o varias políticas de seguridad específicas. Selecciona las políticas correspondientes en la lista desplegable.
- Opcional: Si usas Account Protector y quieres incluir el nombre de usuario sin cifrar, activa la casilla Incluir nombre de usuario.
- Opcional: Si quiere recibir información de huellas digitales JA4 en eventos SIEM, active la casilla Incluir la huella digital TLS del cliente JA4.
- Opcional: Si quieres excluir eventos que pertenezcan a un tipo de protección y a una acción específicos, haz clic en Añadir excepción. Selecciona la protección y las acciones asociadas que no quieras que recoja SIEM. Haz clic en Guardar.
- Copia el valor del campo ID de configuración de seguridad web. Guarda este ID para usarlo más adelante.
- Haz clic en Activar para enviar los cambios de configuración de seguridad a la red de producción. En Red, haga clic en Producción y, a continuación, en Activar.
Configurar un usuario para gestionar SIEM en Akamai Control Center
- En Akamai Control Center, vaya a ACCOUNT ADMIN (ADMINISTRACIÓN DE CUENTAS) y haga clic en Identity & access (Identidad y acceso).
- En la pestaña Usuarios y clientes de API, busca el usuario al que quieras asignar el rol o haz clic en el botón Crear usuario.
- Para asignar el rol de SIEM a un usuario que ya existe, sigue estos pasos:
- Abre la cuenta del usuario y haz clic en la pestaña Editar roles.
- Busca el grupo adecuado, haz clic en el menú Roles y selecciona el rol Gestionar SIEM.
- Haz clic en Enviar.
- Para asignar el rol de SIEM a un nuevo usuario, sigue estos pasos:
- Haz clic en Crear usuario.
- Introduce la información básica del usuario y ve a la sección Asignar roles.
- Busca el grupo adecuado, haz clic en el menú Roles y selecciona el rol Gestionar SIEM.
- Haz clic en Guardar.
Proporcionar credenciales de la API SIEM en Akamai Control Center
- Visita la página Crear credenciales de autenticación de la documentación de Akamai.
- Sigue los pasos para aprovisionar la API SIEM para el usuario al que has asignado la gestión de SIEM.
- Copia y guarda de forma segura las siguientes credenciales:
- Token de acceso
- Client Token
- Secreto de cliente
- URL base
Instalar el conector CEF de Akamai
- En tu servidor Linux, descarga el paquete de distribución más reciente de CEF Connector del repositorio de GitHub de Akamai.
- Transfiere el paquete a tu servidor mediante
wgeto SFTP. - Verifica el hash SHA-256 del archivo descargado para comprobar su integridad.
Extrae el paquete de distribución:
unzip CEFConnector-<version>.zipVe al directorio extraído:
cd CEFConnector-<version>Para instalar el servicio, crea un enlace simbólico a la secuencia de comandos de inicio:
sudo ln -s /path/to/CEFConnector-<version>/bin/AkamaiCEFConnector.sh /etc/init.d/AkamaiCEFConnector
Configurar el conector CEF de Akamai
Ve al directorio
configdentro de la instalación del conector CEF:cd configAbre el archivo
CEFConnector.propertiescon un editor de texto (por ejemplo,nanoovi):sudo nano CEFConnector.propertiesConfigure los siguientes parámetros obligatorios:
# Akamai API Configuration akamai.data.requesturlhost=https://cloudsecurity.akamaiapis.net akamai.data.configs=<YOUR_SECURITY_CONFIG_ID> akamai.data.timebased=false akamai.data.limit=200000 # API Credentials (from Step: Provision SIEM API credentials) akamai.data.accesstoken=<YOUR_ACCESS_TOKEN> akamai.data.clienttoken=<YOUR_CLIENT_TOKEN> akamai.data.clientsecret=<YOUR_CLIENT_SECRET> akamai.data.baseurl=<YOUR_BASE_URL> # CEF Format Configuration akamai.cefformatheader=CEF:0|Akamai|akamai_siem|1.0|eventClassId()|name()|severity() akamai.cefformatextension=act=appliedAction() app=${httpMessage.protocol} c6a2=ipv6src() c6a2Label="Source IPv6 Address" cs1=${attackData.rules} cs1Label="Rules" cs2=${attackData.ruleMessages} cs2Label="Rule Messages" cs3=${attackData.ruleData} cs3Label="Rule Data" cs4=${attackData.ruleSelectors} cs4Label="Rule Selectors" cs5=${attackData.clientReputation} cs5Label="Client Reputation" cs6=${attackData.apiId} cs6Label="API ID" devicePayloadId=${httpMessage.requestId} dhost=${httpMessage.host} dpt=${httpMessage.port} flexString1=${attackData.configId} flexString1Label="Security Config ID" flexString2=${attackData.policyId} flexString2Label="Firewall Policy Id" out=${httpMessage.bytes} request=requestURL() requestMethod=${httpMessage.method} src=${attackData.clientIP} start=${httpMessage.start} AkamaiSiemSlowPostAction=${attackData.slowPostAction} AkamaiSiemSlowPostRate=${attackData.slowPostRate} AkamaiSiemRuleVersions=${attackData.ruleVersions} AkamaiSiemRuleTags=${attackData.ruleTags} AkamaiSiemJA4=${identity.ja4} AkamaiSiemRuleActions=${attackData.ruleActions} # Connector Pull Configuration connector.refresh.period=60 connector.consumer.count=3 connector.retry=5 # Proxy Configuration (if applicable) # connector.proxy.host= # connector.proxy.port=Sustituye los siguientes marcadores de posición por tus valores reales:
<YOUR_SECURITY_CONFIG_ID>: el ID de configuración de seguridad web que has copiado anteriormente. Si hay varias configuraciones, separe los IDs con punto y coma (por ejemplo,12345;67890).<YOUR_ACCESS_TOKEN>: el token de acceso de las credenciales de la API de Akamai<YOUR_CLIENT_TOKEN>: el token de cliente de las credenciales de la API de Akamai<YOUR_CLIENT_SECRET>: el secreto de cliente de las credenciales de la API de Akamai<YOUR_BASE_URL>: la URL base de las credenciales de la API de Akamai.
Guarda y cierra el archivo.
Configurar el registro del conector CEF
- Ve al directorio
configdentro de la instalación del conector CEF. Abre el archivo
log4j2.xmlcon un editor de texto:sudo nano log4j2.xmlConfigure los siguientes parámetros para que syslog envíe datos a Bindplane:
<!-- Syslog Appender Configuration --> <Syslog name="SyslogAppender" host="<BINDPLANE_IP_ADDRESS>" port="<BINDPLANE_PORT>" protocol="<PROTOCOL>" facility="LOCAL0" format="RFC5424"> <PatternLayout pattern="%m%n"/> </Syslog>Sustituye los siguientes marcadores de posición:
<BINDPLANE_IP_ADDRESS>: la dirección IP del servidor en el que está instalado el agente de Bindplane.<BINDPLANE_PORT>: número de puerto en el que escucha el agente de Bindplane (por ejemplo,514para UDP o601para TCP).<PROTOCOL>: seleccionaUDPoTCP.
Asegúrate de que el conector CEF envíe los registros al servidor syslog remoto (BindPpane) configurando los ajustes específicos de CEF:
# In CEFConnector.properties, ensure these are set: # Note: These settings are typically in log4j2.xml but referenced here for clarityGuarda y cierra el archivo.
Iniciar el conector CEF de Akamai
Inicia el servicio CEF Connector:
sudo /etc/init.d/AkamaiCEFConnector startComprueba que el servicio se está ejecutando:
sudo /etc/init.d/AkamaiCEFConnector statusMonitoriza los registros para asegurarte de que el conector extrae eventos de Akamai y los envía a Bindplane:
tail -f /path/to/CEFConnector-<version>/bin/logs/cefconnector.log
Instalar el agente de Bindplane
Instala el agente Bindplane en tu sistema operativo Windows o Linux siguiendo las instrucciones que se indican a continuación.
Instalación de ventanas
- Abre la petición de comando o PowerShell como administrador.
Ejecuta el siguiente comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación de Linux
- Abre un terminal con privilegios de root o sudo.
Ejecuta el siguiente comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalación adicionales
- Para ver otras opciones de instalación, consulta esta guía de instalación.
Configurar el agente de Bindplane para ingerir Syslog y enviarlo a Google SecOps
Accede al archivo de configuración:
- Busca el archivo
config.yaml. Normalmente, se encuentra en el directorio/etc/bindplane-agent/en Linux o en el directorio de instalación en Windows. - Abre el archivo con un editor de texto (por ejemplo,
nano,vio Bloc de notas).
- Busca el archivo
Edita el archivo
config.yamlde la siguiente manera:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" tcplog: # Alternative TCP receiver if using TCP protocol listen_address: "0.0.0.0:601" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in the Get ingestion authentication file section creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from the Get customer ID section customer_id: <YOUR_CUSTOMER_ID> # Select the appropriate regional endpoint based on where your Google SecOps instance is provisioned # For regional endpoints, see: https://cloud.google.com/chronicle/docs/reference/ingestion-api#regional_endpoints endpoint: malachiteingestion-pa.googleapis.com # Set the log_type to ensure the correct parser is applied log_type: 'AKAMAI_WAF' raw_log_field: body # Add optional ingestion labels for better organization ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog # - tcplog # Uncomment if using TCP exporters: - chronicle/chronicle_w_labels
Reinicia el agente de Bindplane para aplicar los cambios
Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:
sudo systemctl restart bindplane-agentPara reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Verificar la ingestión de registros
- Inicia sesión en la consola de Google SecOps.
- Ve a Búsqueda o Análisis de registros sin procesar.
Busca registros recientes de Akamai WAF mediante la etiqueta de ingestión:
metadata.log_type = "AKAMAI_WAF"Verifica que los registros aparecen con los campos y las marcas de tiempo esperados.
Comprueba que los campos de formato CEF se analizan correctamente y se asignan a UDM.
Solución de problemas
Problemas con el conector CEF
- No se extraen eventos: comprueba si hay errores en el archivo
cefconnector.log. Verifica que las credenciales de la API de Akamai sean correctas y que los IDs de configuración de seguridad sean válidos. - Errores de conexión: compruebe que los ajustes de proxy (si procede) estén configurados correctamente y que los dominios necesarios estén incluidos en la lista de permitidos.
Restablecimiento de la base de datos: si necesitas restablecer el seguimiento de la diferencia horaria, ejecuta el siguiente comando:
sudo /etc/init.d/AkamaiCEFConnector resetdb
Problemas con el agente de Bindplane
- Los registros no llegan a Bindplane: comprueba que el conector CEF esté configurado para enviar syslog a la dirección IP y al puerto correctos de Bindplane. Comprueba las reglas de cortafuegos entre el conector CEF y el agente de Bindplane.
Los registros no llegan a Google SecOps: comprueba el archivo de configuración de Bindplane, el ID de cliente y la ruta de autenticación de la ingestión. Comprueba si hay errores en los registros de Bindplane:
sudo journalctl -u observiq-otel-collector -f
Red y conectividad
- Verifica que el conector CEF pueda acceder a los endpoints de la API SIEM de Akamai.
- Verifica que el agente de Bindplane pueda acceder al endpoint de ingestión de Google SecOps (
malachiteingestion-pa.googleapis.com). - Comprueba que todos los puertos de firewall necesarios estén abiertos.
Recuperar eventos de seguridad anteriores
El conector CEF de Akamai funciona de dos formas:
- Basado en el desplazamiento (opción recomendada): el conector registra automáticamente los eventos de seguridad a medida que se recogen casi en tiempo real. Este es el modo predeterminado cuando
akamai.data.timebasedestá configurado comofalse. - Basada en el tiempo: te permite recuperar eventos que se hayan producido en un periodo concreto (hasta 12 horas).
Para recuperar eventos de seguridad que faltan o que se han producido en el pasado, sigue estos pasos:
Abre el archivo de configuración del conector:
sudo nano /path/to/CEFConnector-<version>/config/CEFConnector.propertiesCambia la configuración basada en el tiempo:
akamai.data.timebased=true akamai.data.timebased.from=<EPOCH_START_TIME> akamai.data.timebased.to=<EPOCH_END_TIME>- Sustituye
<EPOCH_START_TIME>por la hora de inicio en formato de época (en las últimas 12 horas). - Sustituye
<EPOCH_END_TIME>por la hora de finalización en formato de época (opcional; si se deja en blanco, se obtienen los eventos hasta el presente).
- Sustituye
Reinicia el conector CEF:
sudo /etc/init.d/AkamaiCEFConnector restartUna vez que se hayan recuperado los datos históricos, vuelve al modo de desfase:
akamai.data.timebased=falseVuelve a reiniciar el conector CEF.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
src (attackData.clientIP) |
principal.ip |
Dirección IP de origen del cliente que hace la solicitud. |
c6a2 (ipv6src) |
principal.ip |
Dirección IPv6 de origen si attackData.clientIP está en formato IPv6 |
dhost (httpMessage.host) |
target.hostname |
Nombre de host del encabezado HTTP HOST |
dpt (httpMessage.port) |
target.port |
Número de puerto utilizado por la solicitud entrante. |
requestMethod (httpMessage.method) |
network.http.method |
Método HTTP de la solicitud entrante (GET, POST, etc.) |
request (requestURL) |
target.url |
Calcula la URL completa a partir de los campos httpMessage. |
cs1 (attackData.rules) |
security_result.rule_id |
IDs de las reglas que se han activado en esta solicitud |
cs2 (attackData.ruleMessages) |
security_result.rule_name |
Mensajes de las reglas que se han activado |
act (appliedAction) |
security_result.action |
Acción realizada (alerta, denegación, cancelación, etc.) |
severity |
security_result.severity |
Gravedad calculada (5 para detectar y 10 para mitigar) |
cs5 (attackData.clientReputation) |
security_result.threat_name |
Puntuaciones de IP de cliente para la reputación de cliente |
cs6 (attackData.apiId) |
security_result.detection_fields |
ID de API para la protección de APIs |
start (httpMessage.start) |
metadata.event_timestamp |
Hora en la que el servidor perimetral inició la conexión (formato de época). |
devicePayloadId (httpMessage.requestId) |
metadata.product_log_id |
ID único global del mensaje. |
flexString1 (attackData.configId) |
security_result.detection_fields |
ID de la configuración de seguridad aplicada a esta solicitud |
flexString2 (attackData.policyId) |
security_result.detection_fields |
ID de la política de cortafuegos aplicada a esta solicitud. |
AkamaiSiemJA4 (identity.ja4) |
network.tls.client.ja3 |
Huella digital TLS de cliente JA4 |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.