Recolha registos de auditoria do Tanium

Compatível com:

Este documento explica como carregar registos de auditoria do Tanium para o Google Security Operations através do Amazon S3 com a capacidade de exportação nativa do S3 do Tanium Connect. O analisador extrai os registos, limpando inicialmente vários campos predefinidos. Em seguida, analisa a mensagem de registo através do grok e do filtro JSON, extraindo campos como a data/hora, o IP do dispositivo e os detalhes de auditoria. O analisador mapeia estes campos extraídos para o UDM, processando vários tipos de dados e lógica condicional para preencher os campos do UDM adequados com base na presença e nos valores de atributos específicos do registo de auditoria do Tanium.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

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

Crie um contentor do Amazon S3

  1. Abra a consola do Amazon S3.
  2. Se necessário, pode alterar a Região.
    • Na barra de navegação, selecione a região onde quer que os seus registos de auditoria do Tanium residam.
  3. Clique em Criar contentor.
    • Nome do segmento: introduza um nome significativo para o segmento (por exemplo, tanium-audit-logs).
    • Região: selecione a sua região preferida (por exemplo, us-east-1).
    • Clique em Criar.

Crie um utilizador do IAM com acesso total ao Amazon S3

  1. Abra a consola do IAM.
  2. Clique em Utilizadores > Adicionar utilizador.
  3. Introduza um nome de utilizador (por exemplo, tanium-connect-s3-user).
  4. Selecione Acesso programático e/ou Acesso à AWS Management Console, conforme necessário.
  5. Selecione Palavra-passe gerada automaticamente ou Palavra-passe personalizada.
  6. Clique em Seguinte: autorizações.
  7. Escolha Anexar políticas existentes diretamente.
  8. Pesquise e selecione a política AmazonS3FullAccess para o utilizador.
  9. Clique em Seguinte: Etiquetas.
  10. Clique em Seguinte: rever.
  11. Clique em Criar utilizador.
  12. Copie e guarde o ID da chave de acesso e a chave de acesso secreta para referência futura.

Configure autorizações no contentor do Amazon S3

  1. Na consola do Amazon S3, escolha o contentor que criou anteriormente.
  2. Clique em Autorizações > Política do contentor.
  3. No Editor de políticas de contentores, 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:

    • Altere YOUR_ACCOUNT_ID para o ID da sua conta da AWS.
    • Altere tanium-audit-logs para o nome do seu contentor real, se for diferente.
    • Altere tanium-connect-s3-user para o seu nome de utilizador do IAM real, se for diferente.
  5. Clique em Guardar.

Configure o Tanium Connect para a exportação para o S3

Crie uma ligação AWS S3 no Tanium Connect

  1. Inicie sessão na consola do Tanium como administrador.
  2. Aceda a Tanium Connect > Ligações.
  3. Clique em Criar associação.
  4. Na secção Informações gerais, faculte os seguintes detalhes de configuração:
    • Nome: introduza um nome descritivo (por exemplo, Tanium Audit to S3).
    • Descrição: introduza uma descrição significativa (por exemplo, Export Tanium audit logs to S3 for Google SecOps ingestion).
    • Ativar: selecione para ativar a ligação.
    • Nível de registo: selecione Informações (predefinição) ou ajuste conforme necessário.

Configure a origem da associação

  1. Na secção Configuração, para Origem, selecione Tanium Audit.
  2. Configure as definições da origem de auditoria:
    • Dias do histórico obtidos: introduza o número de dias de dados de auditoria do histórico a obter (por exemplo, 7 para uma semana).
    • Tipos de auditoria: selecione os tipos de auditoria que quer exportar. Escolha uma das seguintes opções:
      • Histórico de ações: ações emitidas pelos operadores da consola.
      • Autenticação: eventos de autenticação de utilizadores.
      • Conteúdo: alterações e modificações ao conteúdo.
      • Grupos: alterações ao grupo de computadores.
      • Pacotes: atividades relacionadas com pacotes.
      • Sensores: modificações de sensores.
      • Definições do sistema: alterações à configuração do sistema.
      • Utilizadores: atividades de gestão de utilizadores.

Configure o destino AWS S3

  1. Em Destino, selecione AWS S3.
  2. Indique os seguintes detalhes de configuração:
    • Nome do destino: introduza um nome (por exemplo, Google SecOps S3 Bucket).
    • Chave de acesso da AWS: introduza o ID da chave de acesso do utilizador do IAM criado anteriormente.
    • Chave secreta da AWS: introduza a chave de acesso secreta do utilizador do IAM criado anteriormente.
    • Nome do contentor: introduza o nome do contentor do S3 (por exemplo, tanium-audit-logs).
    • Caminho do contentor: opcional. Introduza um prefixo de caminho (por exemplo, tanium/audit/).
    • Região: selecione a região da AWS onde o seu contentor reside (por exemplo, us-east-1).

