Coletar registros do Nutanix Prism
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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- Faça o download do arquivo de autenticação de transferência.
Receber o ID de cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie e salve o ID do cliente na seção Detalhes da organização.
Instalar o agente do BindPlane
- 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
. - 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
. - 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
- Acesse a máquina em que o BindPlane está instalado.
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
Reinicie o BindPlane Agent para aplicar as mudanças usando o seguinte comando:
sudo systemctl bindplane restart
Como exportar o Syslog do Nutanix Prism
- Faça login no Prism Central usando a conta privilegiada.
- Selecione Prism Central Settings no menu.
- Acesse Servidor Syslog.
- Clique em + Configure Syslog Server.
- 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.
- Clique em + Editar na opção Origens de dados.
- 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".