Recolha registos do ESET AV

Compatível com:

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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. 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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. 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

  1. 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, vi ou Bloco de notas).
  2. Edite o ficheiro config.yaml da 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_labels
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID de cliente real.

  5. Atualize /path/to/ingestion-authentication-file.json para 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-agent
    
  • Para 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

  1. Inicie sessão na consola Web do ESET Protect.
  2. Aceda a Mais > Definições > Definições avançadas > Servidor Syslog.
  3. Selecione o botão junto a Ativar Syslog.
  4. 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 (514 para 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
  5. Clique em Guardar.

Configure o Syslog para o ESET PROTECT Cloud

  1. Inicie sessão na consola Web do ESET Protect.
  2. Aceda a Mais > Definições > Servidor Syslog.
  3. Selecione o botão junto a Ativar Syslog.
  4. 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 (514 para UDP)
  5. 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.