Raccogliere i log di Fortinet FortiClient

Supportato in:

Questo documento spiega come importare i log di Fortinet FortiClient in Google Security Operations utilizzando l'agente Bindplane.

FortiClient è una soluzione di sicurezza degli endpoint che offre funzionalità antivirus, di filtro web, VPN, analisi delle vulnerabilità e firewall delle applicazioni per endpoint Windows, macOS, Linux e Chromebook. FortiClient viene gestito centralmente tramite FortiClient EMS (Endpoint Management Server), che esegue il push di criteri di sicurezza e profili di configurazione agli endpoint.

Prima di iniziare

Assicurati di disporre dei seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Windows Server 2016 o versioni successive oppure host Linux con systemd
  • Connettività di rete tra l'agente Bindplane e gli endpoint FortiClient
  • Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
  • Accesso con privilegi alla console di gestione EMS di FortiClient
  • FortiClient EMS versione 7.0 o successive con endpoint FortiClient con licenza

Recuperare il file di autenticazione dell'importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agente di raccolta.
  3. Fai clic su Scarica per scaricare il file di autenticazione dell'importazione.
  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 il comando:

    sc query observiq-otel-collector
    

Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.

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
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo il comando:

    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:

sudo nano /etc/bindplane-agent/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/forticlient:
    compression: gzip
    creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
    customer_id: 'your-customer-id-here'
    endpoint: malachiteingestion-pa.googleapis.com
    log_type: FORTINET_FORTICLIENT
    raw_log_field: body
    ingestion_labels:
        env: production
        source: forticlient

service:
    pipelines:
    logs/forticlient_to_chronicle:
        receivers:
        - udplog
        exporters:
        - chronicle/forticlient

Parametri di configurazione

Sostituisci i seguenti segnaposto:

Configurazione del ricevitore:

  • listen_address: indirizzo IP e porta su cui ascoltare. Utilizza 0.0.0.0:514 per ascoltare su tutte le interfacce sulla porta 514.

Configurazione dell'esportatore:

  • creds_file_path: percorso completo del file di autenticazione importazione:
    • Linux: /etc/bindplane-agent/ingestion-auth.json
    • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
  • customer_id: ID cliente della console Google SecOps
  • endpoint: URL endpoint regionale:
    • Stati Uniti: malachiteingestion-pa.googleapis.com
    • Europa: europe-malachiteingestion-pa.googleapis.com
    • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
    • Per l'elenco completo, vedi Endpoint regionali.
  • log_type: FORTINET_FORTICLIENT
  • ingestion_labels: Etichette facoltative in formato YAML

Salvare 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

  • Linux

    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 individuare eventuali errori:

      sudo journalctl -u observiq-otel-collector -f
      
  • Windows

    Scegli una delle seguenti opzioni:

    • Utilizzando il prompt dei comandi o PowerShell come amministratore:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Utilizzo della console Services:

      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 la registrazione degli endpoint FortiClient per inviare i log all'agente Bindplane

La registrazione degli endpoint FortiClient viene configurata centralmente tramite FortiClient EMS modificando i profili degli endpoint con la configurazione XML. EMS esegue il push della configurazione di logging agli endpoint FortiClient, che poi inviano i log direttamente al listener syslog dell'agente Bindplane.

Accedere a FortiClient EMS

  1. Accedi alla console web FortiClient EMS.
  2. Vai a Profili endpoint > Gestisci profili.

Modificare o creare un profilo endpoint

  1. Seleziona un profilo esistente da modificare o fai clic su Aggiungi per crearne uno nuovo.
  2. Nel campo Nome profilo, inserisci un nome descrittivo (ad esempio Chronicle-Logging-Profile).
  3. Fai clic su Avanzate.
  4. Fai clic sulla scheda Configurazione XML.
  5. Fai clic su Modifica.

Configurare la registrazione remota in XML

EMS mostra due riquadri. Utilizza il riquadro a destra per modificare la configurazione XML.

