Raccogli i log AV di ESET

Versione parser: 6.0

Supportata in:

Questo documento spiega come importare i log dell'antivirus ESET in Google Security Operations utilizzando l'agente Bindplane.

ESET è una soluzione di sicurezza degli endpoint che genera messaggi syslog per il rilevamento delle minacce, gli eventi firewall, gli avvisi HIPS e le azioni di controllo. Il parser estrae le coppie chiave-valore dal syslog in formato JSON e le mappa al modello UDM (Unified Data Model).

Prima di iniziare

  • Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps

  • Windows Server 2016 o versioni successive o host Linux con systemd

  • Connettività di rete tra l'agente Bindplane e il server ESET PROTECT

  • Se l'esecuzione avviene dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane

  • Accesso con privilegi alla console ESET PROTECT (on-premise o cloud)

Recupera le credenziali Google SecOps per l'agente Bindplane

Per autenticare l'agente Bindplane in Google SecOps, scegli uno dei seguenti metodi:

  • Nuove implementazioni: utilizza l'API Chronicle (opzione 1).
  • Deployment legacy: continua a utilizzare il file di autenticazione dell'acquisizione (opzione 2) fino al ritiro dell'API Ingestion il 20 luglio 2027.
  1. Accedi alla consoleGoogle Cloud e seleziona il progetto Google Cloud collegato alla tua istanza Google SecOps.
  2. Vai a IAM e amministrazione > Service account.
  3. Fai clic su Crea service account.
  4. Fornisci i seguenti dettagli di configurazione:
    • Nome service account: inserisci un nome per l'account (ad esempio bindplane-ingest).
    • Descrizione del service account: inserisci una descrizione (ad esempio, Bindplane agent log ingestion).
  5. Fai clic su Crea e continua.
  6. Nella sezione Concedi a questo account di servizio l'accesso al progetto, fai clic su Seleziona un ruolo e seleziona Chronicle Editor.
  7. Fai clic su Continua, quindi su Fine.
  8. Fai clic sul account di servizio che hai creato, quindi vai alla scheda Chiavi.
  9. Fai clic su Aggiungi chiave > Crea nuova chiave.
  10. Seleziona JSON e fai clic su Crea. Il file della chiave viene scaricato sul tuo computer.
  11. Salva il file della chiave come ingestion-auth.json nella directory del raccoglitore Bindplane (/opt/observiq-otel-collector/ingestion-auth.json su Linux o C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json su Windows) oppure aggiorna creds_file_path in config.yaml in modo che corrisponda al percorso in cui lo salvi.
  12. Vai a IAM e amministrazione > Impostazioni e copia il numero di progetto. Ti servirà per la configurazione dell'esportatore.

Opzione 2: scarica il file di autenticazione dell'acquisizione (legacy)

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'acquisizione.
  4. Salva il file in modo sicuro sul sistema in cui verrà installato l'agente Bindplane.

Recuperare l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa l'agente Bindplane

Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.

Installazione di Windows

  1. Apri Prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sc query observiq-otel-collector
    

    Il servizio dovrebbe essere visualizzato come RUNNING.

Installazione di Linux

  1. Apri un terminale con privilegi root o sudo.
  2. Esegui questo comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sudo systemctl status observiq-otel-collector
    

    Il servizio dovrebbe essere visualizzato come attivo (in esecuzione).

Risorse aggiuntive per l'installazione

Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la guida all'installazione dell'agente Bindplane.

Configura l'agente Bindplane per importare il syslog e inviarlo a Google SecOps

Individua il file di configurazione

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifica il file di configurazione

  • Sostituisci l'intero contenuto di config.yaml con la seguente configurazione:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/eset_av:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: ESET_AV
        raw_log_field: body
    
    service:
      pipelines:
        logs/eset_av_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/eset_av
    

Parametri di configurazione

