Recopilar registros de OpenCanary

Disponible en:

Información general

Este analizador extrae campos de los registros SYSLOG y JSON de OpenCanary, los normaliza en el formato UDM y enriquece los datos con campos derivados, como metadata.event_type y security_result.severity. Gestiona varios formatos de registro, valida direcciones IP y asigna campos a los objetos UDM correspondientes, como principal, target y network.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps.
  • Acceso privilegiado a OpenCanary.

Configurar feeds

Para configurar un feed, sigue estos pasos:

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir feed.
  3. En la página siguiente, haga clic en Configurar un solo feed.
  4. En el campo Nombre del feed, introduzca un nombre para el feed (por ejemplo, Registros de OpenCanary).
  5. Selecciona Webhook como Tipo de fuente.
  6. Selecciona OpenCanary como Tipo de registro.
  7. Haz clic en Siguiente.
  8. Opcional: Especifica los valores de los siguientes parámetros de entrada:
    • Delimitador de división: el delimitador que se usa para separar las líneas de registro, como \n.
  9. Haz clic en Siguiente.
  10. Revise la configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.
  11. Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
  12. Copia y guarda la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes volver a generar una clave secreta, pero esta acción hará que la clave secreta anterior quede obsoleta.
  13. En la pestaña Detalles, copia la URL del endpoint del feed del campo Información del endpoint. Debes especificar esta URL de endpoint en tu aplicación cliente.
  14. Haz clic en Listo.

Crear una clave de API para la feed de webhook

  1. Ve a la consolaGoogle Cloud > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales y, a continuación, selecciona Clave de API.

  3. Restringe el acceso de la clave de API a la API Google Security Operations.

Especificar la URL del endpoint

  1. En tu aplicación cliente, especifica la URL del endpoint HTTPS proporcionada en el feed de webhook.
  2. Para habilitar la autenticación, especifica la clave de API y la clave secreta como parte del encabezado personalizado con el siguiente formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendación: Especifica la clave de API como encabezado en lugar de hacerlo en la URL.

  3. Si tu cliente de webhook no admite encabezados personalizados, puedes especificar la clave de API y la clave secreta mediante parámetros de consulta con el siguiente formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Haz los cambios siguientes:

    • ENDPOINT_URL: URL del endpoint del feed.
    • API_KEY: la clave de API para autenticarte en Google Security Operations.
    • SECRET: la clave secreta que has generado para autenticar el feed.

Configurar un webhook de OpenCanary para Google SecOps

  1. Busca el archivo de configuración de OpenCanary, config.json.

  2. Abre el archivo config.json con un editor de texto.

  3. Busca la sección alerters en el archivo de configuración.

  4. Si ya existe un alerter de webhook, modifícalo. Si no es así, añade una nueva entrada para el usuario de webhook.

  5. Usa la siguiente configuración (sustituye ENDPOINT_URL, SECRET y API_KEY por tus valores):

"handlers": {
    "Webhook": {
        "class": "opencanary.logger.WebhookHandler",
        "url": "<ENDPOINT_URL>",
        "method": "POST",
        "data": {"message": "%(message)s"},
        "status_code": 200,
        "headers": {
            "X-Webhook-Access-Key": "<SECRET>",
            "X-goog-api-key": "<API_KEY>"
         }
    }
}
  1. Guarda el archivo config.json.
  2. Reinicia el servicio OpenCanary para aplicar los cambios. Por ejemplo, sudo systemctl restart opencanary.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
