Recopila registros de la WAF de Cloudflare
En este documento, se describe cómo puedes recopilar registros de WAF de Cloudflare configurando un feed de Google Security Operations.
Para obtener más información, consulta Transferencia de datos a Google Security Operations.
Una etiqueta de transferencia identifica el analizador que normaliza los datos de registro sin procesar al formato estructurado del UDM. La información de este documento se aplica al analizador con la etiqueta de transferencia CLOUDFLARE_WAF
.
Configura el WAF de Cloudflare con la API
Después de activar el registro de Cloudflare, usa los siguientes parámetros para habilitar la integración:
Auth email: Es la dirección de correo electrónico de la cuenta de Cloudflare.
Clave de autenticación: Es el token de la API de Cloudflare.
ID de zona: Es el ID de zona de Cloudflare.
Para obtener el ID de zona y la clave de autenticación, sigue estos pasos:
- Accede al panel de Cloudflare.
- Haz clic en el sitio web que se debe supervisar.
- Haz clic en Obtén tu clave de API para obtener la clave de autenticación.
- Selecciona Token de API.
- Haz clic en Create Token.
- Proporciona los siguientes valores en la página Crear token:
- En el campo Nombre del token, proporciona el nombre del token.
- En la sección Permisos, haz lo siguiente:
- Selecciona Zona, Registros y Leer en la primera, segunda y tercera lista, respectivamente.
- Haz clic en Agregar más. Selecciona Zona, Analytics y Leer en la primera, segunda y tercera lista, respectivamente.
- Haz clic en Agregar más. Selecciona Zona, Servicios de firewall y Leer en la primera, segunda y tercera lista, respectivamente.
- En la sección Recursos de zona, selecciona Incluir y Todas las zonas en la primera y segunda lista, respectivamente.
- Haz clic en Continuar con el resumen.
- Haz clic en Create Token.
- Copia el token que se muestra, que es necesario para configurar el feed de Google Security Operations.
Configura el WAF de Cloudflare con el panel de Cloudflare
- Accede al panel de Cloudflare.
- Haz clic en el sitio web que se debe supervisar.
- Ve a Analytics y registros > Logpush.
- Selecciona Crear un trabajo de Logpush.
- En Seleccionar un destino, elige Google Cloud Storage.
- Ingresa o selecciona los siguientes detalles del destino:
- Bucket: Es el nombre del bucket de Google Cloud.
- Ruta: Es la ubicación del bucket dentro del contenedor de almacenamiento.
- Organiza los registros en subcarpetas diarias (recomendado)
- Para Otorgar acceso a Cloudflare para subir archivos a tu bucket, asegúrate de que tu bucket haya agregado a IAM de Cloudflare como un usuario con el rol de Administrador de objetos de almacenamiento.
- Cuando termines de ingresar los detalles del destino, selecciona Continuar.
- Para demostrar la propiedad, Cloudflare enviará un archivo a tu destino designado. Para encontrar el token, selecciona el botón Open en la pestaña Overview del archivo de desafío de propiedad y, luego, pégalo en el panel de Cloudflare para verificar tu acceso al bucket. Ingresa el token de propiedad y selecciona Continuar.
- Selecciona el conjunto de datos que deseas enviar al servicio de almacenamiento.
- Configura tu trabajo de Logpush:
- Ingresa el nombre del trabajo.
- En Si los registros coinciden, selecciona los eventos que deseas incluir o quitar de tus registros. No todos los conjuntos de datos tienen esta opción disponible.
- En Enviar los siguientes campos, elige enviar todos los registros a tu destino de almacenamiento o elegir de forma selectiva los registros que deseas enviar.
- Selecciona Enviar cuando termines de configurar tu trabajo de Logpush.
Configura un feed en Google Security Operations para transferir los registros del WAF de Cloudflare
- Selecciona Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- Ingresa un nombre único para el Nombre del feed.
- Selecciona Google Cloud Storage como el Tipo de fuente.
- Selecciona WAF de Cloudflare como el Tipo de registro.
- Haz clic en Obtener cuenta de servicio. Google Security Operations proporciona una cuenta de servicio única que usa para transferir datos.
- Configura el acceso de la cuenta de servicio para que pueda acceder a los objetos de Cloud Storage. Para obtener más información, consulta Otorga acceso a la cuenta de servicio de Operaciones de seguridad de Google.
- Haz clic en Siguiente.
- Configura los siguientes parámetros de entrada:
- URI del bucket de almacenamiento
- Un URI es un
- Opción de eliminación de fuentes
- Haz clic en Siguiente y, luego, en Enviar.
Para obtener más información sobre los feeds de Google Security Operations, consulta la documentación de los feeds de Google Security Operations. Para obtener información sobre los requisitos de cada tipo de feed, consulta Configuración de feeds por tipo.
Si tienes problemas cuando creas feeds, comunícate con el equipo de asistencia de Operaciones de seguridad de Google.
Referencia de la asignación de campos
Este analizador extrae campos de los registros JSON del firewall de aplicaciones web (WAF) de Cloudflare y los transforma en el modelo de datos unificado (UDM). Controla varios campos de registro, como información de red, detalles de HTTP, resultados de seguridad y metadatos, y los asigna a los campos de UDM correspondientes para obtener una representación y un análisis coherentes en las Operaciones de seguridad de Google.
Tabla de asignación de la UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
Acción | security_result.action_details | El valor del campo "Action" del registro sin procesar se asigna a security_result.action_details . |
Acción | security_result.action | El campo security_result.action se deriva según el valor del campo "Action". "allow" maps to ALLOW. "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved" y "managedchallengeinteractivesolved" se asignan a ALLOW_WITH_MODIFICATION. "drop", "block" y "connectionclose" se asignan a BLOCK. "challengefailed" y "jschallengefailed" se asignan a FAIL. Cualquier otro valor no vacío o "desconocido" se asigna a UNKNOWN_ACTION. |
ClientASN | network.asn | El valor del campo "ClientASN" del registro sin procesar se convierte en una cadena y se asigna a network.asn . |
ClientASNDescription | additional.fields.key | Establece el valor en "ClientASNDescription". |
ClientASNDescription | additional.fields.value.string_value | El valor del campo "ClientASNDescription" del registro sin procesar se asigna a additional.fields.value.string_value . |
ClientCountry | principal.location.country_or_region | El valor del campo "ClientCountry" del registro sin procesar se asigna a principal.location.country_or_region . |
ClientIP | principal.ip | El valor del campo "ClientIP" del registro sin procesar se asigna a principal.ip . |
ClientRefererHost | intermediary.hostname | El valor del campo "ClientRefererHost" del registro sin procesar se asigna a intermediary.hostname . |
ClientRefererPath | network.http.referral_url | El valor del campo "ClientRefererPath" del registro sin procesar se asigna a network.http.referral_url . |
ClientRequestMethod | network.http.method | El valor del campo "ClientRequestMethod" del registro sin procesar se asigna a network.http.method . |
ClientRequestHost | target.hostname | El valor del campo "ClientRequestHost" del registro sin procesar se asigna a target.hostname . |
ClientRequestPath | target.file.full_path | El valor del campo "ClientRequestPath" del registro sin procesar se asigna a target.file.full_path si no está vacío o si es "/". |
ClientRequestProtocol | network.application_protocol | La parte del protocolo del valor del campo "ClientRequestProtocol" (p.ej., "HTTP" de "HTTP/1.1") se extrae, se convierte a mayúsculas y se asigna a network.application_protocol . |
ClientRequestUserAgent | network.http.user_agent | El valor del campo "ClientRequestUserAgent" del registro sin procesar se asigna a network.http.user_agent . |
Fecha y hora | metadata.event_timestamp | El valor del campo "Fecha y hora" del registro sin procesar se analiza como una marca de tiempo RFC 3339 y se asigna a metadata.event_timestamp . |
EdgeColoCode | additional.fields.key | Establece el valor en "EdgeColoCode". |
EdgeColoCode | additional.fields.value.string_value | El valor del campo "EdgeColoCode" del registro sin procesar se asigna a additional.fields.value.string_value . |
EdgeResponseStatus | network.http.response_code | El valor del campo "EdgeResponseStatus" del registro sin procesar se convierte en un número entero y se asigna a network.http.response_code . |
Tipo | metadata.product_event_type | El valor del campo "Kind" del registro sin procesar se asigna a metadata.product_event_type . |
Metadata.filter | target.resource.attribute.labels.key | Establece la opción en "Filtro de metadatos". |
Metadata.filter | target.resource.attribute.labels.value | El valor del campo "Metadata.filter" del registro sin procesar se asigna a target.resource.attribute.labels.value . |
Metadata.type | target.resource.attribute.labels.key | Establece el valor en "Tipo de metadatos". |
Metadata.type | target.resource.attribute.labels.value | El valor del campo "Metadata.type" del registro sin procesar se asigna a target.resource.attribute.labels.value . |
RayID | metadata.product_log_id | El valor del campo "RayID" del registro sin procesar se asigna a metadata.product_log_id . |
RuleID | security_result.rule_id | El valor del campo "RuleID" del registro sin procesar se asigna a security_result.rule_id . |
Fuente | security_result.rule_name | El valor del campo "Source" del registro sin procesar se asigna a security_result.rule_name . |
N/A | metadata.vendor_name | Se codifica de forma fija en “Cloudflare”. |
N/A | metadata.product_name | Está codificado de forma fija en "Cloudflare Log Aggregator". |
N/A | metadata.log_type | Está codificado de forma fija en "CLOUDFLARE_WAF". |
N/A | metadata.event_type | Se determina según la lógica del analizador en función de la presencia de "ClientIP", "ClientRequestHost" y el valor de "app_protocol". Los valores posibles son NETWORK_HTTP, NETWORK_CONNECTION, STATUS_UPDATE y GENERIC_EVENT. |
Cambios
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
- Descripción: Analizador creado recientemente