Configure o formato e o agendamento

  1. Na secção Formato, configure o formato de saída:
    • Tipo de formato: selecione JSON.
    • Incluir cabeçalhos de colunas: selecione se quer incluir cabeçalhos de colunas.
    • Gerar documento: desmarque esta opção para enviar dados JSON não processados.
  2. Na secção Agendamento, configure quando a associação é executada:
    • Tipo de agendamento: selecione Cron.
    • Expressão cronológica: introduza uma expressão cronológica para exportações regulares (por exemplo, 0 */1 * * * para exportações de hora em hora).
    • Data de início: defina a data de início da programação.
  3. Clique em Guardar alterações.

Teste e execute a ligação

  1. Na página Vista geral do Connect, aceda a Ligações.
  2. Clique na associação que criou (Tanium Audit to S3).
  3. Clique em Executar agora para testar a ligação.
  4. Confirme que quer executar a ligação.
  5. Monitorize o estado da ligação e verifique se os registos de auditoria estão a ser exportados para o seu contentor S3.

Opcional: crie um utilizador e chaves da IAM só de leitura para o Google SecOps

  1. Aceda a AWS Console > IAM > Users > Add users.
  2. Clique em Adicionar utilizadores.
  3. Indique os seguintes detalhes de configuração:
    • Utilizador: introduza secops-reader.
    • Tipo de acesso: selecione Chave de acesso – Acesso programático.
  4. Clique em Criar utilizador.
  5. Anexe a política de leitura mínima (personalizada): Users > secops-reader > Permissions > Add permissions > Attach policies directly > Create policy.
  6. No editor JSON, introduza 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. Aceda a Criar política > pesquise/selecione > Seguinte > Adicionar autorizações.

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

  10. Transfira o CSV (estes valores são introduzidos no feed).

Configure um feed no Google SecOps para carregar registos de auditoria do Tanium

  1. Aceda a Definições do SIEM > Feeds.
  2. Clique em + Adicionar novo feed.
  3. No campo Nome do feed, introduza 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 registo.
  6. Clicar em Seguinte.
  7. Especifique valores para os seguintes parâmetros de entrada:
    • URI do S3: s3://tanium-audit-logs/tanium/audit/ (ajuste o caminho se tiver usado um nome ou um caminho do contentor diferente).
    • Opções de eliminação de origens: selecione a opção de eliminação de acordo com a sua preferência.
    • Idade máxima do ficheiro: inclua ficheiros modificados no último número de dias. A predefinição é 180 dias.
    • ID da chave de acesso: chave de acesso do utilizador com acesso ao contentor do S3 (do utilizador só de leitura criado acima).
    • Chave de acesso secreta: chave secreta do utilizador com acesso ao contentor do S3 (do utilizador só de leitura criado acima).
    • Espaço de nomes do recurso: o espaço de nomes do recurso.
    • Etiquetas de carregamento: a etiqueta a aplicar aos eventos deste feed.
  8. Clicar em Seguinte.
  9. Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
