Recopila registros de la WAF de Cloudflare
Este analizador extrae campos de los registros JSON del firewall de aplicaciones web (WAF) de Cloudflare, los transforma y los asigna al modelo de datos unificado (UDM). Controla varias acciones de Cloudflare y enriquece los datos con metadatos y la información de la red antes de estructurar el resultado en el formato UDM.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de tener acceso con privilegios a Google Cloud.
- Asegúrate de tener un plan de Cloudflare Enterprise.
- Asegúrate de tener acceso con privilegios a Cloudflare.
Crea un Google Cloud bucket de almacenamiento
- Accede a la Google Cloud consola
Ve a la página Buckets de Cloud Storage.
Haz clic en Crear.
Configura el bucket:
- Nombre: Ingresa un nombre único que cumpla con los requisitos de nombre de bucket (por ejemplo, cloudflare-waf).
- Elige dónde almacenar tus datos: Selecciona una ubicación.
- Elige una clase de almacenamiento para tus datos: Selecciona una clase de almacenamiento predeterminada para el bucket o selecciona Clase automática para la administración automática de clases de almacenamiento.
- Elige cómo 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 de tu bucket.
- Clase de almacenamiento: Elige según tus necesidades (por ejemplo, Estándar).
Haz clic en Crear.
Otorga permisos de bucket al usuario de IAM de Cloudflare
- En Google Cloud, ve a Almacenamiento > Navegador > Bucket > Permisos.
- Agrega la cuenta logpush@cloudflare-data.iam.gserviceaccount.com con el permiso de administrador de objetos de almacenamiento.
Crea un trabajo de Logpush para los registros de WAF con la IU de Cloudflare
- Accede a Cloudflare.
- Ve a Analytics y registros > Logpush.
- Selecciona Crear un trabajo de Logpush.
- En Selecciona un destino, elige Google Cloud Storage.
- Ingresa los siguientes detalles del destino:
- Bucket: Google Cloud Nombre del bucket de almacenamiento
- Ruta: Es la ubicación del bucket dentro del contenedor de almacenamiento.
- Selecciona Organizar registros en subcarpetas diarias.
- Haz clic en Continuar.
- Selecciona el conjunto de datos Seguridad (WAF) para enviarlo al almacenamiento.
- Configura la tarea de logpush:
- Ingresa el nombre del trabajo.
- En Si los registros coinciden, puedes seleccionar los eventos que deseas incluir o quitar de tus registros. Consulta Filtros para obtener más información. No todos los conjuntos de datos tienen esta opción disponible.
- En los campos Enviar lo siguiente, puedes enviar todos los registros a tu destino de almacenamiento o elegir de forma selectiva los que deseas enviar.
- Haz clic en Enviar.
Configura un feed en Google SecOps para transferir registros de WAF de Cloudflare
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de WAF de Cloudflare).
- Selecciona Google Cloud Storage como el Tipo de fuente.
- Selecciona Cloudflare WAF como el Tipo de registro.
- Haz clic en Obtener cuenta de servicio.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
- URI de GCS: Es la URL de Cloud Storage.
- El URI es un: selecciona Directorio que incluye subdirectorios.
- Opciones de eliminación de fuentes: Selecciona la opción de eliminación según tus preferencias.
- 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.
Haz clic en Siguiente.
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 | Asignación de UDM | Lógica |
---|---|---|
Action |
security_result.action_details |
El valor de Action del registro sin procesar se asigna directamente a este campo de la AUA. |
Action |
security_result.action |
El valor de este campo se deriva del campo Action en el registro sin procesar. Si Action es "allow", el campo UDM se establece en ALLOW . Si Action es "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved" o "managedchallengeinteractivesolved", el campo UDM se establece en ALLOW_WITH_MODIFICATION . Si Action es "drop", "block" o "connectionclose", el campo UDM se establece en BLOCK . Si Action es "challengefailed" o "jschallengefailed", el campo de la AUA se establece en FAIL . De lo contrario, se establece como UNKNOWN_ACTION . |
ClientASN |
network.asn |
El valor de ClientASN del registro sin procesar se asigna directamente a este campo de la AUA después de convertirlo en una cadena. |
ClientASNDescription |
additional.fields.key |
La clave se establece de forma estática en "ClientASNDescription". |
ClientASNDescription |
additional.fields.value.string_value |
El valor de ClientASNDescription del registro sin procesar se asigna directamente a este campo de la AUA. |
ClientCountry |
principal.location.country_or_region |
El valor de ClientCountry del registro sin procesar se asigna directamente a este campo de la AUA. |
ClientIP |
principal.ip |
El valor de ClientIP del registro sin procesar se asigna directamente a este campo de la AUA. |
ClientRefererHost |
intermediary.hostname |
El valor de ClientRefererHost del registro sin procesar se asigna directamente a este campo de la AUA. |
ClientRefererPath |
network.http.referral_url |
El valor de ClientRefererPath del registro sin procesar se asigna directamente a este campo de la AUA. |
ClientRequestHost |
target.hostname |
El valor de ClientRequestHost del registro sin procesar se asigna directamente a este campo de la AUA. |
ClientRequestMethod |
network.http.method |
El valor de ClientRequestMethod del registro sin procesar se asigna directamente a este campo de la AUA. |
ClientRequestPath |
target.file.full_path |
El valor de ClientRequestPath del registro sin procesar se asigna directamente a este campo de la AUA. |
ClientRequestProtocol |
network.application_protocol |
La parte del protocolo de ClientRequestProtocol (p.ej., "HTTP" de "HTTP/1.1") se extrae con grok, se convierte a mayúsculas y se asigna a este campo de la UDM. |
ClientRequestUserAgent |
network.http.user_agent |
El valor de ClientRequestUserAgent del registro sin procesar se asigna directamente a este campo de la AUA. |
Datetime |
metadata.event_timestamp |
El valor de Datetime del registro sin procesar se analiza como una marca de tiempo RFC 3339 y se asigna a este campo de la AUA. |
EdgeColoCode |
additional.fields.key |
La clave se establece de forma estática en "EdgeColoCode". |
EdgeColoCode |
additional.fields.value.string_value |
El valor de EdgeColoCode del registro sin procesar se asigna directamente a este campo de la AUA. |
EdgeResponseStatus |
network.http.response_code |
El valor de EdgeResponseStatus del registro sin procesar se asigna directamente a este campo de la AUA y se convierte en un número entero. |
Kind |
metadata.product_event_type |
El valor de Kind del registro sin procesar se asigna directamente a este campo de la AUA. |
Metadata.filter |
target.resource.attribute.labels.value |
El valor de Metadata.filter del registro sin procesar se asigna al campo value de una etiqueta dentro de target.resource.attribute.labels . El key de esta etiqueta se establece de forma estática en "Filtro de metadatos". |
Metadata.type |
target.resource.attribute.labels.value |
El valor de Metadata.type del registro sin procesar se asigna al campo value de una etiqueta dentro de target.resource.attribute.labels . El key de esta etiqueta se establece de forma estática en "Tipo de metadatos". El valor de este campo se deriva en función de la presencia y los valores de ClientIP , ClientRequestHost y app_protocol . Consulta el código del analizador para ver la lógica específica. Se establece de forma estática en "Cloudflare". Se establece de forma estática en "Agregador de registros de Cloudflare". Se establece de forma estática en "CLOUDFLARE_WAF". |
RayID |
metadata.product_log_id |
El valor de RayID del registro sin procesar se asigna directamente a este campo de la AUA. |
RuleID |
security_result.rule_id |
El valor de RuleID del registro sin procesar se asigna directamente a este campo de la AUA. |
Source |
security_result.rule_name |
El valor de Source del registro sin procesar se asigna directamente a este campo de la AUA. |
timestamp |
metadata.event_timestamp , events.timestamp |
El valor de timestamp del registro sin procesar se asigna directamente a estos campos de la AUA. |
Cambios
2024-08-08
- Se extrajeron datos de "ClientRequestHost" y "ClientRequestURI", se combinaron y se asignó el resultado a "target.url".
2023-08-30
- Se inicializó el campo "ClientRequestPath".
2023-02-02
- Se validó el valor "security_result" antes de que se combinara con el evento.
2022-09-16
- Se asignó el campo "Acción" a "security_result.action_details".
- Se asignó "security_result.action" a "ALLOW_WITH_MODIFICATION" cuando la acción contiene "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved" y "managedchallengeinteractivesolved".
- Se asignó "security_result.action" a "BLOCK" cuando la acción contiene "drop", "block", "connectionclose".
- Se asignó "security_result.action" a "FAIL" cuando la acción contiene "challengefailed", "jschallengefailed".
2022-07-25
- Analizador creado recientemente
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.