Recopila registros de OpenCanary

Compatible con:

Descripción general

Este analizador extrae campos de los registros SYSLOG y JSON de OpenCanary, los normaliza en el formato del UDM y enriquece los datos con campos derivados, como metadata.event_type y security_result.severity. Controla varios formatos de registro, realiza la validación de direcciones IP y asigna campos a objetos UDM apropiados, como principal, target y network.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Instancia de Google SecOps.
  • Acceso privilegiado a OpenCanary

Configura feeds

Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:

  • Configuración de SIEM > Feeds
  • Centro de contenido > Paquetes de contenido

Configura feeds en Configuración del SIEM > Feeds

Para configurar un feed, sigue estos pasos:

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

Configura feeds desde el Centro de contenido

Especifica valores para los siguientes campos:

  • Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como \n.

Opciones avanzadas

  • Nombre del feed: Es un valor predeterminado que identifica el feed.
  • Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
  • Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
  • Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.

  • Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.

  • Copia y almacena la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes regenerar una clave secreta nueva, pero esta acción hace que la clave secreta anterior quede obsoleta.

  • En la pestaña Detalles, copia la URL del extremo del feed del campo Información del extremo. Debes especificar esta URL de extremo en tu aplicación cliente.

Crea una clave de API para el feed del webhook

  1. Ve a Google Cloud consola > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales y selecciona Clave de API.

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

Especifica la URL del extremo

  1. En tu aplicación cliente, especifica la URL del extremo HTTPS que se proporciona 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 un 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 con parámetros de búsqueda en el siguiente formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Reemplaza lo siguiente:

    • ENDPOINT_URL: Es la URL del extremo del feed.
    • API_KEY: Es la clave de API para autenticarse en Google Security Operations.
    • SECRET: Es la clave secreta que generaste para autenticar el feed.

Cómo 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 etiquetada como alerters en el archivo de configuración.

  4. Si ya existe un webhook, modifícalo. De lo contrario, agrega una entrada nueva para el emisor de alertas webhook.

  5. Usa la siguiente configuración (reemplaza 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 de 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 al UDM. También se asigna a target.ip.
dst_host target.ip El campo dst_host del registro sin procesar se asigna al UDM. También se asigna a target.asset.ip.
dst_port target.port El campo dst_port del registro sin procesar se convierte en una cadena y, luego, en un número entero, y se asigna al UDM.
local_time metadata.event_timestamp El campo local_time del registro sin procesar se usa para completar el campo metadata.event_timestamp en el UDM. El analizador usa el create_time del objeto de lote si el campo local_time no está presente.
local_time_adjusted security_result.detection_fields El campo local_time_adjusted del registro sin procesar se agrega como un par clave-valor al array security_result.detection_fields en el UDM.
logdata.COMMUNITY_STRING security_result.detection_fields El campo logdata.COMMUNITY_STRING del registro sin procesar se agrega como un par clave-valor al array security_result.detection_fields en el UDM.
logdata.DOMAIN principal.administrative_domain El campo logdata.DOMAIN del registro sin procesar se asigna al UDM.
logdata.FILENAME target.file.full_path El campo logdata.FILENAME del registro sin procesar se asigna al UDM.
logdata.HOSTNAME principal.asset.hostname Si el campo logdata.HOSTNAME no es una dirección IP, se asigna al UDM. También se asigna a principal.hostname.
logdata.HOSTNAME principal.asset.ip Si el campo logdata.HOSTNAME es una dirección IP, se asigna al UDM. También se asigna 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 asigna a principal.asset.hostname.
logdata.HOSTNAME principal.ip Si el campo logdata.HOSTNAME es una dirección IP, se asigna al UDM. También se asigna a principal.asset.ip.
logdata.LOCALNAME principal.asset.hostname El campo logdata.LOCALNAME del registro sin procesar se asigna al UDM. También se asigna a principal.hostname.
logdata.LOCALNAME principal.hostname El campo logdata.LOCALNAME del registro sin procesar se asigna al UDM. También se asigna a principal.asset.hostname.
logdata.LOCALVERSION principal.platform_version El campo logdata.LOCALVERSION del registro sin procesar se asigna al UDM.
logdata.PASSWORD extensions.auth.mechanism La presencia del campo logdata.PASSWORD hace que el analizador establezca extensions.auth.mechanism en USERNAME_PASSWORD en el UDM.
logdata.PATH network.http.referral_url El campo logdata.PATH del registro sin procesar se asigna al UDM.
logdata.REMOTENAME target.asset.hostname El campo logdata.REMOTENAME del registro sin procesar se asigna al UDM. También se asigna a target.hostname.
logdata.REMOTENAME target.hostname El campo logdata.REMOTENAME del registro sin procesar se asigna al UDM. También se asigna a target.asset.hostname.
logdata.REMOTEVERSION target.platform_version El campo logdata.REMOTEVERSION del registro sin procesar se asigna al UDM.
logdata.SMBVER network.application_protocol La presencia del campo logdata.SMBVER hace que el analizador establezca network.application_protocol en SMB en el UDM.
logdata.USERAGENT network.http.parsed_user_agent El campo logdata.USERAGENT del registro sin procesar se convierte en un agente de usuario analizado y se asigna al UDM.
logdata.USERAGENT network.http.user_agent El campo logdata.USERAGENT del registro sin procesar se asigna al UDM.
logdata.USERNAME target.user.userid El campo logdata.USERNAME del registro sin procesar se asigna al UDM.
loglevel security_result.severity El campo loglevel del registro sin procesar determina el security_result.severity en el 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 agrega como un par clave-valor al array security_result.detection_fields en el UDM.
node_id principal.asset.asset_id El campo node_id del registro sin procesar se antepone con "id:" y se asigna al UDM.
src_host principal.asset.ip El campo src_host del registro sin procesar se asigna al UDM. También se asigna a principal.ip.
src_host principal.ip El campo src_host del registro sin procesar se asigna al UDM. También se asigna 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 al UDM.
utc_time security_result.detection_fields El campo utc_time del registro sin procesar se agrega como un par clave-valor al array security_result.detection_fields en el UDM.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.