Recopilar registros de OpenCanary
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:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, introduzca un nombre para el feed (por ejemplo, Registros de OpenCanary).
- Selecciona Webhook como Tipo de fuente.
- Selecciona OpenCanary como Tipo de registro.
- Haz clic en Siguiente.
- 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
.
- Delimitador de división: el delimitador que se usa para separar las líneas de registro, como
- Haz clic en Siguiente.
- Revise la configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.
- Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
- 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.
- 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.
- Haz clic en Listo.
Crear una clave de API para la feed de webhook
Ve a la consolaGoogle Cloud > Credenciales.
Haz clic en Crear credenciales y, a continuación, selecciona Clave de API.
Restringe el acceso de la clave de API a la API Google Security Operations.
Especificar la URL del endpoint
- En tu aplicación cliente, especifica la URL del endpoint HTTPS proporcionada en el feed de webhook.
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.
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
Busca el archivo de configuración de OpenCanary,
config.json
.Abre el archivo
config.json
con un editor de texto.Busca la sección alerters en el archivo de configuración.
Si ya existe un alerter de
webhook
, modifícalo. Si no es así, añade una nueva entrada para el usuario dewebhook
.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>"
}
}
}
- Guarda el archivo
config.json
. - 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.