dst_host target.asset.ip El campo dst_host del registro sin procesar se asigna a UDM. También se ha asignado a target.ip.
dst_host target.ip El campo dst_host del registro sin procesar se asigna a UDM. También se ha asignado a target.asset.ip.
dst_port target.port El campo dst_port del registro sin procesar se convierte en una cadena y, después, en un número entero, y se asigna a UDM.
local_time metadata.event_timestamp El campo local_time del registro sin procesar se usa para rellenar el campo metadata.event_timestamp de UDM. El analizador usa el create_time del objeto por lotes si no está presente el campo local_time.
local_time_adjusted security_result.detection_fields El campo local_time_adjusted del registro sin procesar se añade como par clave-valor a la matriz security_result.detection_fields de UDM.
logdata.COMMUNITY_STRING security_result.detection_fields El campo logdata.COMMUNITY_STRING del registro sin procesar se añade como par clave-valor a la matriz security_result.detection_fields de UDM.
logdata.DOMAIN principal.administrative_domain El campo logdata.DOMAIN del registro sin procesar se asigna a UDM.
logdata.FILENAME target.file.full_path El campo logdata.FILENAME del registro sin procesar se asigna a UDM.
logdata.HOSTNAME principal.asset.hostname Si el campo logdata.HOSTNAME no es una dirección IP, se asigna al UDM. También se ha asignado a principal.hostname.
logdata.HOSTNAME principal.asset.ip Si el campo logdata.HOSTNAME es una dirección IP, se asigna a UDM. También se ha asignado a principal.ip.
logdata.HOSTNAME principal.hostname Si el campo logdata.HOSTNAME no es una dirección IP, se asigna al UDM. También se ha asignado a principal.asset.hostname.
logdata.HOSTNAME principal.ip Si el campo logdata.HOSTNAME es una dirección IP, se asigna a UDM. También se ha asignado a principal.asset.ip.
logdata.LOCALNAME principal.asset.hostname El campo logdata.LOCALNAME del registro sin procesar se asigna a UDM. También se ha asignado a principal.hostname.
logdata.LOCALNAME principal.hostname El campo logdata.LOCALNAME del registro sin procesar se asigna a UDM. También se ha asignado a principal.asset.hostname.
logdata.LOCALVERSION principal.platform_version El campo logdata.LOCALVERSION del registro sin procesar se asigna a UDM.
logdata.PASSWORD extensions.auth.mechanism La presencia del campo logdata.PASSWORD hace que el analizador defina el valor USERNAME_PASSWORD en el campo extensions.auth.mechanism del UDM.
logdata.PATH network.http.referral_url El campo logdata.PATH del registro sin procesar se asigna a UDM.
logdata.REMOTENAME target.asset.hostname El campo logdata.REMOTENAME del registro sin procesar se asigna a UDM. También se ha asignado a target.hostname.
logdata.REMOTENAME target.hostname El campo logdata.REMOTENAME del registro sin procesar se asigna a UDM. También se ha asignado a target.asset.hostname.
logdata.REMOTEVERSION target.platform_version El campo logdata.REMOTEVERSION del registro sin procesar se asigna a UDM.
logdata.SMBVER network.application_protocol La presencia del campo logdata.SMBVER hace que el analizador defina el valor SMB en el campo network.application_protocol del UDM.
logdata.USERAGENT network.http.parsed_user_agent El campo logdata.USERAGENT del registro sin procesar se convierte en un user-agent analizado y se asigna al modelo de datos unificado.
logdata.USERAGENT network.http.user_agent El campo logdata.USERAGENT del registro sin procesar se asigna a UDM.
logdata.USERNAME target.user.userid El campo logdata.USERNAME del registro sin procesar se asigna a UDM.
loglevel security_result.severity El campo loglevel del registro sin procesar determina el security_result.severity en UDM. WARNING se asigna a HIGH y INFO/INFORMATION se asigna a LOW.
logtype security_result.detection_fields El campo logtype del registro sin procesar se añade como par clave-valor a la matriz security_result.detection_fields de UDM.
node_id principal.asset.asset_id El campo node_id del registro sin procesar tiene el prefijo "id:" y se asigna a UDM.
src_host principal.asset.ip El campo src_host del registro sin procesar se asigna a UDM. También se ha asignado a principal.ip.
src_host principal.ip El campo src_host del registro sin procesar se asigna a UDM. También se ha asignado a principal.asset.ip.
src_port principal.port El campo src_port del registro sin procesar se convierte en un número entero y se asigna a UDM.
utc_time security_result.detection_fields El campo utc_time del registro sin procesar se añade como par clave-valor a la matriz security_result.detection_fields de UDM.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.