Raccogliere i log di Fortinet FortiMail

Supportato in:

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

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. 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

  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

Installazione di Windows

  1. Apri il 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
    

Installazione di Linux

  1. Apri un terminale con privilegi di 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
    

Risorse di installazione aggiuntive

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

  1. Accedi al file di configurazione:

    1. Individua il file config.yaml. In genere si trova nella directory /etc/bindplane-agent/ su Linux o nella directory di installazione su Windows.
    2. Apri il file utilizzando un editor di testo (ad esempio nano, vi o Blocco note).
  2. 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
    ```
    
  3. Sostituisci la porta e l'indirizzo IP come richiesto nella tua infrastruttura.

  4. Sostituisci <customer_id> con l'ID cliente effettivo.

  5. 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

  1. Accedi all'interfaccia web del dispositivo FortiMail.
  2. Seleziona Log e report > Impostazioni log > Remoto.
  3. Fai clic su Nuovo per creare una nuova voce.
  4. Nella finestra di dialogo visualizzata, seleziona Attiva per consentire il logging su un host remoto.
  5. 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.
  6. 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.