Coletar registros do Nutanix Prism

Compatível com:

Visão geral

Esse analisador processa os registros do Nutanix Prism, processando os formatos JSON e syslog. Ele extrai campos de várias estruturas de registro, os normaliza no UDM e enriquece os dados com mais contexto, como informações do usuário, detalhes da rede e gravidade da segurança. O analisador também realiza ações específicas com base no método HTTP e no nível de registro, categorizando eventos em tipos de eventos da UDM, como USER_LOGIN, STATUS_UPDATE e GENERIC_EVENT.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Verifique se você tem acesso privilegiado ao Nutanix Prism Central.
  • Verifique se você tem um host do Windows 2012 SP2 ou posterior ou um host do Linux com systemd.
  • Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Faça o download do arquivo de autenticação de transferência.

Receber o ID de cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do BindPlane

  1. Para a instalação do Windows, execute o seguinte script: msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet.
  2. Para a instalação no Linux, execute o seguinte script: sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh.
  3. Outras opções de instalação podem ser encontradas neste guia de instalação.

Configurar o agente BindPlane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse a máquina em que o BindPlane está instalado.
  2. Edite o arquivo config.yaml da seguinte forma:

    receivers:
      tcplog:
        # Replace the below port <54525> and IP (0.0.0.0) with your specific values
        listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: Namespace
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Reinicie o BindPlane Agent para aplicar as mudanças usando o seguinte comando: sudo systemctl bindplane restart

Como exportar o Syslog do Nutanix Prism

  1. Faça login no Prism Central usando a conta privilegiada.
  2. Selecione Prism Central Settings no menu.
  3. Acesse Servidor Syslog.
  4. Clique em + Configure Syslog Server.
  5. Especifique valores para os parâmetros de entrada na caixa de diálogo Servidores Syslog:
    • Nome do servidor: insira um nome para o servidor (por exemplo, Servidor do BindPlane do Google SecOps).
    • Endereço IP: insira o IP do seu agente do BindPlane.
    • Porta: digite a porta em que o agente do BindPlane está detectando.
    • Protocolo de transporte: selecione TCP.
    • Clique em Configurar.
  6. Clique em + Editar na opção Origens de dados.
  7. Especifique valores para os parâmetros de entrada na caixa de diálogo Fontes de dados e nível de gravidade correspondente:
    • Selecione API Audit, Audit e Flow.
    • Defina o nível de gravidade para cada um como 6 - Informativo.
    • Clique em Salvar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
