Recopila registros del WAF de Akamai
En este documento, se explica cómo transferir registros del WAF de Akamai a Google Security Operations con el conector CEF de Akamai y Bindplane.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Un host de Windows 2016 o posterior, o Linux con systemd para la instalación del agente de Bindplane
- Un servidor Linux (se recomienda CentOS/RHEL/Ubuntu) con al menos 2 núcleos de CPU, 6 GB de RAM y 2 GB de espacio libre en el disco para el conector de CEF de Akamai
- Java 8 (JRE 1.8) o una versión posterior instalada en el host del conector de CEF
- Si se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos según los requisitos del agente de Bindplane y de que las listas de entidades permitidas del proxy sean
*.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 habilitados
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.
Obtén el ID de cliente de Google SecOps
- Accede a 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.
Habilita la integración del SIEM en Akamai Control Center
- Accede a Akamai Control Center.
- En WEB & DATA CENTER SECURITY, haz clic en Security Configuration.
- Abre la configuración de seguridad y la versión adecuada para la que deseas recopilar datos del SIEM.
- Haz clic en Configuración avanzada y expande Recopilación de datos para las integraciones de SIEM.
- Haz clic en Activado para habilitar el SIEM.
- Elige las políticas de seguridad para las que deseas exportar datos:
- Todas las políticas de seguridad: Selecciona esta opción para enviar datos del SIEM sobre los eventos que incumplen cualquiera de las políticas de seguridad o todas ellas dentro de la configuración de seguridad.
- Políticas de seguridad específicas: Selecciona esta opción para enviar datos sobre una o más políticas de seguridad específicas. Selecciona las políticas adecuadas en la lista desplegable.
- Opcional: Si usas Account Protector y quieres incluir el nombre de usuario sin encriptar, activa la casilla de verificación Incluir nombre de usuario.
- Opcional: Si deseas recibir información de la huella digital de JA4 en los eventos de SIEM, activa la casilla de verificación Incluir la huella digital de TLS del cliente de JA4.
- Opcional: Si deseas excluir eventos que pertenecen a un tipo de protección y una acción específicos, haz clic en Agregar excepción. Selecciona la protección y las acciones asociadas que no quieres que recopile el 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, haz clic en Producción y, luego, en Activar.
Configura un usuario para administrar el SIEM en Akamai Control Center
- En Akamai Control Center, en ACCOUNT ADMIN, haz clic en Identity & access.
- En la pestaña Usuarios y clientes de API, busca el usuario al que deseas asignar el rol o haz clic en el botón Crear usuario.
- Para asignar el rol de SIEM a un usuario existente, haz lo siguiente:
- 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 Administrar SIEM.
- Haz clic en Enviar.
- Para asignar el rol de SIEM a un usuario nuevo, haz lo siguiente:
- Haz clic en Crear usuario.
- Ingresa la información básica del usuario y ve a la sección Assign Roles.
- Busca el grupo adecuado, haz clic en el menú Roles y selecciona el rol Administrar SIEM.
- Haz clic en Guardar.
Aprovisiona credenciales de la API del SIEM en Akamai Control Center
- Visita la página Create authentication credentials en la documentación de Akamai.
- Sigue los pasos para aprovisionar la API del SIEM para el usuario al que le asignaste la administración del SIEM.
- Copia y guarda las siguientes credenciales de forma segura:
- Token de acceso (Access Token)
- Token cliente
- Client Secret (Secreto del cliente)
- URL base
Instala el conector de CEF de Akamai
- En tu servidor Linux, descarga el paquete de distribución más reciente del conector de CEF desde el repositorio de GitHub de Akamai.
- Transfiere el paquete a tu servidor con
wgeto SFTP. - Verifica el hash SHA256 del archivo descargado para garantizar su integridad.
Extrae el paquete de distribución:
unzip CEFConnector-<version>.zipNavega al directorio extraído:
cd CEFConnector-<version>Para instalar el servicio, crea un vínculo simbólico a la secuencia de comandos de inicio:
sudo ln -s /path/to/CEFConnector-<version>/bin/AkamaiCEFConnector.sh /etc/init.d/AkamaiCEFConnector
Configura el conector de CEF de Akamai
Navega al directorio
configdentro de la instalación del conector de CEF:cd configAbre el archivo
CEFConnector.propertiescon un editor de texto (por ejemplo,nano,vi):sudo nano CEFConnector.propertiesConfigura 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=Reemplaza los siguientes marcadores de posición por tus valores reales:
<YOUR_SECURITY_CONFIG_ID>: Es el ID de configuración de seguridad web que copiaste antes. Para varias configuraciones, separa los IDs con punto y coma (por ejemplo,12345;67890).<YOUR_ACCESS_TOKEN>: Es el token de acceso de las credenciales de la API de Akamai.<YOUR_CLIENT_TOKEN>: Es el token del cliente de las credenciales de la API de Akamai.<YOUR_CLIENT_SECRET>: El secreto del cliente de las credenciales de la API de Akamai<YOUR_BASE_URL>: Es la URL base de las credenciales de la API de Akamai.
Guarde y cierre el archivo.
Configura el registro del conector de CEF
- Navega al directorio
configdentro de la instalación del conector de CEF. Abre el archivo
log4j2.xmlcon un editor de texto:sudo nano log4j2.xmlConfigura los siguientes parámetros para la salida de syslog 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>Reemplaza los marcadores de posición que se indican más abajo:
<BINDPLANE_IP_ADDRESS>: La dirección IP del servidor en el que está instalado el agente de Bindplane<BINDPLANE_PORT>: Es el 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 de CEF envíe registros al servidor syslog remoto (BindPpane) configurando los parámetros específicos de CEF:
# In CEFConnector.properties, ensure these are set: # Note: These settings are typically in log4j2.xml but referenced here for clarityGuarde y cierre el archivo.
Inicia el conector de CEF de Akamai
Inicia el servicio del conector de CEF:
sudo /etc/init.d/AkamaiCEFConnector startVerifica que el servicio esté en ejecución:
sudo /etc/init.d/AkamaiCEFConnector statusSupervisa 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
Instala el agente de BindPlane
Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.
Instalación en Windows
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el comando siguiente:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación en Linux
- Abre una terminal con privilegios de raíz o sudo.
Ejecuta el comando siguiente:
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 obtener más opciones de instalación, consulta esta guía de instalación.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
Accede al archivo de configuración:
- Ubica el archivo
config.yaml. Por lo general, 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).
- Ubica 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 de Servicios o ingresar el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Verifica la transferencia de registros
- Accede a la consola de Google SecOps.
- Ve a Search o Raw Log Scan.
Busca registros recientes del WAF de Akamai con la etiqueta de transferencia:
metadata.log_type = "AKAMAI_WAF"Verifica que los registros aparezcan con los campos y las marcas de tiempo esperados.
Verifica que los campos de formato CEF se analicen y asignen correctamente al UDM.
Soluciona problemas
Problemas con el conector de CEF
- No se extraen eventos: Revisa el archivo
cefconnector.logen busca de errores. 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: Asegúrate de que la configuración del proxy (si corresponde) esté configurada correctamente y de que los dominios requeridos estén en la lista de entidades permitidas.
Restablecimiento de la base de datos: Si necesitas restablecer el seguimiento de la compensación, ejecuta el siguiente comando:
sudo /etc/init.d/AkamaiCEFConnector resetdb
Problemas del agente de Bindplane
- Los registros no llegan a BindPlane: Verifica que el conector CEF esté configurado para enviar syslog a la dirección IP y el puerto correctos de BindPlane. Verifica las reglas de firewall entre el conector de CEF y el agente de Bindplane.
Los registros no llegan a Google SecOps: Verifica el archivo de configuración de Bindplane, el ID de cliente y la ruta de autenticación de la transferencia. Revisa los registros de Bindplane en busca de errores:
sudo journalctl -u observiq-otel-collector -f
Red y conectividad
- Verifica que el conector de CEF pueda acceder a los extremos de la API del SIEM de Akamai.
- Verifica que el agente de Bindplane pueda acceder al extremo de transferencia de Google SecOps (
malachiteingestion-pa.googleapis.com). - Verifica que todos los puertos de firewall necesarios estén abiertos.
Cómo recuperar eventos de seguridad anteriores
El conector de CEF de Akamai funciona en dos modos:
- Basado en desfase (recomendado): El conector registra automáticamente los eventos de seguridad a medida que se recopilan casi en tiempo real. Este es el modo predeterminado cuando
akamai.data.timebasedse establece enfalse. - Basado en el tiempo: Te permite recuperar eventos que ocurrieron dentro de un período específico (hasta 12 horas en el pasado).
Para recuperar eventos de seguridad faltantes o anteriores, 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>- Reemplaza
<EPOCH_START_TIME>por la hora de inicio en formato de época (en las últimas 12 horas). - Reemplaza
<EPOCH_END_TIME>por la hora de finalización en formato de época (opcional; si se deja en blanco, se extraen los eventos hasta el presente).
- Reemplaza
Reinicia el conector de CEF:
sudo /etc/init.d/AkamaiCEFConnector restartDespués de recuperar los datos históricos, vuelve al modo de desfase:
akamai.data.timebased=falseReinicia el conector de CEF nuevamente.
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 realiza 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 que usa la solicitud entrante |
requestMethod (httpMessage.method) |
network.http.method |
Método HTTP de la solicitud entrante (GET, POST, etcétera) |
request (requestURL) |
target.url |
URL completa calculada a partir de los campos de httpMessage |
cs1 (attackData.rules) |
security_result.rule_id |
IDs de las reglas que se activaron para esta solicitud |
cs2 (attackData.ruleMessages) |
security_result.rule_name |
Mensajes de las reglas que se activaron |
act (appliedAction) |
security_result.action |
Acción realizada (alerta, rechazo, anulación, etc.) |
severity |
security_result.severity |
Gravedad calculada (5 para detectar, 10 para mitigar) |
cs5 (attackData.clientReputation) |
security_result.threat_name |
Puntuaciones de IP de cliente para la reputación del cliente |
cs6 (attackData.apiId) |
security_result.detection_fields |
ID de API para la protección de API |
start (httpMessage.start) |
metadata.event_timestamp |
Fecha y hora en 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 firewall aplicada a esta solicitud |
AkamaiSiemJA4 (identity.ja4) |
network.tls.client.ja3 |
Huella digital de TLS del cliente de JA4 |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.