Individua la sezione <log_settings> all'interno di <system>. Se non esiste, aggiungilo. In <log_settings>, individua o aggiungi la sezione <remote_logging> e configurala nel seguente modo:

<forticlient_configuration>
    <system>
    <log_settings>
        <onnet_local_logging>1</onnet_local_logging>
        <level>6</level>
        <log_events>ipsecvpn,sslvpn,scheduler,update,firewall,av,proxy,shield,webfilter,endpoint,fssoma,configd,vuln,sandboxing,antiexploit</log_events>
        <remote_logging>
        <log_upload_enabled>1</log_upload_enabled>
        <log_protocol>syslog</log_protocol>
        <netlog_server>192.168.1.100</netlog_server>
        <netlog_categories>7</netlog_categories>
        <log_upload_freq_minutes>5</log_upload_freq_minutes>
        </remote_logging>
    </log_settings>
    </system>
</forticlient_configuration>

Parametri di configurazione:

  • <log_upload_enabled>: imposta su 1 per abilitare la registrazione remota.
  • <log_protocol>: imposta su syslog per inviare i log a un server syslog. Utilizza faz per inviare i log a FortiAnalyzer.
  • <netlog_server>: inserisci l'indirizzo IP dell'host dell'agente Bindplane (ad esempio, 192.168.1.100). Questo parametro viene utilizzato solo quando <log_protocol> è impostato su syslog.
  • <netlog_categories>: Inserisci la maschera di bit delle categorie di log da caricare:
    • 1 = Log sul traffico
    • 2 = Log delle vulnerabilità
    • 4 = Event logs
    • 7 = Tutte le categorie (1 + 2 + 4)
  • <log_upload_freq_minutes>: inserisci la frequenza di caricamento dei log in minuti (ad esempio, 5 per ogni 5 minuti).
  • <level>: livello di logging di FortiClient. Inserisci uno dei seguenti valori:
    • 0 = Emergenza
    • 1 = Avviso
    • 2 = Critico
    • 3 = Errore
    • 4 = Avviso
    • 5 = Notifica
    • 6 = Informazioni (consigliato)
    • 7 = Debug
  • <log_events>: Elenco separato da virgole di eventi o processi FortiClient da registrare. Includi gli eventi che vuoi acquisire (ad esempio ipsecvpn,sslvpn,firewall,av,webfilter,endpoint).

Salva il profilo.

  1. Fai clic su Test XML per convalidare la configurazione XML.
  2. Fai clic su Salva per salvare il profilo.

Applica il profilo agli endpoint

  1. Vai a Criteri endpoint > Gestisci criteri.
  2. Seleziona una policy esistente o fai clic su Aggiungi per crearne una nuova.
  3. Nel menu a discesa Profilo, seleziona il profilo che hai creato o modificato.
  4. Nella sezione Gruppi di endpoint, seleziona i gruppi di endpoint a cui vuoi applicare il criterio.
  5. Fai clic su Salva.

EMS esegue il push della configurazione del profilo agli endpoint con la successiva comunicazione di telemetria. Gli endpoint FortiClient inizieranno a inviare i log al listener syslog dell'agente Bindplane.

Verificare l'inoltro dei log

  1. Sull'host dell'agente Bindplane, controlla i log dell'agente per verificare che i log vengano ricevuti:

    Linux:

    sudo journalctl -u observiq-otel-collector -f
    

    Windows:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    
  2. Su un endpoint FortiClient, verifica che la registrazione remota sia abilitata controllando i log di FortiClient:

    Windows:

    C:\Program Files\Fortinet\FortiClient\logs\
    

    macOS:

    /Library/Application Support/Fortinet/FortiClient/logs/
    

    Linux:

    /var/log/forticlient/
    
  3. Nella console Google SecOps, verifica che i log di FortiClient vengano inseriti:

    • Vai a Ricerca.
    • Inserisci una query di ricerca per i log di FortiClient (ad esempio, metadata.log_type = "FORTINET_FORTICLIENT").
    • Verifica che i log vengano visualizzati nei risultati di ricerca.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