@timestamp metadata.event_timestamp O carimbo de data/hora do evento é analisado a partir do campo @timestamp. Os formatos yyyy-MM-dd HH:mm:ss.SSS, yyyy-MM-ddTHH:mm:ssZ e ISO8601 são aceitos.
agent.id observer.asset_id Combinado com agent.type para formar o ID do recurso de observador no formato "agent.type:agent.id".
agent.type observer.application O aplicativo usado para observação.
agent.version observer.platform_version A versão do aplicativo de observador.
alertUid security_result.detection_fields.value O valor do UID do alerta é mapeado para o campo value em detection_fields. O key está definido como "Alert Uid".
api_version metadata.product_version A versão da API.
clientIp principal.ip, principal.asset.ip Endereço IP do cliente.
client_type principal.labels.value O valor do tipo de cliente. O key está definido como "client_type".
defaultMsg metadata.description A mensagem padrão.
entity_uuid metadata.product_log_id UUID da entidade.
http_method network.http.method O método HTTP. Convertido em letras maiúsculas.
host.architecture principal.asset.hardware.cpu_platform A arquitetura do host.
host.id principal.asset_id Prefixado com "NUTANIX:" para criar o ID do recurso principal.
host.ip principal.ip, principal.asset.ip Endereço IP do host.
host.mac principal.mac Endereço MAC do host.
host.os.kernel principal.platform_patch_level A versão do kernel do sistema operacional do host.
host.os.platform principal.platform A plataforma do sistema operacional do host. Mapeado para LINUX, WINDOWS, MAC ou UNKNOWN_PLATFORM.
host.os.version principal.platform_version A versão do sistema operacional do host.
input.type network.ip_protocol O protocolo de rede. Mapeado para "UDP" ou "TCP".
log.source.address principal.ip, principal.asset.ip, principal.port Analisado para extrair o IP e a porta de origem.
logstash.collect.host observer.ip O endereço IP do coletor Logstash.
logstash.collect.timestamp metadata.collected_timestamp O carimbo de data/hora em que o registro foi coletado.
logstash.ingest.host intermediary.hostname O nome do host do servidor de transferência de logstash.
logstash.ingest.timestamp metadata.ingested_timestamp O carimbo de data/hora em que o registro foi ingerido.
logstash.irm_environment principal.labels.value O valor do ambiente irm. O key está definido como "irm_environment".
logstash.irm_region principal.labels.value O valor da região irm. O key está definido como "irm_region".
logstash.irm_site principal.labels.value O valor do site de irm. O key está definido como "irm_site".
logstash.process.host intermediary.hostname O nome do host do servidor de processamento do Logstash.
operationType metadata.product_event_type O tipo de operação.
originatingClusterUuid additional.fields.value.string_value O UUID do cluster de origem. O key está definido como "Uuid do cluster de origem".
params.mac_address target.mac O endereço MAC dos parâmetros.
params.requested_ip_address target.ip, target.asset.ip O endereço IP solicitado nos parâmetros.
params.vm_name target.resource.name O nome da VM dos parâmetros.
program metadata.product_event_type O nome do programa.
rest_endpoint target.url O endpoint REST.
sessionId additional.fields.value.string_value O ID da sessão. O key está definido como "ID da sessão".
syslog_host principal.hostname, principal.asset.hostname Host do Syslog.
timestamp metadata.event_timestamp O carimbo de data/hora do evento.
username principal.user.user_display_name ou principal.user.userid Nome de usuário. Usado como ID do usuário se http_method for "POST".
uuid metadata.product_log_id UUID.
N/A metadata.vendor_name Fixado em "Nutanix_Prism".
N/A metadata.product_name Fixado em "Nutanix_Prism".
N/A metadata.event_type Determinado pela lógica do analisador com base nos valores de has_principal, has_target, audit_log, network_set e http_method. Pode ser GENERIC_EVENT, USER_LOGIN, STATUS_UPDATE, USER_RESOURCE_ACCESS, RESOURCE_CREATION, USER_RESOURCE_UPDATE_CONTENT ou USER_RESOURCE_DELETION.
N/A metadata.log_type Fixado em "NUTANIX_PRISM".
N/A extensions.auth.type Defina como "AUTHTYPE_UNSPECIFIED" se metadata.event_type for USER_LOGIN.
N/A security_result.severity Determinado pela lógica do analisador com base em log_level e syslog_pri. Pode ser CRITICAL, ERROR, HIGH, MEDIUM ou INFORMATIONAL.

Alterações

2024-02-21

  • Quando "inner_message" não estiver vazio e "not_json" for "true", defina "audit_log" como "true" para oferecer suporte a registros JSON descartados.
  • Mapeamentos "principal.ip" e "principal.asset.ip" alinhados.
  • Mapeamentos "target.ip" e "target.asset.ip" alinhados.
  • Os mapeamentos "principal.hostname" e "principal.asset.hostname" foram alinhados.
  • Quando "network_set" é "false", "has_principal" é "true", "has_target" é "false" e "audit_log" é "false", defina "metadata.event_type" como "STATUS_UPDATE".
  • Quando "network_set" é "true", "has_principal" é "true", "has_target" é "false" e "audit_log" é "false", defina "metadata.event_type" como "GENERIC_EVENT".

2024-01-12

  • Suporte adicionado para o novo formato de registros syslog.
  • Foi adicionada uma verificação condicional nula antes do mapeamento de "logstash.ingest.host" para "intermediary.hostname".
  • Foi adicionada uma verificação condicional nula antes do mapeamento de "logstash.process.host" para "intermediary.hostname".
  • Foi adicionada uma verificação condicional nula antes de mapear "logstash.collect.host" para "observer.ip".

2023-12-23

  • Inclusão de suporte a um novo tipo de registros de auditoria.
  • Foram adicionados novos padrões Grok para analisar registros SYSLOG+JSON.
  • Mapeamos "affectedEntityList" e "alertUid" para "security_result.detection_fields".
  • "clientIp" e "params.requested_ip_address" foram mapeados para "principal.ip".
  • "defaultMsg" foi associado a "metadata.description".
  • "operationType" foi associado a "metadata.product_event_type".
  • Mapeamos "originatingClusterUuid" e "sessionId" para "additional.fields".
  • "params.mac_address" foi mapeado para "principal.mac".
  • "Uuid" foi mapeado para "metadata.product_log_id".
  • "UserName" foi associado a "principal.user.user_display_name".
  • "params.vm_name" foi associado a "target.resource.name".

2023-01-23

  • "logstash.ingest.host" foi mapeado para "intermediary[0].hostname" em vez de "observer.hostname".
  • "logstash.collect.host" foi mapeado para "observer.ip".
  • Adição de verificação de nulos para "logstash.ingest.host".