Coletar registros de auditoria do Tanium

Compatível com:

Este documento explica como ingerir registros de auditoria do Tanium no Google Security Operations usando o Amazon S3 com o recurso nativo de exportação do S3 do Tanium Connect. O analisador extrai os registros, primeiro limpando vários campos padrão. Em seguida, ele analisa a mensagem de registro usando grok e o filtro json, extraindo campos como carimbo de data/hora, IP do dispositivo e detalhes de auditoria. O analisador mapeia esses campos extraídos para o UDM, processando vários tipos de dados e lógica condicional para preencher os campos apropriados do UDM com base na presença e nos valores de atributos específicos do registro de auditoria do Tanium.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps
  • Acesso privilegiado ao Tanium Connect e ao Tanium Console
  • Acesso privilegiado à AWS (S3, IAM)

Criar um bucket do Amazon S3

  1. Abra o console do Amazon S3.
  2. Se necessário, mude a Região.
    • Na barra de navegação, selecione a região em que você quer que os registros de auditoria do Tanium fiquem.
  3. Clique em Criar bucket.
    • Nome do bucket: insira um nome significativo para o bucket (por exemplo, tanium-audit-logs).
    • Região: selecione a região de sua preferência (por exemplo, us-east-1).
    • Clique em Criar.

Criar um usuário do IAM com acesso total ao Amazon S3

  1. Abra o console do IAM.
  2. Clique em Usuários > Adicionar usuário.
  3. Digite um nome de usuário (por exemplo, tanium-connect-s3-user).
  4. Selecione Acesso programático e/ou Acesso ao console de gerenciamento da AWS, conforme necessário.
  5. Selecione Senha gerada automaticamente ou Senha personalizada.
  6. Clique em Next: Permissions.
  7. Escolha Anexar políticas atuais diretamente.
  8. Pesquise e selecione a política AmazonS3FullAccess para o usuário.
  9. Clique em Avançar: tags.
  10. Clique em PRÓXIMO: REVISAR.
  11. Clique em Criar usuário.
  12. Copie e salve o ID da chave de acesso e a chave de acesso secreta para referência futura.

Configurar permissões no bucket do Amazon S3

  1. No console do Amazon S3, escolha o bucket que você criou anteriormente.
  2. Clique em Permissões > Política do bucket.
  3. No Editor de políticas do bucket, adicione a seguinte 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. Substitua as seguintes variáveis:

    • Mude YOUR_ACCOUNT_ID para o ID da sua conta da AWS.
    • Mude tanium-audit-logs para o nome real do bucket, se for diferente.
    • Mude tanium-connect-s3-user para seu nome de usuário real do IAM, se for diferente.
  5. Clique em Salvar.

Configurar o Tanium Connect para exportação do S3

Criar uma conexão do AWS S3 no Tanium Connect

  1. Faça login no Tanium Console como administrador.
  2. Acesse Tanium Connect > Conexões.
  3. Clique em Criar conexão.
  4. Na seção Informações gerais, forneça os seguintes detalhes de configuração:
    • Nome: insira um nome descritivo. Por exemplo, Tanium Audit to S3.
    • Descrição: insira uma descrição significativa (por exemplo, Export Tanium audit logs to S3 for Google SecOps ingestion).
    • Ativar: selecione para ativar a conexão.
    • Nível de registro: selecione Informações (padrão) ou ajuste conforme necessário.

Configurar a origem da conexão

  1. Na seção Configuração, em Origem, selecione Auditoria do Tanium.
  2. Configure as configurações de origem da auditoria:
    • Dias de histórico recuperados: insira o número de dias de dados de auditoria históricos a serem recuperados (por exemplo, 7 para uma semana).
    • Tipos de auditoria: selecione os tipos de auditoria que você quer exportar. Escolha entre:
      • Histórico de ações: ações emitidas por operadores do console.
      • Autenticação: eventos de autenticação de usuários.
      • Conteúdo: mudanças e modificações no conteúdo.
      • Grupos: mudanças nos grupos de computadores.
      • Pacotes: atividades relacionadas a pacotes.
      • Sensores: modificações nos sensores.
      • Configurações do sistema: mudanças na configuração do sistema.
      • Usuários: atividades de gerenciamento de usuários.

Configurar o destino do AWS S3

  1. Em Destino, selecione AWS S3.
  2. Informe os seguintes detalhes de configuração:
    • Nome do destino: insira um nome, por exemplo, Google SecOps S3 Bucket.
    • Chave de acesso da AWS: insira o ID da chave de acesso do usuário do IAM criado anteriormente.
    • Chave secreta da AWS: insira a chave de acesso secreta do usuário do IAM criado anteriormente.
    • Nome do bucket: insira o nome do bucket do S3 (por exemplo, tanium-audit-logs).
    • Caminho do bucket: opcional. Insira um prefixo de caminho (por exemplo, tanium/audit/).
    • Região: selecione a região da AWS em que o bucket está localizado (por exemplo, us-east-1).

