Recolha registos do ESET AV
Este documento explica como carregar registos do ESET AV para o Google Security Operations usando o Bindplane. O código do analisador Logstash extrai dados de eventos de segurança dos registos ESET_AV formatados em SYSLOG ou JSON. Primeiro, normaliza a mensagem não processada e, em seguida, analisa-a com base no formato identificado, mapeando os campos extraídos para o esquema do modelo de dados unificado (UDM) correspondente para uma representação e uma análise consistentes.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Windows 2016 ou posterior, ou um anfitrião Linux com
systemd - Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
- Acesso privilegiado ao ESET Protect
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de raiz ou sudo.
Execute o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
Para ver opções de instalação adicionais, consulte o guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
- Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml. Normalmente, encontra-se no diretório/etc/bindplane-agent/no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano,viou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yamlda seguinte forma:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: 'ESET_AV' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labelsSubstitua a porta e o endereço IP conforme necessário na sua infraestrutura.
Substitua
<customer_id>pelo ID de cliente real.Atualize
/path/to/ingestion-authentication-file.jsonpara o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agentPara reiniciar o agente do Bindplane no Windows, pode usar a consola Services ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog para o ESET PROTECT no local
- Inicie sessão na consola Web do ESET Protect.
- Aceda a Mais > Definições > Definições avançadas > Servidor Syslog.
- Selecione o botão junto a Ativar Syslog.
- Indique os seguintes detalhes de configuração:
- Anfitrião: introduza o endereço IP do agente Bindplane
- Porta: introduza o número da porta do agente Bindplane (
514para UDP) - Formato: selecione Syslog
- Transporte: selecione UDP
- Detalhe do registo de rastreio: selecione Informacional
- Exportar registos para Syslog: selecione Ativar
- Formato dos registos exportados: selecione JSON
- Clique em Guardar.
Configure o Syslog para o ESET PROTECT Cloud
- Inicie sessão na consola Web do ESET Protect.
- Aceda a Mais > Definições > Servidor Syslog.
- Selecione o botão junto a Ativar Syslog.
- Indique os seguintes detalhes de configuração:
- Formato do payload: selecione JSON
- Formato do envelope: selecione Syslog
- Nível de registo mínimo: selecione Informacional
- Tipos de eventos a registar: selecione Todos os tipos de eventos
- IP de destino: introduza o endereço IP do agente do Bindplane
- Porta: introduza o número da porta do agente Bindplane (
514para UDP)
- Clique em Guardar.
Tabela de mapeamento do UDM
| Campo de registo | Mapeamento de UDM | Lógica |
|---|---|---|
| conta | principal.administrative_domain | Extraído do campo account através do padrão grok %{DATA:admin_domain}\\\\%{WORD:user_id}. |
| conta | principal.user.userid | Extraído do campo account através do padrão grok %{DATA:admin_domain}\\\\%{WORD:user_id}. |
| ação | security_result.action | Se action for Block (não é sensível a maiúsculas e minúsculas), defina como BLOCK. Se action for Start (não é sensível a maiúsculas e minúsculas), defina como ALLOW. |
| action_taken | security_result.action_details | Mapeado diretamente a partir do campo action_taken. |
| computer_severity_score | security_result.detection_fields | É criado um par de chave-valor com a chave computer_severity_score e o valor do campo computer_severity_score. Este par é anexado à matriz security_result.detection_fields. |
| detalhe | security_result.description | Mapeado diretamente a partir do campo detail. |
| domínio | principal.domain.name | Mapeado diretamente a partir do campo domain. |
| eialarmid | security_result.detection_fields | É criado um par de chave-valor com a chave eialarmid e o valor do campo eialarmid. Este par é anexado à matriz security_result.detection_fields. |
| eiconsolelink | principal.url | Mapeado diretamente a partir do campo eiconsolelink. |
| evento | metadata.description | O nome foi mudado de event para event_desc e mapeado para metadata.description. |
| event_type | metadata.product_event_type | Mapeado diretamente a partir do campo event_type. |
| group_name | principal.group.group_display_name | Mapeado diretamente a partir do campo group_name. |
| hash | principal.file.sha1 | Convertido em minúsculas. Se o valor em letras minúsculas corresponder à regex SHA-1, é mapeado para principal.file.sha1. |
| hash | principal.resource.attribute.labels | É criado um par de chave-valor com a chave hash e o valor do campo hash. Este par é anexado à matriz principal.resource.attribute.labels. |
| hostname | principal.asset.hostname | Mapeado diretamente a partir do campo hostname. |
| hostname | principal.hostname | Mapeado diretamente a partir do campo hostname. |
| entrada | network.direction | Se for verdadeiro, defina como INBOUND. Se for falso, defina como OUTBOUND. |
| ipv4 | target.asset.ip | Mapeado diretamente a partir do campo ipv4 se target_address estiver vazio. |
| ipv4 | target.ip | Mapeado diretamente a partir do campo ipv4 se target_address estiver vazio. |
| json_data | Analisado como JSON para extrair vários campos. | |
| mensagem | Analisado com o grok para extrair a data/hora, o anfitrião e os dados JSON. | |
| need_restart | additional.fields | É criado um par de chave-valor com a chave need_restart e o valor do campo need_restart (convertido em string). Este par é anexado à matriz additional.fields. |
| os_name | principal.platform | Se contiver Window ou window (não é sensível a maiúsculas e minúsculas), defina como WINDOWS. Se contiver Linux ou linux (não é sensível a maiúsculas e minúsculas), defina como LINUX. Se contiver Mac ou mac (não é sensível a maiúsculas e minúsculas), defina como MAC. |
| os_name | principal.platform_version | Mapeado diretamente a partir do campo os_name. |
| process_name | principal.process.file.full_path | Mapeado diretamente a partir do campo process_name. Se estiver vazio, assume o valor de processname. |
| processname | principal.process.file.full_path | Se process_name estiver vazio, é mapeado para process_name. |
| protocolo | network.ip_protocol | Convertido em maiúsculas. Se o valor em maiúsculas corresponder a protocolos conhecidos (TCP, UDP, ICMP, etc.), é mapeado para network.ip_protocol. |
| result | security_result.summary | Mapeado diretamente a partir do campo result. |
| rulename | security_result.rule_name | Mapeado diretamente a partir do campo rulename. |
| scan_id | security_result.detection_fields | É criado um par de chave-valor com a chave scan_id e o valor do campo scan_id. Este par é anexado à matriz security_result.detection_fields. |
| scanner_id | security_result.detection_fields | É criado um par de chave-valor com a chave scanner_id e o valor do campo scanner_id. Este par é anexado à matriz security_result.detection_fields. |
| gravidade | security_result.severity | Se contiver Warn ou warn (não é sensível a maiúsculas e minúsculas), defina como HIGH. Se contiver Info ou info (não é sensível a maiúsculas e minúsculas), defina como LOW. |
| severity_score | security_result.detection_fields | É criado um par de chave-valor com a chave severity_score e o valor do campo severity_score. Este par é anexado à matriz security_result.detection_fields. |
| source_address | principal.asset.ip | Mapeado diretamente a partir do campo source_address. |
| source_address | principal.ip | Mapeado diretamente a partir do campo source_address. |
| source_port | principal.port | Convertido em string e, em seguida, em número inteiro. Mapeado para principal.port. |
| source_uuid | metadata.product_log_id | Mapeado diretamente a partir do campo source_uuid. |
| alvo | O nome foi alterado para target1. |
|
| target_address | target.asset.ip | Mapeado diretamente a partir do campo target_address. |
| target_address | target.ip | Mapeado diretamente a partir do campo target_address. |
| target_port | target.port | Convertido em string e, em seguida, em número inteiro. Mapeado para target.port. |
| threat_handled | security_result.detection_fields | É criado um par de chave-valor com a chave threat_handled e o valor do campo threat_handled (convertido em string). Este par é anexado à matriz security_result.detection_fields. |
| threat_name | security_result.threat_name | Mapeado diretamente a partir do campo threat_name. |
| threat_type | security_result.threat_id | Mapeado diretamente a partir do campo threat_type. |
| tempo | metadata.event_timestamp | Usado para preencher metadata.event_timestamp. |
| nome de utilizador | principal.user.userid | Mapeado diretamente a partir do campo username se user_id e user estiverem vazios. |
| utilizador | principal.user.userid | Mapeado diretamente a partir do campo user se user_id estiver vazio. |
| metadata.event_type | Se source_address e target_address não estiverem vazios, defina como NETWORK_CONNECTION. Caso contrário, se has_user for verdadeiro, defina como USER_UNCATEGORIZED. Caso contrário, se has_principal for verdadeiro, defina como STATUS_UPDATE. Caso contrário, defina como GENERIC_EVENT. |
|
| metadata.log_type | Definido como ESET_AV. |
|
| metadata.product_name | Definido como ESET_AV. |
|
| metadata.vendor_name | Definido como ESET_AV. |
|
| intermediary.hostname | O valor deste campo é retirado do campo host extraído da mensagem de registo. |
|
| principal.user.userid | Se o campo account não estiver vazio, o analisador extrai o ID do utilizador do campo account através de um padrão grok. Caso contrário, verifica se o campo user não está vazio e, se estiver, usa o respetivo valor. Se account e user estiverem vazios, verifica se o campo username não está vazio e, se estiver, usa o respetivo valor. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.