Raccogliere i log ESET AV
Questo documento spiega come importare i log ESET AV in Google Security Operations utilizzando Bindplane. Il codice del parser Logstash estrae i dati degli eventi di sicurezza dai log ESET_AV formattati in SYSLOG o JSON. Innanzitutto normalizza il messaggio non elaborato, poi lo analizza in base al formato identificato, mappando i campi estratti allo schema Unified Data Model (UDM) corrispondente per una rappresentazione e un'analisi coerenti.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps
- Windows 2016 o versioni successive oppure un host Linux con
systemd
- Se l'esecuzione avviene tramite un proxy, le porte del firewall sono aperte
- Accesso privilegiato a ESET Protect
Recuperare il file di autenticazione importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Recuperare l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane
Installazione di Windows
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installazione di Linux
- Apri un terminale con privilegi di root o sudo.
Esegui questo comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Risorse aggiuntive per l'installazione
Per ulteriori opzioni di installazione, consulta la guida all'installazione.
Configura l'agente Bindplane per importare Syslog e inviarli a Google SecOps
- Accedi al file di configurazione:
- Individua il file
config.yaml
. In genere, si trova nella directory/etc/bindplane-agent/
su Linux o nella directory di installazione su Windows. - Apri il file utilizzando un editor di testo (ad esempio
nano
,vi
o Blocco note).
- Individua il file
Modifica il file
config.yaml
come segue: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
Sostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.
Sostituisci
<customer_id>
con l'ID cliente effettivo.Aggiorna
/path/to/ingestion-authentication-file.json
al percorso in cui è stato salvato il file di autenticazione nella sezione Recupera il file di autenticazione per l'importazione di Google SecOps.
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart bindplane-agent
Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configura Syslog per ESET PROTECT on-premise
- Accedi alla console web ESET Protect.
- Vai a Altro > Impostazioni > Impostazioni avanzate > Server Syslog.
- Seleziona il pulsante di attivazione/disattivazione accanto ad Attiva Syslog.
- Fornisci i seguenti dettagli di configurazione:
- Host: inserisci l'indirizzo IP dell'agente Bindplane
- Porta: inserisci il numero di porta dell'agente Bindplane (
514
per UDP) - Formato: seleziona Syslog.
- Trasporto: seleziona UDP.
- Livello di dettaglio del log di traccia: seleziona Informativo.
- Attiva/disattiva Esporta log in Syslog: seleziona Attiva.
- Formato dei log esportati: seleziona JSON
- Fai clic su Salva.
Configura Syslog per ESET PROTECT Cloud
- Accedi alla console web ESET Protect.
- Vai a Altro > Impostazioni > Server Syslog.
- Seleziona il pulsante di attivazione/disattivazione accanto ad Attiva Syslog.
- Fornisci i seguenti dettagli di configurazione:
- Formato del payload: seleziona JSON
- Formato della busta: seleziona Syslog
- Livello di log minimo: seleziona Informativo
- Tipi di eventi da registrare: seleziona Tutti i tipi di eventi.
- IP di destinazione: inserisci l'indirizzo IP dell'agente Bindplane
- Porta: inserisci il numero di porta dell'agente Bindplane (
514
per UDP)
- Fai clic su Salva.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
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), impostalo su BLOCK . Se action è Start (senza distinzione tra maiuscole e minuscole), impostalo 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 . |
event | metadata.description | Rinominato da event a event_desc e mappato su 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 | Convertito in minuscolo. Se il valore in minuscolo corrisponde all'espressione regolare SHA-1, mappata 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 INBOUND . Se è false, imposta 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 su 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, assume 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 . |
result | 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 su 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 . |
target | 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 NETWORK_CONNECTION . Altrimenti, se has_user è true, imposta USER_UNCATEGORIZED . Altrimenti, se has_principal è true, imposta STATUS_UPDATE . In caso contrario, imposta il valore su GENERIC_EVENT . |
|
metadata.log_type | Imposta su ESET_AV . |
|
metadata.product_name | Imposta su ESET_AV . |
|
metadata.vendor_name | Imposta su ESET_AV . |
|
intermediary.hostname | Il valore di questo campo viene estratto dal campo host del messaggio di log. |
|
principal.user.userid | Se il campo account non è vuoto, il parser estrae lo User-ID dal campo account utilizzando un pattern grok. In caso contrario, controlla se il campo user non è vuoto e, in caso affermativo, ne prende il valore. Se sia account che user sono vuoti, controlla se il campo username non è vuoto e, in caso affermativo, ne prende il valore. |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.