Recoger registros de auditoría de Tanium

Disponible en:

En este documento se explica cómo ingerir registros de auditoría de Tanium en Google Security Operations mediante Amazon S3 con la función de exportación nativa a S3 de Tanium Connect. El analizador extrae los registros y, en un principio, borra numerosos campos predeterminados. A continuación, analiza el mensaje de registro mediante 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, gestionando varios tipos de datos y lógica condicional para rellenar los campos de UDM adecuados en función de la presencia y los valores de atributos de registro de auditoría de Tanium específicos.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Acceso privilegiado a Tanium Connect y Tanium Console
  • Acceso privilegiado a AWS (S3, IAM)

Crear un segmento de Amazon S3

  1. Abre la consola de Amazon S3.
  2. Si es necesario, puede cambiar la región.
    • En la barra de navegación, selecciona la región en la que quieras que se encuentren tus registros de auditoría de Tanium.
  3. Haz clic en Crear segmento.
    • Nombre del contenedor: introduce un nombre descriptivo para el contenedor (por ejemplo, tanium-audit-logs).
    • Región: selecciona la región que prefieras (por ejemplo, us-east-1).
    • Haz clic en Crear.

Crear un usuario de gestión de identidades y accesos con acceso completo a Amazon S3

  1. Abre la consola de IAM.
  2. Haz clic en Usuarios > Añadir usuario.
  3. Escribe un nombre de usuario (por ejemplo, tanium-connect-s3-user).
  4. Selecciona Acceso programático o Acceso a la consola de administración de AWS, o ambos, según sea necesario.
  5. Selecciona Contraseña generada automáticamente o Contraseña personalizada.
  6. Haz clic en Siguiente: Permisos.
  7. Elige Adjuntar políticas directamente.
  8. Busca y selecciona la política AmazonS3FullAccess para el usuario.
  9. Haz clic en Siguiente: Etiquetas.
  10. Haz clic en Siguiente: Revisar.
  11. Haz clic en Crear usuario.
  12. Copia y guarda el ID de clave de acceso y la clave de acceso secreta para consultarlos más adelante.

Configurar permisos en un segmento de Amazon S3

  1. En la consola de Amazon S3, elija el segmento que ha creado anteriormente.
  2. Haz clic en Permisos > Política de contenedor.
  3. En el editor de políticas del segmento, añade 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/*"
          ]
        }
      ]
    }
    
  4. Sustituye las siguientes variables:

    • Cambia YOUR_ACCOUNT_ID por tu ID de cuenta de AWS.
    • Cambia tanium-audit-logs por el nombre de tu segmento si es diferente.
    • Cambia tanium-connect-s3-user por tu nombre de usuario de IAM si es diferente.
  5. Haz clic en Guardar.

Configurar Tanium Connect para la exportación a S3

Crear una conexión de AWS S3 en Tanium Connect

  1. Inicia sesión en la consola de Tanium como administrador.
  2. Ve a Tanium Connect > Connections (Conexiones).
  3. Haga clic en Crear conexión.
  4. En la sección General Information (Información general), proporcione los siguientes detalles de configuración:
    • Nombre: introduce un nombre descriptivo (por ejemplo, Tanium Audit to S3).
    • Descripción: escriba 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 (opción predeterminada) o ajusta el nivel según sea necesario.

Configurar la fuente de la conexión

  1. En la sección Configuración, en Fuente, selecciona Auditoría de Tanium.
  2. Configura los ajustes de la fuente de auditoría:
    • Días del historial recuperado: introduce el número de días del historial de datos de auditoría que quieras recuperar (por ejemplo, 7 para una semana).
    • Tipos de auditoría: selecciona los tipos de auditoría que quieras exportar. Elige una de 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 ordenadores.
      • Paquetes: actividades relacionadas con los paquetes.
      • Sensores: modificaciones de sensores.
      • Configuración del sistema: cambios en la configuración del sistema.
      • Usuarios: actividades de gestión de usuarios.

Configurar el destino de AWS S3

  1. En Destino, selecciona AWS S3.
  2. Proporcione los siguientes detalles de configuración:
    • Nombre del destino: introduce un nombre (por ejemplo, Google SecOps S3 Bucket).
    • Clave de acceso de AWS: introduce el ID de clave de acceso del usuario de IAM que has creado anteriormente.
    • Clave secreta de AWS: introduce la clave de acceso secreta del usuario de IAM que has creado antes.
    • Nombre del segmento: introduce el nombre del segmento de S3 (por ejemplo, tanium-audit-logs).
    • Ruta del contenedor: opcional. Introduce un prefijo de ruta (por ejemplo, tanium/audit/).
    • Región: selecciona la región de AWS en la que se encuentra tu contenedor (por ejemplo, us-east-1).

Configurar el formato y la programación

  1. En la sección Formato, configura el formato de salida:
    • Tipo de formato: selecciona JSON.
    • Incluir encabezados de columna: selecciona si quieres incluir encabezados de columna.
    • Generar documento: desmarca esta opción para enviar datos JSON sin formato.
  2. En la sección Programación, configure cuándo se ejecutará la conexión:
    • Tipo de programación: selecciona Cron.
    • Expresión cron: introduce una expresión cron para las exportaciones periódicas (por ejemplo, 0 */1 * * * para las exportaciones por horas).
    • Fecha de inicio: define la fecha de inicio de la programación.
  3. Haz clic en Guardar cambios.