Configurar o formato e a programação

  1. Na seção Formato, configure o formato de saída:
    • Tipo de formato: selecione JSON.
    • Incluir cabeçalhos de coluna: selecione se você quer incluir cabeçalhos de coluna.
    • Gerar documento: desmarque essa opção para enviar dados JSON brutos.
  2. Na seção Programação, configure quando a conexão será executada:
    • Tipo de programação: selecione Cron.
    • Expressão cron: insira uma expressão cron para exportações regulares (por exemplo, 0 */1 * * * para exportações por hora).
    • Data de início: defina a data de início da programação.
  3. Clique em Salvar alterações.

Testar e executar a conexão

  1. Na página Visão geral do Connect, acesse Conexões.
  2. Clique na conexão que você criou (Tanium Audit to S3).
  3. Clique em Executar agora para testar a conexão.
  4. Confirme que você quer executar a conexão.
  5. Monitore o status da conexão e verifique se os registros de auditoria estão sendo exportados para o bucket do S3.

Opcional: criar um usuário e chaves do IAM somente leitura para o Google SecOps

  1. Acesse Console da AWS > IAM > Usuários > Adicionar usuários.
  2. Clique em Add users.
  3. Informe os seguintes detalhes de configuração:
    • Usuário: insira secops-reader.
    • Tipo de acesso: selecione Chave de acesso – Acesso programático.
  4. Clique em Criar usuário.
  5. Anexe a política de leitura mínima (personalizada): Usuários > secops-reader > Permissões > Adicionar permissões > Anexar políticas diretamente > Criar política.
  6. No editor JSON, insira a seguinte 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. Defina o nome como secops-reader-policy.

  8. Acesse Criar política > pesquise/selecione > Próxima > Adicionar permissões.

  9. Acesse Credenciais de segurança > Chaves de acesso > Criar chave de acesso.

  10. Faça o download do CSV (esses valores são inseridos no feed).

Configurar um feed no Google SecOps para ingerir registros de auditoria do Tanium

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em + Adicionar novo feed.
  3. No campo Nome do feed, insira um nome para o feed (por exemplo, Tanium Audit logs).
  4. Selecione Amazon S3 V2 como o Tipo de origem.
  5. Selecione Tanium Audit como o Tipo de registro.
  6. Clique em Próxima.
  7. Especifique valores para os seguintes parâmetros de entrada:
    • URI do S3: s3://tanium-audit-logs/tanium/audit/ (ajuste o caminho se você usou um nome ou caminho de bucket diferente).
    • Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
    • Idade máxima do arquivo: inclui arquivos modificados no último número de dias. O padrão é de 180 dias.
    • ID da chave de acesso: chave de acesso do usuário com acesso ao bucket do S3 (do usuário somente leitura criado acima).
    • Chave de acesso secreta: chave secreta do usuário com acesso ao bucket do S3 (do usuário somente leitura criado acima).
    • Namespace do recurso: o namespace do recurso.
    • Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.
  8. Clique em Próxima.
  9. Revise a nova configuração do feed na tela Finalizar e clique em Enviar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
