Raccogliere i log di Fortinet FortiMail
Questo documento spiega come raccogliere i log di Fortinet FortiMail utilizzando Bindplane. Il parser estrae le coppie chiave-valore, normalizza vari campi come timestamp e indirizzi IP e li mappa in un modello di dati unificato (UDM) per Google Security Operations, classificando il tipo di evento in base alle informazioni disponibili.
Prima di iniziare
- Assicurati di avere un'istanza Google Security Operations.
- Assicurati di utilizzare Windows 2016 o versioni successive o un host Linux con
systemd
. - Se il servizio è eseguito dietro un proxy, assicurati che le porte del firewall siano aperte.
- Assicurati di disporre di accesso privilegiato a Fortinet Fortimail.
Ottenere il file di autenticazione di importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione dell'importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Ottenere 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 di installazione aggiuntive
- Per altre opzioni di installazione, consulta questa guida all'installazione.
Configura l'agente Bindplane per importare Syslog e inviarlo 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:```yaml receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:5252" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/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: SYSLOG namespace: fortinet_fortimail 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 come richiesto nella tua infrastruttura.
Sostituisci
<customer_id>
con l'ID cliente effettivo.Aggiorna
/path/to/ingestion-authentication-file.json
con il percorso in cui è stato salvato il file di autenticazione nella sezione Ottenere 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 il seguente 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
Configurare syslog di Fortinet FortiMail
- Accedi all'interfaccia web del dispositivo FortiMail.
- Seleziona Log e report > Impostazioni log > Remoto.
- Fai clic su Nuovo per creare una nuova voce.
- Nella finestra di dialogo visualizzata, seleziona Attiva per consentire il logging su un host remoto.
- Fornisci i seguenti dettagli:
- Nome: inserisci un nome univoco e significativo.
- Nome/IP del server: inserisci l'indirizzo IP di Bindplane.
- Porta server: inserisci il numero di porta UDP di Bindplane.
- Livello: seleziona Informazioni come livello di gravità.
- Struttura: inserisci un identificatore univoco della struttura e verifica che nessun altro dispositivo di rete utilizzi lo stesso identificatore.
- Deseleziona il formato CSV.
- Protocollo log: seleziona Syslog.
- Configurazione delle norme di logging: abilita l'inoltro di tutti i tipi di eventi o log.
- Fai clic su Crea.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
authid | read_only_udm.target.user.email_addresses | Se il campo authid contiene @ , esegui la mappatura a questo campo |
authid | read_only_udm.target.user.userid | Mappa il campo authid a questo campo |
cifrario | read_only_udm.network.tls.cipher | Mappa il campo cipher a questo campo |
client_ip | read_only_udm.principal.ip | Mappa il campo client_ip a questo campo |
client_name | read_only_udm.principal.hostname | Mappa il campo client_name a questo campo |
dettaglio | read_only_udm.security_result.summary | Mappa il campo detail a questo campo |
device_id | read_only_udm.principal.resource.id | Mappa il campo device_id a questo campo |
devname | read_only_udm.principal.resource.name | Mappa il campo devname a questo campo |
direction | read_only_udm.network.direction | Se il campo direction è uguale a out , mappa il valore OUTBOUND ; se il campo direction è uguale a in , mappa il valore INBOUND ; altrimenti, mappa il valore UNKNOWN_DIRECTION |
disposizione | read_only_udm.security_result.detection_fields.value | Mappa il campo disposition a questo campo quando il campo chiave è uguale a Disposition |
dominio | read_only_udm.principal.administrative_domain | Mappa il campo domain a questo campo |
dst_ip | read_only_udm.target.ip | Mappa il campo dst_ip a questo campo |
da | read_only_udm.network.email.from | Se il campo from contiene @ , esegui la mappatura a questo campo |
log_id | read_only_udm.metadata.product_log_id | Mappa il campo log_id a questo campo |
message_id | read_only_udm.network.email.mail_id | Mappa il campo message_id a questo campo |
message_length | read_only_udm.additional.fields.value.number_value | Mappa il campo message_length a questo campo quando il campo chiave è uguale a message_length |
msg | read_only_udm.security_result.description | Mappa il campo msg a questo campo |
polid | read_only_udm.security_result.detection_fields.value | Mappa il campo polid a questo campo quando il campo chiave è uguale a Polid |
inoltro | read_only_udm.intermediary.ip | Mappa il campo relay a questo campo |
Risolto | read_only_udm.security_result.detection_fields.value | Mappa il campo resolved a questo campo quando il campo chiave è uguale a Resolved |
session_id | read_only_udm.network.session_id | Mappa il campo session_id a questo campo |
src_type | read_only_udm.additional.fields.value.string_value | Mappa il campo src_type a questo campo quando il campo chiave è uguale a src_type |
stat | read_only_udm.metadata.description | Mappa il campo stat a questo campo |
subject | read_only_udm.network.email.subject | Mappa il campo subject a questo campo |
a | read_only_udm.network.email.to | Se il campo to contiene @ , esegui la mappatura a questo campo |
utente | read_only_udm.principal.user.userid | Mappa il campo user a questo campo |
N/D | read_only_udm.extensions.auth.mechanism | Il valore di questo campo è hardcoded nel codice dell'analizzatore come USERNAME_PASSWORD se esiste il campo authid |
N/D | read_only_udm.extensions.auth.type | Il valore di questo campo è hardcoded nel codice dell'analizzatore come AUTHTYPE_UNSPECIFIED se esiste il campo authid |
N/D | read_only_udm.metadata.event_type | Il valore di questo campo è determinato dalla logica dell'analizzatore in base a una combinazione di campi disponibili. Se esiste il campo from , il valore è EMAIL_TRANSACTION , altrimenti se esiste il campo to , il valore è EMAIL_UNCATEGORIZED , altrimenti se esistono entrambi i campi client_ip e dst_ip , il valore è NETWORK_CONNECTION , altrimenti se esiste il campo authid , il valore è USER_LOGIN , altrimenti se esiste il campo user , il valore è USER_UNCATEGORIZED , altrimenti se esiste il campo client_ip , il valore è STATUS_UPDATE , altrimenti il valore è GENERIC_EVENT |
N/D | read_only_udm.metadata.log_type | Il valore di questo campo è hardcoded nel codice dell'analizzatore come FORTINET_FORTIMAIL |
N/D | read_only_udm.metadata.product_name | Il valore di questo campo è hardcoded nel codice dell'analizzatore come FORTINET_FORTIMAIL |
N/D | read_only_udm.metadata.vendor_name | Il valore di questo campo è hardcoded nel codice dell'analizzatore come FORTINET |
N/D | read_only_udm.principal.resource.resource_type | Il valore di questo campo è hardcoded nel codice dell'analizzatore come DEVICE |
Modifiche
2023-09-06
Miglioramento:
- È stato aggiunto un pattern Grok per estrarre i dati e analizzare i log KV con errori.
2023-05-23
- Parser appena creato.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.