Raccogli i log di Trellix Email Security (in precedenza FireEye eMPS)
Versione parser: 16.0
Questo documento spiega come importare i log di Trellix Email Security (precedentemente noto come FireEye eMPS) in Google Security Operations utilizzando Bindplane.
Trellix Email Security è un'appliance di sicurezza email che protegge le organizzazioni da minacce email avanzate, tra cui spear phishing, malware e attacchi mirati, analizzando in tempo reale i contenuti e gli allegati delle email.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps
- Windows Server 2016 o versioni successive o host Linux con systemd
- Connettività di rete tra l'agente Bindplane e l'appliance FireEye eMPS
- Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
- Accesso privilegiato alla CLI dell'appliance FireEye eMPS (ruolo Amministratore o Operatore)
- Appliance FireEye eMPS con funzionalità di notifica syslog
Recuperare il file di autenticazione dell'importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agente di raccolta.
- Fai clic su Scarica per scaricare il file di autenticazione dell'acquisizione.
- Salva il file in modo sicuro sul sistema in cui verrà installato l'agente 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
Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.
Installazione di Windows
- Apri 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" /quietAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sc query observiq-otel-collector
Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.
Installazione di Linux
- Apri un terminale con privilegi root o sudo.
Esegui questo comando:
sudo sh -c "$(curl -fsSlL [https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh](https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh))" install_unix.shAttendi il completamento dell'installazione.
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 syslog e inviarli a Google SecOps
Individua il file di configurazione
- Linux:
/opt/observiq-otel-collector/config.yaml - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
Modifica il file di configurazione
Sostituisci l'intero contenuto di
config.yamlcon la seguente configurazione:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/fireeye_emps: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: FIREEYE_EMPS raw_log_field: body ingestion_labels: env: production service: pipelines: logs/fireeye_to_chronicle: receivers: - udplog exporters: - chronicle/fireeye_emps
Parametri di configurazione
Sostituisci i seguenti segnaposto:
Configurazione del destinatario:
- Il ricevitore è configurato per syslog UDP sulla porta 514.
- Per utilizzare una porta non privilegiata su Linux, modifica
514in1514o un valore superiore. - Per utilizzare TCP anziché UDP, sostituisci
udplogcontcplog.
Configurazione dell'esportatore:
creds_file_path: il percorso completo del file di autenticazione dell'acquisizione.YOUR_CUSTOMER_ID: Sostituisci con l'ID cliente effettivo.endpoint: URL dell'endpoint regionale (ad es.malachiteingestion-pa.googleapis.com).log_type: deve essere esattamenteFIREEYE_EMPS.ingestion_labels: etichette facoltative in formato YAML.
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux:
Esegui questo comando:
sudo systemctl restart observiq-otel-collectorVerifica che il servizio sia in esecuzione:
sudo systemctl status observiq-otel-collectorControlla i log per individuare eventuali 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 dei servizi:
- Premi
Win+R, digitaservices.msce premi Invio. - Individua observIQ OpenTelemetry Collector.
- Fai clic con il tasto destro del mouse e seleziona Riavvia.
- Premi
Verifica che il servizio sia in esecuzione:
sc query observiq-otel-collectorControlla i log per individuare eventuali errori:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configurare l'inoltro di Syslog di FireEye eMPS
Accedi alla CLI eMPS di FireEye
- Connettiti all'appliance FireEye eMPS tramite SSH o console.
- Accedi e attiva la modalità di abilitazione:
hostname> enable - Attiva la modalità di configurazione:
hostname# configure terminal
Configurare il server syslog
- Aggiungi l'agente Bindplane come sink di trap syslog:
hostname(config)# fenotify rsyslog trap-sink chronicle address <BINDPLANE_IP_ADDRESS> - Imposta il formato syslog su CEF:
hostname(config)# fenotify rsyslog trap-sink chronicle prefer message format cef - Imposta la struttura syslog su local4 (consigliato):
hostname(config)# fenotify rsyslog default facility local4 - Imposta la modalità di invio:
hostname(config)# fenotify rsyslog trap-sink chronicle message delivery per-event - Imposta la gravità dell'avviso:
hostname(config)# fenotify rsyslog trap-sink chronicle prefer message send-as alert - Imposta il protocollo:
hostname(config)# fenotify rsyslog trap-sink chronicle protocol udp - Imposta la porta:
hostname(config)# fenotify rsyslog trap-sink chronicle port 514
Attivare le notifiche syslog
- Attiva le notifiche rsyslog a livello globale:
hostname(config)# fenotify rsyslog enable - Attiva le notifiche globali:
hostname(config)# fenotify enable Attivare tipi di avvisi specifici:
hostname(config)# fenotify rsyslog alert malware-object enable hostname(config)# fenotify rsyslog alert malware-callback enable hostname(config)# fenotify rsyslog alert infection-match enable hostname(config)# fenotify rsyslog alert domain-match enableVerifica la configurazione:
hostname(config)# show fenotify alertsSalva ed esci:
hostname(config)# write memory hostname(config)# exit hostname# exit
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
| about.asset.asset_id | Concatenato da device_vendor, device_product e deviceExternalId | |
| about | about | Unito da about_token |
| about.file.full_path | about.file.full_path | Valore copiato direttamente |
| about.file.sha256 | about.file.sha256 | Valore copiato direttamente |
| about.file.size | about.file.size | Valore copiato direttamente |
| about.hostname | about.hostname | Valore copiato direttamente |
| about.ip | about.ip | Unito dall'array ips |
| about.mac | about.mac | Valore di dvcmac se l'indirizzo MAC è valido, altrimenti da mac_address |
| about.nat_ip | about.nat_ip | Valore copiato direttamente da deviceTranslatedAddress |
| about.process.command_line | about.process.command_line | Valore di Subject se non è vuoto, altrimenti Emne, altrimenti Path |
| about.process.file.full_path | about.process.file.full_path | Valore copiato direttamente |
| about.process.pid | about.process.pid | Valore copiato direttamente |
| about.resource.attribute.permissions | about.resource.attribute.permissions | Valore copiato direttamente dalle autorizzazioni |
| aggiuntivo | aggiuntivo | Rinominato direttamente |
| additional_cfp1 | additional.fields | Uniti in campi aggiuntivi |
| additional_cfp2 | additional.fields | Uniti in campi aggiuntivi |
| additional_cfp3 | additional.fields | Uniti in campi aggiuntivi |
| additional_cfp4 | additional.fields | Uniti in campi aggiuntivi |
| additional_cn1 | additional.fields | Uniti in campi aggiuntivi |
| additional_cn2 | additional.fields | Uniti in campi aggiuntivi |
| additional_cn3 | additional.fields | Uniti in campi aggiuntivi |
| additional_cs1 | additional.fields | Uniti in campi aggiuntivi |
| additional_cs2 | additional.fields | Uniti in campi aggiuntivi |
| additional_cs3 | additional.fields | Uniti in campi aggiuntivi |
| additional_cs4 | additional.fields | Uniti in campi aggiuntivi |
| additional_cs5 | additional.fields | Uniti in campi aggiuntivi |
| additional_cs6 | additional.fields | Uniti in campi aggiuntivi |
| additional_cs7 | additional.fields | Uniti in campi aggiuntivi |
| additional_devicePayloadId | additional.fields | Uniti in campi aggiuntivi |
| additional_eventId | additional.fields | Uniti in campi aggiuntivi |
| additional_fname | additional.fields | Uniti in campi aggiuntivi |
| additional_flexString1 | additional.fields | Uniti in campi aggiuntivi |
| additional_flexString2 | additional.fields | Uniti in campi aggiuntivi |
| app_protocol_output | network.application_protocol | Valore copiato direttamente |
| cs1Label, cs1 | additional.fields | Chiave da cs1Label, valore da cs1 |
| cs2Label, cs2 | additional.fields | Chiave da cs2Label, valore da cs2 |
| cs3Label, cs3 | additional.fields | Chiave da cs3Label, valore da cs3 |
| cs4Label, cs4 | additional.fields | Chiave da cs4Label, valore da cs4 |
| cs5Label, cs5 | additional.fields | Chiave da cs5Label, valore da cs5 |
| cs6Label, cs6 | additional.fields | Chiave da cs6Label, valore da cs6 |
| cs7Label, cs7 | additional.fields | Chiave da cs7Label, valore da cs7 |
| cfp1Label, cfp1 | additional.fields | Chiave da cfp1Label, valore da cfp1 |
| cfp2Label, cfp2 | additional.fields | Chiave da cfp2Label, valore da cfp2 |
| cfp3Label, cfp3 | additional.fields | Chiave da cfp3Label, valore da cfp3 |
| cfp4Label, cfp4 | additional.fields | Chiave da cfp4Label, valore da cfp4 |
| cn1Label, cn1 | additional.fields | Chiave da cn1Label, valore da cn1 |
| cn2Label, cn2 | additional.fields | Chiave da cn2Label, valore da cn2 |
| cn3Label, cn3 | additional.fields | Chiave da cn3Label, valore da cn3 |
| customer_label | security_result.detection_fields | Unito ai campi di rilevamento |
| destination_translated_address | target.nat_ip | Valore copiato direttamente |
| device_name_not_present, Enhetsnavn | principal.hostname | Valore di Device_name se non è vuoto, altrimenti Enhetsnavn |
| deviceExternalId | about.asset.asset_id | Parte della concatenazione |
| devicePayloadId | additional.fields | Chiave come devicePayloadId, valore copiato |
| deviceTranslatedAddress | about.nat_ip | Valore copiato direttamente |
| device_vendor | about.asset.asset_id | Parte della concatenazione |
| device_product | about.asset.asset_id | Parte della concatenazione |
| device_version | metadata.product_version | Valore copiato direttamente |
| device_event_class_id, event_name | metadata.product_event_type | Concatenato come [%{device_event_class_id}] - %{event_name} se sono presenti entrambi, altrimenti device_event_class_id o event_name |
| device_process_name | about.process.command_line | Valore copiato direttamente |
| device_vendor | metadata.vendor_name | Valore copiato direttamente |
| device_product | metadata.product_name | Valore copiato direttamente |
| dhost | target.hostname | Valore copiato direttamente |
| dmac | target.mac | Valore copiato direttamente |
| dntdom | target.administrative_domain | Valore copiato direttamente |
| dpid | target.process.pid | Valore copiato direttamente |
| dproc | target.process.command_line | Valore copiato direttamente |
| dst | target.asset.ip | Valore copiato direttamente |
| dst_ip | target.ip | Valore copiato direttamente |
| duid | target.user.userid | Valore di temp_duid dopo l'estrazione grok |
| duser | target.user.user_display_name | Valore copiato direttamente |
| dvchost | about.hostname | Valore copiato direttamente |
| deviceNtDomain | about.administrative_domain | Valore copiato direttamente |
| dvcmac | about.mac | Valore di dvcmac se l'indirizzo MAC è valido |
| dvc_mac | about.mac | Valore di dvc_mac se l'indirizzo MAC è valido |
| eventId | additional.fields | Chiave come eventId, valore copiato |
| eventid | additional.fields | Chiave come eventId, valore da eventid |
| externalId | metadata.product_log_id | Valore copiato direttamente |
| externalID_value | metadata.product_log_id | Valore copiato direttamente |
| file_full_path | metadata.event_type | Imposta su PROCESS_UNCATEGORIZED se file_full_path non è vuoto |
| fileHash | about.file.sha256 | Valore copiato direttamente se non è un hash, altrimenti about.file.full_path |
| filePath | about.file.full_path | Valore copiato direttamente |
| fileType | about.file.mime_type | Valore copiato direttamente |
| flexString1Label, flexString1 | additional.fields | Chiave da flexString1Label, valore da flexString1 |
| flexString2Label, flexString2 | additional.fields | Chiave da flexString2Label, valore da flexString2 |
| fname | additional.fields | Chiave come nome file, valore copiato |
| Generato | metadata.event_timestamp | Convertito utilizzando la corrispondenza della data aaaa-MM-ggTHH:mm:ss |
| Generert | metadata.event_timestamp | Convertito utilizzando la corrispondenza della data aaaa-MM-ggTHH:mm:ss |
| Group_name | principal.group.group_display_name | Valore copiato direttamente |
| Gruppenavn | principal.group.group_display_name | Valore di Gruppenavn se Group_name è vuoto |
| infection_channel_label | security_result.detection_fields | Unito ai campi di rilevamento |
| in | network.received_bytes | Convertito in uinteger se non è 0 |
| IPv6_Address | target.ip | Unito se non è "-" |
| ipv6 | target.ip | Unito se non è "-" |
| mac | principal.mac | Valore copiato direttamente |
| mac_address | target.mac | Valore copiato direttamente |
| mac_address | about.mac | Valore ottenuto da mac_address |
| metadati | metadati | Rinominato direttamente |
| msg | metadata.description | Valore copiato direttamente |
| msg_data_2 | security_result.description | Valore copiato direttamente |
| mottatt_not_present, Mottatt | metadata.collected_timestamp | Convertito utilizzando la corrispondenza della data aaaa-MM-ggTHH:mm:ss |
| rete | rete | Rinominato direttamente |
| oldFilePath | src.file.full_path | Valore copiato direttamente |
| oldFileSize | src.file.size | Convertito in uinteger |
| old_permissions | src.resource.attribute.permissions | Valore copiato direttamente |
| operasjon_label | security_result.detection_fields | Unito ai campi di rilevamento |
| operation_label | security_result.detection_fields | Unito ai campi di rilevamento |
| troppo complessi per essere capiti? | network.sent_bytes | Convertito in uinteger se non è 0 |
| permission_label | security_result.detection_fields | Unito ai campi di rilevamento |
| autorizzazioni | about.resource.attribute.permissions | Valore copiato direttamente |
| entità | entità | Rinominato direttamente |
| principal_ip | principal.ip | Valore copiato direttamente |
| principal_role | principal.user.attribute.roles | Unita ai ruoli |
| protocol_number_src | network.ip_protocol | Valore copiato direttamente |
| Ricevuto | metadata.collected_timestamp | Convertito utilizzando la corrispondenza della data aaaa-MM-ggTHH:mm:ss |
| motivo | security_result.summary | Valore copiato direttamente |
| richiesta | target.url | Valore copiato direttamente |
| requestClientApplication | network.http.user_agent | Valore copiato direttamente |
| requestMethod | network.http.method | Valore copiato direttamente |
| resource_Type_label | target.resource.attribute.labels | Unita alle etichette |
| rt | @timestamp | Convertito utilizzando vari formati di data e aggiustamenti del fuso orario |
| security_result | security_result | Unito direttamente |
| security_result_token | security_result | Unito direttamente |
| gravità | security_result.severity | Imposta su LOW se in [0,1,2,3,LOW]; MEDIUM se in [4,5,6,MEDIUM,SUBSTANTIAL,INFO]; HIGH se in [7,8,HIGH,SEVERE]; CRITICAL se in [9,10,VERY-HIGH,CRITICAL] |
| shost | principal.hostname | Valore copiato direttamente se non è un IP, altrimenti principal.ip |
| shost | principal.ip | Valore copiato direttamente se IP |
| shost_present | principal.machine_id_present | Impostato su true |
| smac | principal.mac | Valore copiato subito dopo la formattazione |
| sntdom | principal.administrative_domain | Valore copiato direttamente |
| sourceDnsDomain | target.asset.hostname, target.hostname | Valore da sourceDnsDomain tramite grok a tar_host |
| sourceServiceName | principal.application | Valore copiato direttamente |
| sourceTranslatedAddress | principal.nat_ip | Valore copiato direttamente |
| sourceTranslatedPort | principal.nat_port | Convertito in numero intero |
| spid | principal.process.pid | Valore copiato direttamente |
| sproc | principal.process.command_line | Valore copiato direttamente |
| spt | principal.port | Convertito in numero intero se non è 0 o {srcPort} |
| src | principal.asset.ip | Valore copiato direttamente |
| src_ip | principal.ip | Valore copiato direttamente |
| srcaddr | principal.ip | Valore copiato direttamente |
| spyware_Grayware_Type_label | security_result.detection_fields | Unito ai campi di rilevamento |
| suser | principal.user.user_display_name | Valore copiato direttamente se non inizia con { |
| suid | principal.user.userid | Valore copiato direttamente |
| destinazione | destinazione | Rinominato direttamente |
| target_ip | target.ip | Valore copiato direttamente |
| target_role | target.user.attribute.roles | Unita ai ruoli |
| temp_data | Utilizzato nei pattern Grok | |
| temp_dhost | target.hostname | Valore copiato direttamente |
| temp_duser | target.user.user_display_name | Valore copiato direttamente |
| temp_duid | target.user.userid | Valore di temp_duid dopo l'analisi |
| threat_probability_label | security_result.detection_fields | Unito ai campi di rilevamento |
| tillatelse_label | security_result.detection_fields | Unito ai campi di rilevamento |
| type_label | security_result.detection_fields | Unito ai campi di rilevamento |
| Utente | target.user.userid | Valore copiato direttamente |
| Bruker | target.user.userid | Valore di Bruker se l'utente è vuoto |
| nome utente | principal.user.userid | Valore copiato direttamente |
| Virus_Malware_Name | security_result.threat_name | Valore di Virus_Malware_Name se Spyware è vuoto |
| Spyware | security_result.threat_name | Valore copiato direttamente |
| Unknown_Threat | security_result.threat_name | Valore di Unknown_Threat se Virus_Malware_Name è vuoto |
| _hash | about.file.sha256 | Valore copiato direttamente |
| _message | security_result.description | Valore copiato direttamente se non è valido |
| _metadata.customer | security_result.detection_fields | Chiave come cliente, valore copiato |
| _metadata.proxy.address | principal.hostname, principal.asset.hostname | Valore copiato direttamente |
| _metadata.source.address | principal.hostname, principal.asset.hostname | Valore copiato direttamente |
| _metadata.source.port | principal.port | Convertito in numero intero |
| _metadata.source.type | security_result.detection_fields | Chiave come tipo, valore copiato |
| _metadata.timestamp.producer_process | metadata.event_timestamp | Convertito utilizzando la corrispondenza della data aaaa-MM-ggTHH:mm:ss.SSSZ |
| act | security_result.action_details | Valore copiato direttamente |
| act | security_result.action | Imposta su ALLOW se act in [accept, notified] o outcome REDIRECTED_USER_MAY_PROCEED o categoryOutcome Success o cs2 Allow; BLOCK se act deny/blocked o outcome BLOCKED o categoryOutcome Failure o cs2 Denied; FAIL se outcome Failure |
| azione | security_result.action | Valore copiato direttamente |
| app | app_protocol_src | Valore copiato direttamente |
| app_protocol_src | network.application_protocol | Valore di app_protocol_src dopo la conversione in maiuscolo e la mappatura |
| categoryOutcome | security_result.action | Parte della condizione per l'azione |
| cs2 | security_result.action | Parte della condizione per l'azione |
| cs5 | additional.fields | Chiave da cs5Label, valore da cs5 |
| cs7 | additional.fields | Chiave da cs7Label, valore da cs7 |
| destinationTranslatedAddress | target.nat_ip | Valore copiato direttamente |
| destinationTranslatedPort | target.nat_port | Convertito in numero intero |
| deviceDirection | network.direction | Imposta INBOUND se 0, OUTBOUND se 1 |
| device_event_class_id | metadata.product_event_type | Parte della concatenazione |
| duid | target.user.userid | Valore di temp_duid dopo l'analisi |
| dvcmac | about.mac | Valore di dvcmac dopo la formattazione |
| event_name | metadata.product_event_type | Parte della concatenazione |
| event_name | metadata.event_type | Imposta su SCAN_UNCATEGORIZED se in [LogSpyware, LogPredictiveMachineLearning] |
| fileHash | about.file.sha256 | Valore copiato direttamente se hash, altrimenti about.file.full_path |
| Mottatt | metadata.collected_timestamp | Convertito utilizzando la corrispondenza della data aaaa-MM-ggTHH:mm:ss |
| risultato | security_result.action | Parte della condizione per l'azione |
| porta | principal.port | Convertito in numero intero |
| protocol_number_src | network.ip_protocol | Valore di protocol_number_src dopo la mappatura |
| proto | protocol_number_src | Valore copiato direttamente |
| gravità | security_result.severity | Mappato in base agli intervalli di valori |
| shost | principal.hostname | Valore copiato direttamente se non è un IP |
| act | security_result.action | Impostare in base alla logica condizionale |
| app_protocol_src | network.application_protocol | Mappato da app_protocol_src |
| protocol_number_src | network.ip_protocol | Mappato da protocol_number_src |
| Virus_Malware_Name | security_result.threat_name | Valore di Virus_Malware_Name se |
flexString2 |
event.idm.read_only_udm.network.email.subject |
Mappato dal log delle modifiche |
version |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
device_product |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
cs1 |
event.idm.read_only_udm.security_result.rule_name |
Mappato dal log delle modifiche |
cs4 |
event.idm.read_only_udm.metadata.url_back_to_product |
Mappato dal log delle modifiche |
suser |
event.idm.read_only_udm.network.email.from |
Mappato dal log delle modifiche |
duser |
event.idm.read_only_udm.network.email.to |
Mappato dal log delle modifiche |
fname |
event.idm.read_only_udm.target.file.names |
Mappato dal log delle modifiche |
fileHash |
event.idm.read_only_udm.target.file.md5 |
Mappato dal log delle modifiche |
flexString1 |
event.idm.read_only_udm.about.file.sha256 |
Mappato dal log delle modifiche |
observer_application |
event.idm.read_only_udm.observer.application |
Mappato dal log delle modifiche |
syslog_severity_label |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
start |
event.idm.read_only_udm.security_result.first_discovered_time |
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.