ActionId metadata.product_log_id Mapeado diretamente a partir do campo ActionId.
ActionName security_result.action_details Mapeado diretamente a partir do campo ActionName.
Approver additional.fields[Approver].value.string_value Mapeado diretamente a partir do campo Approver.
Approver principal.user.userid Mapeado a partir do campo Approver se Issuer não estiver presente.
audit_name metadata.description Mapeado diretamente a partir do campo audit_name.
audit_row_id additional.fields[audit_row_id].value.string_value Mapeado diretamente a partir do campo audit_row_id.
audit_type additional.fields[audit_type].value.string_value Mapeado diretamente a partir do campo audit_type.
authentication_type principal.user.attribute.labels[authentication_type].value Mapeado diretamente a partir do campo authentication_type extraído do campo details.
Command principal.process.command_line Mapeado diretamente a partir do campo Command após a descodificação do URL.
creation_time target.resource.attribute.creation_time Mapeado diretamente a partir do campo creation_time.
details network.session_id Extraído do campo details através da análise de chaves-valores.
details principal.user.attribute.labels[authentication_type].value Extraído do campo details através da análise de chaves-valores.
details principal.asset.ip, principal.ip O endereço IP é extraído do campo details através da análise de chaves-valores e mapeado para principal.asset.ip e principal.ip.
DistributeOver additional.fields[DistributeOver].value.string_value Mapeado diretamente a partir do campo DistributeOver.
dvc_ip intermediary.hostname Mapeado diretamente a partir do campo dvc_ip extraído da mensagem syslog.
dvc_ip observer.ip Mapeado diretamente a partir do campo dvc_ip se logstash.collect.host não estiver presente.
Expiration additional.fields[Expiration].value.string_value Mapeado diretamente a partir do campo Expiration.
host.architecture target.asset.hardware.cpu_platform Mapeado diretamente a partir do campo host.architecture.
host.id target.asset.asset_id Mapeado diretamente a partir do campo host.id, com o prefixo "ID do anfitrião:".
host.ip target.ip Mapeado diretamente a partir do campo host.ip.
host.mac target.mac Mapeado diretamente a partir do campo host.mac.
host.name target.hostname Mapeado diretamente a partir do campo host.name se host.hostname não estiver presente.
host.os.kernel target.platform_patch_level Mapeado diretamente a partir do campo host.os.kernel.
host.os.name additional.fields[os_name].value.string_value Mapeado diretamente a partir do campo host.os.name.
host.os.version target.platform_version Mapeado diretamente a partir do campo host.os.version.
InsertTime additional.fields[InsertTime].value.string_value Mapeado diretamente a partir do campo InsertTime.
Issuer additional.fields[Issuer].value.string_value Mapeado diretamente a partir do campo Issuer.
Issuer principal.user.userid Mapeado diretamente a partir do campo Issuer, se estiver presente.
last_modified_by principal.resource.attribute.labels[last_modified_by].value Mapeado diretamente a partir 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 a partir do campo logstash.collect.host, se estiver presente.
logstash.collect.timestamp metadata.collected_timestamp Mapeado diretamente a partir do campo logstash.collect.timestamp.
logstash.ingest.timestamp metadata.ingested_timestamp Mapeado diretamente a partir do campo logstash.ingest.timestamp.
logstash.irm_environment additional.fields[irm_environment].value.string_value Mapeado diretamente a partir do campo logstash.irm_environment.
logstash.irm_region additional.fields[irm_region].value.string_value Mapeado diretamente a partir do campo logstash.irm_region.
logstash.irm_site additional.fields[irm_site].value.string_value Mapeado diretamente a partir do campo logstash.irm_site.
logstash.process.host intermediary.hostname Mapeado diretamente a partir do campo logstash.process.host.
message dvc_ip, json_data, timestamp Analisado com o grok para extrair dvc_ip, json_data e timestamp.
modification_time target.resource.attribute.last_update_time Mapeado diretamente a partir do campo modification_time.
modifier_user_id principal.resource.attribute.labels[modifier_user_id].value Mapeado diretamente a partir do campo modifier_user_id.
object_id target.resource.product_object_id Mapeado diretamente a partir do campo object_id.
object_name target.resource.name Mapeado diretamente a partir do campo object_name.
object_type_name target.resource.attribute.labels[object_type_name].value Mapeado diretamente a partir do campo object_type_name.
PackageName additional.fields[PackageName].value.string_value Mapeado diretamente a partir do campo PackageName.
SourceId additional.fields[SourceId].value.string_value Mapeado diretamente a partir do campo SourceId.
StartTime additional.fields[StartTime].value.string_value Mapeado diretamente a partir do campo StartTime.
Status security_result.action Mapeado para "BLOCK" se Status for "Closed" e "ALLOW" se Status for "Open".
Status security_result.summary Mapeado diretamente a partir do campo Status.
tanium_audit_type metadata.product_event_type Mapeado diretamente a partir do campo tanium_audit_type.
timestamp metadata.event_timestamp Mapeado diretamente a partir do campo timestamp extraído da mensagem syslog ou do campo message.
type additional.fields[type].value.string_value Mapeado diretamente a partir do campo type.
type_name metadata.product_event_type Mapeado diretamente a partir do campo type_name.
User principal.user.userid Mapeado diretamente a partir 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". Codificado de forma rígida para "TANIUM_AUDIT". Codificado de forma rígida para "cybersecurity". Codificado de forma rígida para "TANIUM_AUDIT".
@version metadata.product_version Mapeado diretamente a partir do campo @version.
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value Mapeado diretamente a partir do campo agent.ephemeral_id.
agent.id observer.asset_id Mapeado diretamente a partir do campo agent.id, com o prefixo "filebeat:".
agent.type observer.application Mapeado diretamente a partir do campo agent.type.
agent.version observer.platform_version Mapeado diretamente a partir do campo agent.version.
Comment security_result.description Mapeado diretamente a partir do campo Comment.
host.hostname target.hostname Mapeado diretamente a partir do campo host.hostname, se estiver presente.
input.type network.ip_protocol Mapeado para "TCP" se input.type for "tcp" ou "TCP".
syslog_severity security_result.severity Mapeado para "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 a partir do campo syslog_severity.

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