Recopila registros de OpenCanary
Este analizador extrae campos de los registros SYSLOG y JSON de OpenCanary, los normaliza al formato UDM y enriquece los datos con campos derivados, como metadata.event_type y security_result.severity. Administra 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 con privilegios a OpenCanary
Configura feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- En la página siguiente, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed; por ejemplo, Registros de OpenCanary.
- Selecciona Webhook como el Tipo de origen.
- Selecciona OpenCanary como el Tipo de registro.
- Haz clic en Siguiente.
- 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.
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
- Haz clic en Siguiente.
- Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
- 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 volver a generar 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 del extremo en tu aplicación cliente.
- Haz clic en Listo.
Crea una clave de API para el feed de webhook
Ve a Google Cloud Consola > Credenciales.
Haz clic en Crear credenciales y selecciona Clave de API.
Restringe el acceso a la clave de API a la API de Google Security Operations.
Especifica la URL del extremo
- En tu aplicación cliente, especifica la URL del extremo HTTPS que se proporciona en el feed de webhook.
Para habilitar la autenticación, especifica la clave de API y la clave secreta como parte del encabezado personalizado en el siguiente formato:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRETRecomendación: Especifica la clave de API como un encabezado en lugar de especificarla en la URL.
Si tu cliente de webhook no admite encabezados personalizados, puedes especificar la clave de API y la clave secreta con parámetros de consulta en el siguiente formato:
ENDPOINT_URL?key=API_KEY&secret=SECRETReemplaza lo siguiente:
ENDPOINT_URL: la URL del extremo del feedAPI_KEY: la clave de API para autenticarse en Google Security OperationsSECRET: la clave secreta que generaste para autenticar el feed
Configura un webhook de OpenCanary para Google SecOps
Busca el archivo de configuración de OpenCanary,
config.json.Abre el archivo
config.jsoncon un editor de texto.Busca la sección etiquetada como alerters en el archivo de configuración.
Si ya existe un emisor de alertas
webhook, modifícalo. De lo contrario, agrega una entrada nueva para el emisor de alertaswebhook.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>"
}
}
}
- Guarda el archivo
config.json. - 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 a la UDM. También se asigna a target.ip. |
dst_host |
target.ip |
El campo dst_host del registro sin procesar se asigna a la 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 a la UDM. |
local_time |
metadata.event_timestamp |
El campo local_time del registro sin procesar se usa para propagar metadata.event_timestamp en la UDM. El analizador usa 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 la 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 la UDM. |
logdata.DOMAIN |
principal.administrative_domain |
El campo logdata.DOMAIN del registro sin procesar se asigna a la UDM. |
logdata.FILENAME |
target.file.full_path |
El campo logdata.FILENAME del registro sin procesar se asigna a la UDM. |
logdata.HOSTNAME |
principal.asset.hostname |
Si el campo logdata.HOSTNAME no es una dirección IP, se asigna a la 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 a la 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 a la 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 a la UDM. También se asigna a principal.asset.ip. |
logdata.LOCALNAME |
principal.asset.hostname |
El campo logdata.LOCALNAME del registro sin procesar se asigna a la UDM. También se asigna a principal.hostname. |
logdata.LOCALNAME |
principal.hostname |
El campo logdata.LOCALNAME del registro sin procesar se asigna a la UDM. También se asigna a principal.asset.hostname. |
logdata.LOCALVERSION |
principal.platform_version |
El campo logdata.LOCALVERSION del registro sin procesar se asigna a la UDM. |
logdata.PASSWORD |
extensions.auth.mechanism |
La presencia del campo logdata.PASSWORD activa el analizador para establecer extensions.auth.mechanism en USERNAME_PASSWORD en la UDM. |
logdata.PATH |
network.http.referral_url |
El campo logdata.PATH del registro sin procesar se asigna a la UDM. |
logdata.REMOTENAME |
target.asset.hostname |
El campo logdata.REMOTENAME del registro sin procesar se asigna a la UDM. También se asigna a target.hostname. |
logdata.REMOTENAME |
target.hostname |
El campo logdata.REMOTENAME del registro sin procesar se asigna a la UDM. También se asigna a target.asset.hostname. |
logdata.REMOTEVERSION |
target.platform_version |
El campo logdata.REMOTEVERSION del registro sin procesar se asigna a la UDM. |
logdata.SMBVER |
network.application_protocol |
La presencia del campo logdata.SMBVER activa el analizador para establecer network.application_protocol en SMB en la 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 a la UDM. |
logdata.USERAGENT |
network.http.user_agent |
El campo logdata.USERAGENT del registro sin procesar se asigna a la UDM. |
logdata.USERNAME |
target.user.userid |
El campo logdata.USERNAME del registro sin procesar se asigna a la UDM. |
loglevel |
security_result.severity |
El campo loglevel del registro sin procesar determina security_result.severity en la 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 la UDM. |
node_id |
principal.asset.asset_id |
El campo node_id del registro sin procesar tiene el prefijo "id:" y se asigna a la UDM. |
src_host |
principal.asset.ip |
El campo src_host del registro sin procesar se asigna a la UDM. También se asigna a principal.ip. |
src_host |
principal.ip |
El campo src_host del registro sin procesar se asigna a la 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 a la 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 la UDM. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.