ActionId metadata.product_log_id Mapeado diretamente do campo ActionId.
ActionName security_result.action_details Mapeado diretamente do campo ActionName.
Approver additional.fields[Approver].value.string_value Mapeado diretamente do campo Approver.
Approver principal.user.userid Mapeado do campo Approver se Issuer não estiver presente.
audit_name metadata.description Mapeado diretamente do campo audit_name.
audit_row_id additional.fields[audit_row_id].value.string_value Mapeado diretamente do campo audit_row_id.
audit_type additional.fields[audit_type].value.string_value Mapeado diretamente do campo audit_type.
authentication_type principal.user.attribute.labels[authentication_type].value Mapeado diretamente do campo authentication_type extraído do campo details.
Command principal.process.command_line Mapeado diretamente do campo Command após a decodificação de URL.
creation_time target.resource.attribute.creation_time Mapeado diretamente do campo creation_time.
details network.session_id Extraído do campo details usando a análise de chave-valor.
details principal.user.attribute.labels[authentication_type].value Extraído do campo details usando a análise de chave-valor.
details principal.asset.ip, principal.ip O endereço IP é extraído do campo details usando a análise de chave-valor e mapeado para principal.asset.ip e principal.ip.
DistributeOver additional.fields[DistributeOver].value.string_value Mapeado diretamente do campo DistributeOver.
dvc_ip intermediary.hostname Mapeado diretamente do campo dvc_ip extraído da mensagem do syslog.
dvc_ip observer.ip Mapeado diretamente do campo dvc_ip se logstash.collect.host não estiver presente.
Expiration additional.fields[Expiration].value.string_value Mapeado diretamente do campo Expiration.
host.architecture target.asset.hardware.cpu_platform Mapeado diretamente do campo host.architecture.
host.id target.asset.asset_id Mapeado diretamente do campo host.id, com o prefixo "Host ID:".
host.ip target.ip Mapeado diretamente do campo host.ip.
host.mac target.mac Mapeado diretamente do campo host.mac.
host.name target.hostname Mapeado diretamente do campo host.name se host.hostname não estiver presente.
host.os.kernel target.platform_patch_level Mapeado diretamente do campo host.os.kernel.
host.os.name additional.fields[os_name].value.string_value Mapeado diretamente do campo host.os.name.
host.os.version target.platform_version Mapeado diretamente do campo host.os.version.
InsertTime additional.fields[InsertTime].value.string_value Mapeado diretamente do campo InsertTime.
Issuer additional.fields[Issuer].value.string_value Mapeado diretamente do campo Issuer.
Issuer principal.user.userid Mapeado diretamente do campo Issuer, se presente.
last_modified_by principal.resource.attribute.labels[last_modified_by].value Mapeado diretamente do campo last_modified_by.
log.source.address principal.ip O endereço IP é extraído do campo log.source.address e mapeado para principal.ip.
log.source.address principal.port A porta é extraída do campo log.source.address.
logstash.collect.host observer.ip Mapeado diretamente do campo logstash.collect.host, se presente.
logstash.collect.timestamp metadata.collected_timestamp Mapeado diretamente do campo logstash.collect.timestamp.
logstash.ingest.timestamp metadata.ingested_timestamp Mapeado diretamente do campo logstash.ingest.timestamp.
logstash.irm_environment additional.fields[irm_environment].value.string_value Mapeado diretamente do campo logstash.irm_environment.
logstash.irm_region additional.fields[irm_region].value.string_value Mapeado diretamente do campo logstash.irm_region.
logstash.irm_site additional.fields[irm_site].value.string_value Mapeado diretamente do campo logstash.irm_site.
logstash.process.host intermediary.hostname Mapeado diretamente do campo logstash.process.host.
message dvc_ip, json_data, timestamp Analisado usando grok para extrair dvc_ip, json_data e timestamp.
modification_time target.resource.attribute.last_update_time Mapeado diretamente do campo modification_time.
modifier_user_id principal.resource.attribute.labels[modifier_user_id].value Mapeado diretamente do campo modifier_user_id.
object_id target.resource.product_object_id Mapeado diretamente do campo object_id.
object_name target.resource.name Mapeado diretamente do campo object_name.
object_type_name target.resource.attribute.labels[object_type_name].value Mapeado diretamente do campo object_type_name.
PackageName additional.fields[PackageName].value.string_value Mapeado diretamente do campo PackageName.
SourceId additional.fields[SourceId].value.string_value Mapeado diretamente do campo SourceId.
StartTime additional.fields[StartTime].value.string_value Mapeado diretamente do campo StartTime.
Status security_result.action Mapeado como "BLOCK" se Status for "Closed" e "ALLOW" se Status for "Open".
Status security_result.summary Mapeado diretamente do campo Status.
tanium_audit_type metadata.product_event_type Mapeado diretamente do campo tanium_audit_type.
timestamp metadata.event_timestamp Mapeado diretamente do campo timestamp extraído da mensagem syslog ou do campo message.
type additional.fields[type].value.string_value Mapeado diretamente do campo type.
type_name metadata.product_event_type Mapeado diretamente do campo type_name.
User principal.user.userid Mapeado diretamente do campo User. Determinado pela lógica do analisador com base na presença de src_ip, has_target e has_user. Pode ser "NETWORK_CONNECTION", "USER_RESOURCE_ACCESS", "STATUS_UPDATE" ou "GENERIC_EVENT". Fixado no código como "TANIUM_AUDIT". Fixado no código como "cybersecurity". Fixado no código como "TANIUM_AUDIT".
@version metadata.product_version Mapeado diretamente do campo @version.
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value Mapeado diretamente do campo agent.ephemeral_id.
agent.id observer.asset_id Mapeado diretamente do campo agent.id, com o prefixo "filebeat:".
agent.type observer.application Mapeado diretamente do campo agent.type.
agent.version observer.platform_version Mapeado diretamente do campo agent.version.
Comment security_result.description Mapeado diretamente do campo Comment.
host.hostname target.hostname Mapeado diretamente do campo host.hostname, se presente.
input.type network.ip_protocol Mapeado para "TCP" se input.type for "tcp" ou "TCP".
syslog_severity security_result.severity Mapeado como "HIGH" se syslog_severity for "error" ou "warning", "MEDIUM" se for "notice", "LOW" se for "information" ou "info".
syslog_severity security_result.severity_details Mapeado diretamente do campo syslog_severity.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.