Recopila registros de auditoría de Tanium
En este documento, se explica cómo transferir registros de auditoría de Tanium a Google Security Operations con Amazon S3 a través de la capacidad de exportación nativa de S3 de Tanium Connect. El analizador extrae los registros y, en un principio, borra numerosos campos predeterminados. Luego, analiza el mensaje de registro con grok y el filtro json, y extrae campos como la marca de tiempo, la IP del dispositivo y los detalles de la auditoría. El analizador asigna estos campos extraídos al UDM, controlando varios tipos de datos y lógica condicional para completar los campos de UDM adecuados según la presencia y los valores de atributos específicos del registro de auditoría de Tanium.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Acceso con privilegios a Tanium Connect y Tanium Console
- Acceso con privilegios a AWS (S3, IAM)
Crea un bucket de Amazon S3
- Abre la consola de Amazon S3.
- Si es necesario, puedes cambiar la Región.
- En la barra de navegación, selecciona la región en la que deseas que residan tus registros de auditoría de Tanium.
- Haz clic en Crear bucket.
- Nombre del bucket: Ingresa un nombre significativo para el bucket (por ejemplo,
tanium-audit-logs). - Región: Selecciona tu región preferida (por ejemplo,
us-east-1). - Haz clic en Crear.
- Nombre del bucket: Ingresa un nombre significativo para el bucket (por ejemplo,
Crea un usuario de IAM con acceso total a Amazon S3
- Abre la consola de IAM.
- Haz clic en Usuarios > Agregar usuario.
- Ingresa un nombre de usuario (por ejemplo,
tanium-connect-s3-user). - Selecciona Acceso programático o Acceso a la consola de administración de AWS, o ambos, según sea necesario.
- Selecciona Contraseña generada automáticamente o Contraseña personalizada.
- Haz clic en Next: Permissions.
- Elige Adjuntar políticas existentes directamente.
- Busca y selecciona la política AmazonS3FullAccess para el usuario.
- Haz clic en Siguiente: Etiquetas.
- Haz clic en Siguiente: Revisar.
- Haz clic en Create user.
- Copia y guarda el ID de clave de acceso y la clave de acceso secreta para consultarlos en el futuro.
Configura los permisos en el bucket de Amazon S3
- En la consola de Amazon S3, elige el bucket que creaste antes.
- Haz clic en Permisos > Política de bucket.
En el Editor de políticas de bucket, agrega la siguiente política:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:user/tanium-connect-s3-user" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::tanium-audit-logs", "arn:aws:s3:::tanium-audit-logs/*" ] } ] }Reemplaza las siguientes variables:
- Cambia
YOUR_ACCOUNT_IDpor el ID de tu cuenta de AWS. - Cambia
tanium-audit-logspor el nombre real de tu bucket si es diferente. - Cambia
tanium-connect-s3-userpor tu nombre de usuario de IAM real si es diferente.
- Cambia
Haz clic en Guardar.
Configura Tanium Connect para la exportación a S3
Crea una conexión de AWS S3 en Tanium Connect
- Accede a la consola de Tanium como administrador.
- Ve a Tanium Connect > Connections.
- Haz clic en Create Connection.
- En la sección Información general, proporciona los siguientes detalles de configuración:
- Nombre: Ingresa un nombre descriptivo (por ejemplo,
Tanium Audit to S3). - Descripción: Ingresa una descripción significativa (por ejemplo,
Export Tanium audit logs to S3 for Google SecOps ingestion). - Habilitar: Selecciona esta opción para habilitar la conexión.
- Nivel de registro: Selecciona Información (predeterminado) o ajústalo según sea necesario.
- Nombre: Ingresa un nombre descriptivo (por ejemplo,
Configura la fuente de conexión
- En la sección Configuración, en Fuente, selecciona Auditoría de Tanium.
- Establece la configuración de la fuente de auditoría:
- Días de historial recuperados: Ingresa la cantidad de días de datos de auditoría históricos que se recuperarán (por ejemplo,
7para una semana). - Tipos de auditoría: Selecciona los tipos de auditoría que quieres exportar. Elige entre las siguientes opciones:
- Historial de acciones: Acciones emitidas por los operadores de la consola.
- Autenticación: Eventos de autenticación de usuarios.
- Contenido: Cambios y modificaciones en el contenido.
- Grupos: Cambios en los grupos de computadoras.
- Paquetes: Actividades relacionadas con paquetes.
- Sensores: Modificaciones de los sensores
- Configuración del sistema: Cambios en la configuración del sistema.
- Usuarios: Actividades de administración de usuarios.
- Días de historial recuperados: Ingresa la cantidad de días de datos de auditoría históricos que se recuperarán (por ejemplo,
Configura el destino de AWS S3
- En Destino, selecciona AWS S3.
- Proporciona los siguientes detalles de configuración:
- Nombre del destino: Ingresa un nombre (por ejemplo,
Google SecOps S3 Bucket). - Clave de acceso de AWS: Ingresa el ID de la clave de acceso del usuario de IAM que creaste antes.
- Clave secreta de AWS: Ingresa la clave de acceso secreta del usuario de IAM que creaste antes.
- Nombre del bucket: Ingresa el nombre de tu bucket de S3 (por ejemplo,
tanium-audit-logs). - Ruta de acceso del bucket: Opcional. Ingresa un prefijo de ruta de acceso (por ejemplo,
tanium/audit/). - Región: Selecciona la región de AWS en la que reside tu bucket (por ejemplo,
us-east-1).
- Nombre del destino: Ingresa un nombre (por ejemplo,
Configura el formato y el programa
- En la sección Formato, configura el formato de salida:
- Tipo de formato: Selecciona JSON.
- Incluir encabezados de columna: Selecciona esta opción si quieres que se incluyan los encabezados de columna.
- Generar documento: Desmarca esta opción para enviar datos JSON sin procesar.
- En la sección Programación, configura cuándo se ejecuta la conexión:
- Tipo de programa: Selecciona Cron.
- Expresión cron: Ingresa una expresión cron para las exportaciones periódicas (por ejemplo,
0 */1 * * *para las exportaciones por hora). - Fecha de inicio: Establece la fecha de inicio de la programación.
- Haz clic en Guardar cambios.
Prueba y ejecuta la conexión
- En la página Descripción general de Connect, ve a Conexiones.
- Haz clic en la conexión que creaste (Tanium Audit to S3).
- Haz clic en Ejecutar ahora para probar la conexión.
- Confirma que quieres ejecutar la conexión.
- Supervisa el estado de la conexión y verifica que los registros de auditoría se exporten a tu bucket de S3.
Opcional: Crea un usuario y claves de IAM de solo lectura para Google SecOps
- Ve a AWS Console > IAM > Users > Add users.
- Haz clic en Agregar usuarios.
- Proporciona los siguientes detalles de configuración:
- Usuario: Ingresa
secops-reader. - Tipo de acceso: Selecciona Clave de acceso: Acceso programático.
- Usuario: Ingresa
- Haz clic en Create user.
- Adjunta la política de lectura mínima (personalizada): Users > secops-reader > Permissions > Add permissions > Attach policies directly > Create policy.
En el editor de JSON, ingresa la siguiente política:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::tanium-audit-logs/*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::tanium-audit-logs" } ] }Configura el nombre como
secops-reader-policy.Ve a Crear política > buscar/seleccionar > Siguiente > Agregar permisos.
Ve a Security credentials > Access keys > Create access key.
Descarga el archivo CSV (estos valores se ingresan en el feed).
Configura un feed en Google SecOps para transferir registros de auditoría de Tanium
- Ve a Configuración > Administración de datos > Feeds. Si estás en una plataforma solo de SIEM, ve a Configuración > Feeds.
- Haz clic en + Agregar feed nuevo.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Tanium Audit logs). - Selecciona Amazon S3 V2 como el Tipo de fuente.
- Selecciona Tanium Audit como el Tipo de registro.
- Haz clic en Siguiente.
- Especifica valores para los siguientes parámetros de entrada:
- URI de S3:
s3://tanium-audit-logs/tanium/audit/(ajusta la ruta de acceso si usaste un nombre de bucket o una ruta de acceso diferentes). - Opciones de eliminación de la fuente: Selecciona la opción de eliminación según tu preferencia.
- Antigüedad máxima del archivo: Incluye los archivos modificados en la última cantidad de días. El valor predeterminado es 180 días.
- ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3 (del usuario con acceso de lectura que se creó anteriormente).
- Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3 (del usuario con acceso de lectura que se creó anteriormente).
- Espacio de nombres del recurso: Es el espacio de nombres del recurso.
- Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.
- URI de S3:
- Haz clic en Siguiente.
- Revisa la configuración de tu feed de noticias nuevo en la pantalla Finalizar y, luego, haz clic en Enviar.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
ActionId |
metadata.product_log_id |
Se asigna directamente desde el campo ActionId. |
ActionName |
security_result.action_details |
Se asigna directamente desde el campo ActionName. |
Approver |
additional.fields[Approver].value.string_value |
Se asigna directamente desde el campo Approver. |
Approver |
principal.user.userid |
Se asigna desde el campo Approver si Issuer no está presente. |
audit_name |
metadata.description |
Se asigna directamente desde el campo audit_name. |
audit_row_id |
additional.fields[audit_row_id].value.string_value |
Se asigna directamente desde el campo audit_row_id. |
audit_type |
additional.fields[audit_type].value.string_value |
Se asigna directamente desde el campo audit_type. |
authentication_type |
principal.user.attribute.labels[authentication_type].value |
Se asigna directamente desde el campo authentication_type extraído del campo details. |
Command |
principal.process.command_line |
Se asigna directamente desde el campo Command después de la decodificación de la URL. |
creation_time |
target.resource.attribute.creation_time |
Se asigna directamente desde el campo creation_time. |
details |
network.session_id |
Se extrae del campo details con el análisis de pares clave-valor. |
details |
principal.user.attribute.labels[authentication_type].value |
Se extrae del campo details con el análisis de pares clave-valor. |
details |
principal.asset.ip, principal.ip |
La dirección IP se extrae del campo details con el análisis de pares clave-valor y se asigna a principal.asset.ip y principal.ip. |
DistributeOver |
additional.fields[DistributeOver].value.string_value |
Se asigna directamente desde el campo DistributeOver. |
dvc_ip |
intermediary.hostname |
Se asigna directamente desde el campo dvc_ip extraído del mensaje de syslog. |
dvc_ip |
observer.ip |
Se asigna directamente desde el campo dvc_ip si logstash.collect.host no está presente. |
Expiration |
additional.fields[Expiration].value.string_value |
Se asigna directamente desde el campo Expiration. |
host.architecture |
target.asset.hardware.cpu_platform |
Se asigna directamente desde el campo host.architecture. |
host.id |
target.asset.asset_id |
Se asigna directamente desde el campo host.id, con el prefijo "ID de host:". |
host.ip |
target.ip |
Se asigna directamente desde el campo host.ip. |
host.mac |
target.mac |
Se asigna directamente desde el campo host.mac. |
host.name |
target.hostname |
Se asigna directamente desde el campo host.name si host.hostname no está presente. |
host.os.kernel |
target.platform_patch_level |
Se asigna directamente desde el campo host.os.kernel. |
host.os.name |
additional.fields[os_name].value.string_value |
Se asigna directamente desde el campo host.os.name. |
host.os.version |
target.platform_version |
Se asigna directamente desde el campo host.os.version. |
InsertTime |
additional.fields[InsertTime].value.string_value |
Se asigna directamente desde el campo InsertTime. |
Issuer |
additional.fields[Issuer].value.string_value |
Se asigna directamente desde el campo Issuer. |
Issuer |
principal.user.userid |
Se asigna directamente desde el campo Issuer si está presente. |
last_modified_by |
principal.resource.attribute.labels[last_modified_by].value |
Se asigna directamente desde el campo last_modified_by. |
log.source.address |
principal.ip |
La dirección IP se extrae del campo log.source.address y se asigna a principal.ip. |
log.source.address |
principal.port |
El puerto se extrae del campo log.source.address. |
logstash.collect.host |
observer.ip |
Se asigna directamente desde el campo logstash.collect.host si está presente. |
logstash.collect.timestamp |
metadata.collected_timestamp |
Se asigna directamente desde el campo logstash.collect.timestamp. |
logstash.ingest.timestamp |
metadata.ingested_timestamp |
Se asigna directamente desde el campo logstash.ingest.timestamp. |
logstash.irm_environment |
additional.fields[irm_environment].value.string_value |
Se asigna directamente desde el campo logstash.irm_environment. |
logstash.irm_region |
additional.fields[irm_region].value.string_value |
Se asigna directamente desde el campo logstash.irm_region. |
logstash.irm_site |
additional.fields[irm_site].value.string_value |
Se asigna directamente desde el campo logstash.irm_site. |
logstash.process.host |
intermediary.hostname |
Se asigna directamente desde el campo logstash.process.host. |
message |
dvc_ip, json_data, timestamp |
Se analizó con grok para extraer dvc_ip, json_data y timestamp. |
modification_time |
target.resource.attribute.last_update_time |
Se asigna directamente desde el campo modification_time. |
modifier_user_id |
principal.resource.attribute.labels[modifier_user_id].value |
Se asigna directamente desde el campo modifier_user_id. |
object_id |
target.resource.product_object_id |
Se asigna directamente desde el campo object_id. |
object_name |
target.resource.name |
Se asigna directamente desde el campo object_name. |
object_type_name |
target.resource.attribute.labels[object_type_name].value |
Se asigna directamente desde el campo object_type_name. |
PackageName |
additional.fields[PackageName].value.string_value |
Se asigna directamente desde el campo PackageName. |
SourceId |
additional.fields[SourceId].value.string_value |
Se asigna directamente desde el campo SourceId. |
StartTime |
additional.fields[StartTime].value.string_value |
Se asigna directamente desde el campo StartTime. |
Status |
security_result.action |
Se asigna a "BLOCK" si Status es "Closed" y a "ALLOW" si Status es "Open". |
Status |
security_result.summary |
Se asigna directamente desde el campo Status. |
tanium_audit_type |
metadata.product_event_type |
Se asigna directamente desde el campo tanium_audit_type. |
timestamp |
metadata.event_timestamp |
Se asigna directamente desde el campo timestamp extraído del mensaje de syslog o del campo message. |
type |
additional.fields[type].value.string_value |
Se asigna directamente desde el campo type. |
type_name |
metadata.product_event_type |
Se asigna directamente desde el campo type_name. |
User |
principal.user.userid |
Se asigna directamente desde el campo User. Se determina por la lógica del analizador en función de la presencia de src_ip, has_target y has_user. Puede ser "NETWORK_CONNECTION", "USER_RESOURCE_ACCESS", "STATUS_UPDATE" o "GENERIC_EVENT". Se codifica como "TANIUM_AUDIT". Está codificado como "cybersecurity". Se codifica como "TANIUM_AUDIT". |
@version |
metadata.product_version |
Se asigna directamente desde el campo @version. |
agent.ephemeral_id |
additional.fields[ephemeral_id].value.string_value |
Se asigna directamente desde el campo agent.ephemeral_id. |
agent.id |
observer.asset_id |
Se asigna directamente desde el campo agent.id, con el prefijo "filebeat:". |
agent.type |
observer.application |
Se asigna directamente desde el campo agent.type. |
agent.version |
observer.platform_version |
Se asigna directamente desde el campo agent.version. |
Comment |
security_result.description |
Se asigna directamente desde el campo Comment. |
host.hostname |
target.hostname |
Se asigna directamente desde el campo host.hostname si está presente. |
input.type |
network.ip_protocol |
Se asigna a "TCP" si input.type es "tcp" o "TCP". |
syslog_severity |
security_result.severity |
Se asigna a "ALTA" si syslog_severity es "error" o "advertencia", "MEDIA" si es "aviso", "BAJA" si es "información" o "info". |
syslog_severity |
security_result.severity_details |
Se asigna directamente desde el campo syslog_severity. |
Registro de cambios
Consulta el registro de cambios de este analizador
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.