Probar y ejecutar la conexión

  1. En la página Vista general de Connect, ve a Conexiones.
  2. Haga clic en la conexión que ha creado (Tanium Audit to S3).
  3. Haz clic en Ejecutar ahora para probar la conexión.
  4. Confirma que quieres ejecutar la conexión.
  5. Monitoriza el estado de la conexión y comprueba que los registros de auditoría se están exportando a tu contenedor de S3.

Opcional: Crear un usuario y claves de gestión de identidades y accesos de solo lectura para Google SecOps

  1. Ve a Consola de AWS > IAM > Usuarios > Añadir usuarios.
  2. Haz clic en Add users (Añadir usuarios).
  3. Proporcione los siguientes detalles de configuración:
    • Usuario: introduce secops-reader.
    • Tipo de acceso: selecciona Clave de acceso – Acceso programático.
  4. Haz clic en Crear usuario.
  5. Asigna una política de lectura mínima (personalizada): Usuarios > secops-reader > Permisos > Añadir permisos > Asignar políticas directamente > Crear política.
  6. En el editor de JSON, introduce 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"
        }
      ]
    }
    
  7. Asigna el nombre secops-reader-policy.

  8. Ve a Crear política > busca o selecciona > Siguiente > Añadir permisos.

  9. Ve a Credenciales de seguridad > Claves de acceso > Crear clave de acceso.

  10. Descarga el archivo CSV (estos valores se introducen en el feed).

Configurar un feed en Google SecOps para ingerir registros de auditoría de Tanium

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en + Añadir nuevo feed.
  3. En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Tanium Audit logs).
  4. Selecciona Amazon S3 V2 como Tipo de fuente.
  5. Seleccione Tanium Audit como Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifique los valores de los siguientes parámetros de entrada:
    • URI de S3: s3://tanium-audit-logs/tanium/audit/ (ajusta la ruta si has usado otro nombre o ruta de segmento).
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
    • Antigüedad máxima del archivo: incluye los archivos modificados en los últimos días. El valor predeterminado es 180 días.
    • ID de clave de acceso: clave de acceso de usuario con acceso al segmento de S3 (del usuario de solo lectura creado anteriormente).
    • Clave de acceso secreta: clave secreta del usuario con acceso al segmento de S3 (del usuario de solo lectura creado anteriormente).
    • Espacio de nombres de recursos: el espacio de nombres de recursos.
    • Etiquetas de ingestión: etiqueta que se aplicará a los eventos de este feed.
  8. Haz clic en Siguiente.
  9. Revise la configuración de la nueva fuente en la pantalla Finalizar y, a continuación, haga 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 no se incluye Issuer.
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 decodificar 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 mediante el análisis de pares clave-valor.
details principal.user.attribute.labels[authentication_type].value Se extrae del campo details mediante el análisis de pares clave-valor.
details principal.asset.ip, principal.ip La dirección IP se extrae del campo details mediante 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 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 Analizado 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 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 mediante 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". Codificado como "TANIUM_AUDIT". Codificado como "ciberseguridad". Codificado 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 "HIGH" si syslog_severity es "error" o "warning", "MEDIUM" si es "notice" y "LOW" si es "information" o "info".
syslog_severity security_result.severity_details Se asigna directamente desde el campo syslog_severity.

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