Recolha registos do ESET EDR
Este documento explica como carregar registos do ESET para o Google Security Operations através do Bindplane. O código do analisador Logstash tenta primeiro extrair campos dos registos do ESET EDR no formato SYSLOG ou JSON através de uma série de padrões grok. Consoante
os campos extraídos e o respetivo formato, processa ainda mais os dados através de filtros de
chave/valor (kv) ou da análise JSON para estruturar as informações numa
representação do modelo de dados unificado (UDM).
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_EDR' 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 |
|---|---|---|
| ação | event1.idm.read_only_udm.security_result.action | Condicionalmente definido como BLOCK se o valor for Blocked. |
| actionTaken | event2.idm.read_only_udm.metadata.event_type | Condicionalmente definido como SCAN_PROCESS se o valor for Cleaned by deleting. |
| actionTaken | event1.idm.read_only_udm.security_result.action_details | Mapeado diretamente a partir do campo actionTaken. |
| actionTaken | event2.idm.read_only_udm.security_result.action_details | Mapeado diretamente a partir do campo actionTaken. |
| accountName | event2.idm.read_only_udm.additional.fields.value.string_value | Mapeado diretamente a partir do campo accountName. A tecla está definida como accountName. |
| app | event3.idm.read_only_udm.principal.application | Mapeado diretamente a partir do campo app. |
| circunstâncias | event2.idm.read_only_udm.additional.fields.value.string_value | Mapeado diretamente a partir do campo circumstances. A tecla está definida como circumstances. |
| Computer_name | event3.idm.read_only_udm.principal.hostname | Mapeado diretamente a partir do campo Computer_name. |
| Computer_name | event3.idm.read_only_udm.principal.asset.hostname | Mapeado diretamente a partir do campo Computer_name. |
| date_time | ||
| Detection_name | event3.idm.read_only_udm.security_result.threat_name | Mapeado diretamente a partir do campo Detection_name. |
| Detectiontype | event3.idm.read_only_udm.security_result.category_details | Mapeado diretamente a partir do campo Detectiontype. |
| dst | event2.idm.read_only_udm.target.ip | Mapeado diretamente a partir do campo dst. |
| dst | event2.idm.read_only_udm.target.asset.ip | Mapeado diretamente a partir do campo dst. |
| dstPort | event2.idm.read_only_udm.target.port | Mapeado diretamente a partir do campo dstPort após a conversão para um número inteiro. |
| evento | event1.idm.read_only_udm.metadata.description | Mapeado diretamente a partir do campo event. |
| event_type | event1.idm.read_only_udm.metadata.product_event_type | Mapeado diretamente a partir do campo event_type. |
| event_type | event1.idm.read_only_udm.metadata.event_type | Condicionalmente definido como NETWORK_CONNECTION se o valor for FirewallAggregated_Event. |
| hash | event1.idm.read_only_udm.target.file.sha1 | Mapeado diretamente a partir do campo hash após a conversão para letras minúsculas. |
| hostname | event1.idm.read_only_udm.target.hostname | Mapeado diretamente a partir do campo hostname. |
| hostname | event1.idm.read_only_udm.target.asset.hostname | Mapeado diretamente a partir do campo hostname. |
| hostname | event.alert.devices.hostname | Mapeado diretamente a partir do campo hostname. |
| ipv4 | event1.idm.read_only_udm.principal.ip | Mapeado diretamente a partir do campo ipv4. Este campo é primeiro armazenado num campo temporário udm_ip. |
| ipv4 | event1.idm.read_only_udm.principal.asset.ip | Mapeado diretamente a partir do campo ipv4. Este campo é primeiro armazenado num campo temporário udm_ip. |
| ipv4 | event.alert.devices.ip_addresses | Mapeado diretamente a partir do campo ipv4 após a conversão num endereço IP. |
| Logged_user | event3.idm.read_only_udm.principal.user.userid | Mapeado diretamente a partir do campo Logged_user. |
| objectUri | event1.idm.read_only_udm.target.file.full_path | Mapeado diretamente a partir do campo objectUri. |
| objectUri | event2.idm.read_only_udm.target.file.full_path | Mapeado diretamente a partir do campo objectUri. |
| processName | event2.idm.read_only_udm.target.process.file.full_path | Mapeado diretamente a partir do campo processName. |
| processName | event1.idm.read_only_udm.principal.process.file.full_path | Mapeado diretamente a partir do campo processName. |
| process_id | event3.idm.read_only_udm.principal.process.pid | Mapeado diretamente a partir do campo process_id. |
| process_id | event2.idm.read_only_udm.target.process.pid | Mapeado diretamente a partir do campo process_id. |
| protocolo | event1.idm.read_only_udm.network.ip_protocol | Mapeado diretamente a partir do campo protocol. |
| proto | event2.idm.read_only_udm.network.ip_protocol | Mapeado diretamente a partir do campo proto. |
| result | event2.idm.read_only_udm.security_result.action | Condicionalmente definido como ALLOW se o valor for Success. |
| Teste | event3.idm.read_only_udm.security_result.description | Mapeado diretamente a partir do campo Scanner. |
| gravidade | event1.idm.read_only_udm.security_result.severity | Mapeado a partir do campo severity com base nestas condições: - INFO, Informational, DEBUG, info: INFORMATIONAL - ERROR, error: ERROR - WARNING, Warning: LOW |
| source_address | event1.idm.read_only_udm.principal.ip | Mapeado diretamente a partir do campo source_address. |
| source_address | event1.idm.read_only_udm.principal.asset.ip | Mapeado diretamente a partir do campo source_address. |
| source_port | event1.idm.read_only_udm.principal.port | Mapeado diretamente a partir do campo source_port após a conversão para um número inteiro. |
| source_uuid | event1.idm.read_only_udm.metadata.product_log_id | Mapeado diretamente a partir do campo source_uuid. |
| src | event2.idm.read_only_udm.principal.ip | Mapeado diretamente a partir do campo src. |
| src | event2.idm.read_only_udm.principal.asset.ip | Mapeado diretamente a partir do campo src. |
| srcPort | event2.idm.read_only_udm.principal.port | Mapeado diretamente a partir do campo srcPort após a conversão para um número inteiro. |
| target_address | event1.idm.read_only_udm.target.ip | Mapeado diretamente a partir do campo target_address. |
| target_address | event1.idm.read_only_udm.target.asset.ip | Mapeado diretamente a partir do campo target_address. |
| target_port | event1.idm.read_only_udm.target.port | Mapeado diretamente a partir do campo target_port após a conversão para um número inteiro. |
| threatName | event2.idm.read_only_udm.security_result.threat_name | Mapeado diretamente a partir do campo threatName. |
| threatName | event.alert.alert_short_name | Mapeado diretamente a partir do campo threatName. |
| Time_of_occurrence | event3.idm.read_only_udm.additional.fields.value.string_value | Mapeado diretamente a partir do campo Time_of_occurrence. A tecla está definida como Time_of_occurrence. |
| escrever | event2.idm.read_only_udm.security_result.category_details | Mapeado diretamente a partir do campo type. |
| escrever | event2.idm.read_only_udm.metadata.event_type | Condicionalmente definido como GENERIC_EVENT se não for encontrada correspondência com nenhum outro tipo de evento específico. |
| user_id | event2.idm.read_only_udm.principal.user.userid | Mapeado diretamente a partir do campo user_id. |
| event1.idm.read_only_udm.metadata.event_type | Condicionalmente definido como FILE_UNCATEGORIZED se o valor de event_type for Threat_Event. |
|
| event1.idm.read_only_udm.metadata.log_type | Definido como ESET_EDR. |
|
| event1.idm.read_only_udm.metadata.product_name | Condicionalmente definido como ESET se o valor de event_type for FirewallAggregated_Event. |
|
| event2.idm.read_only_udm.metadata.log_type | Definido como ESET_EDR. |
|
| event2.idm.read_only_udm.metadata.product_name | Definido como EDR. |
|
| event2.idm.read_only_udm.metadata.vendor_name | Definido como ESET. |
|
| event3.idm.read_only_udm.metadata.event_type | Definido condicionalmente com base nestas regras: - USER_UNCATEGORIZED se principal_user_present for true. - STATUS_UPDATE se principal_machine_id_present for true. - GENERIC_EVENT caso contrário. |
|
| event3.idm.read_only_udm.metadata.log_type | Definido como ESET_EDR. |
|
| event3.idm.read_only_udm.metadata.product_name | Definido como EDR. |
|
| event3.idm.read_only_udm.metadata.vendor_name | Definido como ESET. |
|
| event.alert.is_significant | Definido como true e, em seguida, convertido num valor booleano. |
|
| event3.idm.read_only_udm.security_result.description | Condicionalmente definido para o valor de kv_data se Scanner estiver vazio. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.