Sostituisci i seguenti segnaposto:

  • Configurazione del destinatario:

    • listen_address: indirizzo IP e porta su cui ascoltare:
      • 0.0.0.0 per ascoltare su tutte le interfacce (consigliato)
      • La porta 514 è la porta syslog standard (richiede l'accesso root su Linux; utilizza 1514 per l'accesso non root)
  • Configurazione dell'esportatore:

    • creds_file_path: percorso completo del file della chiave JSON del account di servizio (opzione 1):
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: ID cliente copiato dalla console Google SecOps
    • location: sostituisci <LOCATION> con la regione della tua istanza Google SecOps (ad esempio us, europe o asia-southeast1). L'esportatore aggiunge chronicle.googleapis.com come prefisso a questo valore. Per l'elenco completo, consulta Endpoint regionali.
    • project: sostituisci <PROJECT_NUMBER> con il numero di progetto da IAM e amministrazione > Impostazioni.
    • endpoint: mantieni l'impostazione su chronicle.googleapis.com.

Esportatore API di importazione legacy

  • Se utilizzi il file di autenticazione dell'importazione dell'opzione 2, sostituisci il blocco exporters con il seguente. Imposta creds_file_path sul percorso del file di autenticazione dell'importazione e, se la tua istanza si trova al di fuori degli Stati Uniti, sostituisci malachiteingestion-pa.googleapis.com con l'endpoint regionale (ad esempio, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/eset_av:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: ESET_AV
        raw_log_field: body
    

Salva il file di configurazione

  • Dopo la modifica, salva il file:
    • Linux: premi Ctrl+O, poi Enter e infine Ctrl+X.
    • Windows: fai clic su File > Salva.

Riavvia l'agente Bindplane per applicare le modifiche

  • Per riavviare l'agente Bindplane in Linux, esegui questo comando:

    sudo systemctl restart observiq-otel-collector
    
    1. Verifica che il servizio sia in esecuzione:

      sudo systemctl status observiq-otel-collector
      
    2. Controlla i log per verificare la presenza di errori:

      sudo journalctl -u observiq-otel-collector -f
      
  • Per riavviare l'agente Bindplane in Windows, scegli una delle seguenti opzioni:

    • Prompt dei comandi o PowerShell come amministratore:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console Servizi:

      1. Premi Win+R, digita services.msc e premi Invio.
      2. Individua observIQ OpenTelemetry Collector.
      3. Fai clic con il tasto destro del mouse e seleziona Riavvia.
      4. Verifica che il servizio sia in esecuzione:

        sc query observiq-otel-collector
        
      5. Controlla i log per individuare eventuali errori:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Configura syslog su ESET PROTECT on-premise

  1. Accedi alla console web ESET PROTECT.
  2. Fai clic su More (Altro) > Settings (Impostazioni) > Advanced Settings (Impostazioni avanzate) > Syslog Server (Server Syslog).
  3. Attiva l'opzione Abilita Syslog per abilitare Syslog.
  4. Fornisci i seguenti dettagli di configurazione:
    • Host: inserisci l'indirizzo IP dell'agente Bindplane.
    • Porta: inserisci 514.
    • Formato: seleziona Syslog.
    • Trasporto: seleziona UDP.
    • Livello di dettaglio del log di traccia: seleziona Informativo.
    • Export logs to Syslog (Esporta i log in Syslog): imposta questa opzione su Enable (Attiva).
    • Formato dei log esportati: seleziona JSON.
  5. Fai clic su Salva.

Configura syslog su ESET PROTECT Cloud

  1. Accedi alla console ESET PROTECT Cloud.
  2. Fai clic su More (Altro) > Settings (Impostazioni) > Syslog Server (Server Syslog).
  3. Attiva l'opzione Attiva Syslog per attivare Syslog.
  4. Fornisci i seguenti dettagli di configurazione:
    • Formato del payload: seleziona JSON.
    • Format of envelope (Formato della busta): seleziona Syslog.
    • Livello minimo di log: seleziona Informazioni.
    • Tipi di eventi da registrare: seleziona Tutti (o tipi specifici in base alle esigenze).
    • IP di destinazione: inserisci l'indirizzo IP dell'agente Bindplane.
    • Porta: inserisci 514.
  5. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
account principal.administrative_domain Estratto dal campo account utilizzando il pattern grok %{DATA:admin_domain}\\\\%{WORD:user_id}.
account principal.user.userid Estratto dal campo account utilizzando il pattern grok %{DATA:admin_domain}\\\\%{WORD:user_id}.
azione security_result.action Se action è Block (senza distinzione tra maiuscole e minuscole), imposta su BLOCK. Se action è Start (senza distinzione tra maiuscole e minuscole), imposta su ALLOW.
action_taken security_result.action_details Mappato direttamente dal campo action_taken.
computer_severity_score security_result.detection_fields Viene creata una coppia chiave-valore con la chiave computer_severity_score e il valore del campo computer_severity_score. Questa coppia viene aggiunta all'array security_result.detection_fields.
dettaglio security_result.description Mappato direttamente dal campo detail.
dominio principal.domain.name Mappato direttamente dal campo domain.
eialarmid security_result.detection_fields Viene creata una coppia chiave-valore con la chiave eialarmid e il valore del campo eialarmid. Questa coppia viene aggiunta all'array security_result.detection_fields.
eiconsolelink principal.url Mappato direttamente dal campo eiconsolelink.
evento metadata.description Rinominato da event a event_desc e mappato a metadata.description.
event_type metadata.product_event_type Mappato direttamente dal campo event_type.
group_name principal.group.group_display_name Mappato direttamente dal campo group_name.
hash principal.file.sha1 Vengono convertiti in lettere minuscole. Se il valore in minuscolo corrisponde all'espressione regolare SHA-1, viene mappato a principal.file.sha1.
hash principal.resource.attribute.labels Viene creata una coppia chiave-valore con la chiave hash e il valore del campo hash. Questa coppia viene aggiunta all'array principal.resource.attribute.labels.
nome host principal.asset.hostname Mappato direttamente dal campo hostname.
nome host principal.hostname Mappato direttamente dal campo hostname.
in entrata network.direction Se è true, imposta su INBOUND. Se è false, imposta su OUTBOUND.
ipv4 target.asset.ip Mappato direttamente dal campo ipv4 se target_address è vuoto.
ipv4 target.ip Mappato direttamente dal campo ipv4 se target_address è vuoto.
json_data Analizzato come JSON per estrarre vari campi.
messaggio Analizzato utilizzando grok per estrarre timestamp, host e json_data.
need_restart additional.fields Viene creata una coppia chiave-valore con la chiave need_restart e il valore del campo need_restart (convertito in stringa). Questa coppia viene aggiunta all'array additional.fields.
os_name principal.platform Se contiene Window o window (senza distinzione tra maiuscole e minuscole), imposta WINDOWS. Se contiene Linux o linux (senza distinzione tra maiuscole e minuscole), imposta su LINUX. Se contiene Mac o mac (senza distinzione tra maiuscole e minuscole), imposta su MAC.
os_name principal.platform_version Mappato direttamente dal campo os_name.
process_name principal.process.file.full_path Mappato direttamente dal campo process_name. Se è vuoto, viene utilizzato il valore di processname.
processname principal.process.file.full_path Se process_name è vuoto, viene mappato a process_name.
protocollo network.ip_protocol Convertito in maiuscolo. Se il valore in maiuscolo corrisponde a protocolli noti (TCP, UDP, ICMP e così via), viene mappato a network.ip_protocol.
risultato security_result.summary Mappato direttamente dal campo result.
rulename security_result.rule_name Mappato direttamente dal campo rulename.
scan_id security_result.detection_fields Viene creata una coppia chiave-valore con la chiave scan_id e il valore del campo scan_id. Questa coppia viene aggiunta all'array security_result.detection_fields.
scanner_id security_result.detection_fields Viene creata una coppia chiave-valore con la chiave scanner_id e il valore del campo scanner_id. Questa coppia viene aggiunta all'array security_result.detection_fields.
gravità security_result.severity Se contiene Warn o warn (senza distinzione tra maiuscole e minuscole), imposta HIGH. Se contiene Info o info (senza distinzione tra maiuscole e minuscole), imposta su LOW.
severity_score security_result.detection_fields Viene creata una coppia chiave-valore con la chiave severity_score e il valore del campo severity_score. Questa coppia viene aggiunta all'array security_result.detection_fields.
source_address principal.asset.ip Mappato direttamente dal campo source_address.
source_address principal.ip Mappato direttamente dal campo source_address.
source_port principal.port Convertito in stringa e poi in numero intero. Mappato a principal.port.
source_uuid metadata.product_log_id Mappato direttamente dal campo source_uuid.
destinazione Rinominato in target1.
target_address target.asset.ip Mappato direttamente dal campo target_address.
target_address target.ip Mappato direttamente dal campo target_address.
target_port target.port Convertito in stringa e poi in numero intero. Mappato a target.port.
threat_handled security_result.detection_fields Viene creata una coppia chiave-valore con la chiave threat_handled e il valore del campo threat_handled (convertito in stringa). Questa coppia viene aggiunta all'array security_result.detection_fields.
threat_name security_result.threat_name Mappato direttamente dal campo threat_name.
threat_type security_result.threat_id Mappato direttamente dal campo threat_type.
tempo metadata.event_timestamp Utilizzato per compilare metadata.event_timestamp.
nome utente principal.user.userid Mappato direttamente dal campo username se user_id e user sono vuoti.
utente principal.user.userid Mappato direttamente dal campo user se user_id è vuoto.
metadata.event_type Se source_address e target_address non sono vuoti, imposta su NETWORK_CONNECTION. Altrimenti, se has_user è true, imposta su USER_UNCATEGORIZED. Altrimenti, se has_principal è true, imposta STATUS_UPDATE. In caso contrario, imposta su GENERIC_EVENT.
metadata.log_type Da impostare su ESET_AV.
metadata.product_name Da impostare su ESET_AV.
metadata.vendor_name Da impostare su ESET_AV.
intermediary.hostname Il valore di questo campo viene preso dal campo host estratto dal messaggio di log.
principal.user.userid Se il campo account non è vuoto, il parser estrae l'ID utente dal campo account utilizzando un pattern grok. In caso contrario, verifica se il campo user non è vuoto e, in questo caso, ne prende il valore. Se sia account che user sono vuoti, controlla se il campo username non è vuoto e, in questo caso, ne prende il valore.
timestamp event.idm.read_only_udm.metadata.collected_timestamp Mappato dal log delle modifiche
event_id event.idm.read_only_udm.metadata.product_log_id Mappato dal log delle modifiche
process_pid event.idm.read_only_udm.principal.process.pid Mappato dal log delle modifiche
desc event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
occurred event.idm.read_only_udm.metadata.event_timestamp Mappato dal log delle modifiche
threatHandled event.idm.read_only_udm.security_result.detection_fields Mappato dal log delle modifiche
actionTaken event.idm.read_only_udm.security_result.action_details Mappato dal log delle modifiche
threatName event.idm.read_only_udm.security_result.threat_name Mappato dal log delle modifiche
threatType event.idm.read_only_udm.security_result.summary Mappato dal log delle modifiche
target target.resource.attribute.labels Mappato dal log delle modifiche
object_uri target.url Mappato dal log delle modifiche
severity security_result.severity_details Mappato dal log delle modifiche
threat_flags security_result.detection_fields Mappato dal log delle modifiche
category security_result.category_details Mappato dal log delle modifiche
object_type" and "engine_version principal.resource.attribute.labels Mappato dal log delle modifiche
circumstances security_result.description Mappato dal log delle modifiche
security_result_action BLOCK Mappato dal log delle modifiche
security_result_action ALLOW Mappato dal log delle modifiche
scan_id", "scanner_id", and "threat_handled security_result.detection_fields Mappato dal log delle modifiche
group_name principal.group_display_name Mappato dal log delle modifiche

Log delle modifiche

Visualizza il log delle modifiche per questo parser

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.