emsserial, devid, usingpolicy, itime, fctsn, logver, site, fctver, browsetime, event_id, SubjectUserName, SubjectLogonId, ThreadID additional.fields Etichette create con chiave e valore di ogni campo, unite in additional.fields
timestamp metadata.collected_timestamp Analizzato come timestamp UNIX
ts metadata.event_timestamp Analizzato con il filtro data utilizzando i formati "MMM d HH:mm:ss", "MMM d HH:mm:ss", "aaaa-MM-gg HH:mm:ss"
deviceip, client_ip, devicemac, hostname, user, uid metadata.event_type Impostato su USER_RESOURCE_ACCESS se sono presenti l'utente/uid e l'ID macchina; USER_UNCATEGORIZED se è presente l'ID macchina; GENERIC_EVENT altrimenti
eventtype metadata.product_event_type Valore copiato direttamente
id metadata.product_log_id Convertito in stringa, valore copiato
servizio network.application_protocol In maiuscolo, quindi impostato sul protocollo predefinito se corrisponde all'elenco (ad es. "SSH" per "22", "SSH", "SSHD"; "HTTP" per "80", "8080", "HTTP"), altrimenti al servizio se nell'elenco esteso, altrimenti vuoto
direction network.direction Imposta INBOUND se corrisponde a (?i)inbound; OUTBOUND se corrisponde a (?i)outbound
proto network.ip_protocol Imposta su "TCP" se proto == "6"
rcvdbyte network.received_bytes Convertito in uinteger, valore copiato se non vuoto/0
sentbyte network.sent_bytes Convertito in uinteger, valore copiato se non vuoto/0
sessionid network.session_id Valore copiato direttamente
pcdomain principal.administrative_domain Valore copiato direttamente
srcproduct principal.application Valore copiato direttamente
nome host principal.hostname Valore copiato direttamente
deviceip, client_ip principal.ip Valore di deviceip se non è vuoto, altrimenti di client_ip se è un IP valido
devicemac principal.mac Convertito in formato MAC, valore copiato se valido
os, source principal.platform Imposta WINDOWS se os/source corrisponde a (?i)windows; MAC se corrisponde a (?i)mac|ios; LINUX se corrisponde a (?i)linux
source_ver principal.platform_version Valore copiato direttamente
srcport principal.port Convertito in numero intero, valore copiato
ProcessId principal.process.pid Valore copiato direttamente
srcname, source_type, type principal.resource.attribute.labels Etichette create con chiave e valore di ogni campo, unite in attribute.labels
devname principal.resource.name Valore copiato direttamente
ProviderGuid principal.resource.product_object_id Valore copiato direttamente
sottotipo principal.resource.resource_subtype Valore copiato direttamente
url principal.url Valore copiato direttamente
uid, fctuid principal.user.product_object_id Valore di uid se non è vuoto, altrimenti fctuid
utente principal.user.user_display_name Valore copiato direttamente
utente principal.user.userid Valore copiato direttamente
SubjectUserSid principal.user.windows_sid Valore copiato se corrisponde all'espressione regolare SID
utmaction security_result.action Impostato su ALLOW se in [accept,allow,passthrough,pass,permit,detected]; BLOCK se in [deny,dropped,blocked,block]; UNKNOWN_ACTION altrimenti
utmevent security_result.category_details Valore copiato direttamente
utmaction security_result.description Impostato su "utmaction:"
userinitiated security_result.detection_fields Etichetta creata con la chiave "userinitiated" e il valore di userinitiated, uniti
livello security_result.severity Imposta su INFORMATIONAL se level == "info"
minaccia security_result.threat_name Valore copiato direttamente
emshostname, remotename target.hostname Valore di emshostname se non è vuoto, altrimenti remotename
dstip target.ip IP valido estratto da dstip
dstport target.port Convertito in numero intero, valore copiato se non è 0
metadata.product_name Imposta su "FORTINET_FORTICLIENT"
metadata.vendor_name Imposta su "FORTINET_FORTICLIENT"

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