Raccogliere i log di Forcepoint Web Security

Supportato in:

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

Forcepoint Web Security è un proxy web e un gateway di sicurezza che genera messaggi syslog in formato CEF (Common Event Format) per accesso web, eventi di sicurezza, autenticazione e applicazione dei criteri. Il parser estrae i campi dai log formattati CEF e syslog e li mappa al modello Unified Data Model (UDM).

Prima di iniziare

Assicurati di soddisfare i 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 Forcepoint Web Security
  • Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
  • Accesso amministrativo a Forcepoint Security Manager o all'interfaccia di gestione dell'appliance

Recuperare il file di autenticazione importazione di Google SecOps

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

    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:

    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

Puoi configurare l'agente Bindplane per ricevere messaggi syslog tramite TCP (opzione consigliata) o UDP.

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 configurazione del protocollo scelto:

  • Opzione A: configurazione TCP (consigliata)

    receivers:
        tcplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/forcepoint_webproxy:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: FORCEPOINT_WEBPROXY
            raw_log_field: body
    
    service:
        pipelines:
            logs/forcepoint_tcp_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/forcepoint_webproxy
    
  • Opzione B: configurazione UDP

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/forcepoint_webproxy:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: FORCEPOINT_WEBPROXY
            raw_log_field: body
    
    service:
        pipelines:
            logs/forcepoint_udp_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/forcepoint_webproxy
    

Parametri di configurazione

Sostituisci i seguenti segnaposto:

  • Configurazione del ricevitore:

    • listen_address: Indirizzo IP e porta da ascoltare:
      • 0.0.0.0 per ascoltare su tutte le interfacce (consigliato)
      • La porta 514 è la porta syslog standard (richiede l'accesso root su Linux; utilizza 1514 per l'accesso non root)
  • 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 copiato dalla 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 un elenco completo, vedi Endpoint regionali.

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

  • Per riavviare l'agente Bindplane in Linux, esegui questo comando:

    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
      
  • 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 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 l'inoltro di syslog su Forcepoint Web Security

Configura Forcepoint Web Security per inoltrare i log all'agente Bindplane in formato CEF (Common Event Format).

Utilizzo di Forcepoint Security Manager

  1. Accedi a Forcepoint Security Manager con le credenziali amministrative.
  2. Vai a Impostazioni > Registrazione.
  3. Nel riquadro di navigazione a sinistra, seleziona Server di log.
  4. Fai clic su Aggiungi per creare una nuova configurazione del server di log.
  5. Fornisci i seguenti dettagli di configurazione:
    • Server Type (Tipo di server): seleziona Syslog Server (Server Syslog) o CEF Server (Server CEF).
    • Nome: inserisci un nome descrittivo (ad esempio, Google Security Operations Bindplane CEF).
    • Host: inserisci l'indirizzo IP o il nome host dell'agente Bindplane.
    • Porta: inserisci il numero di porta dell'agente Bindplane (ad esempio, 514).
    • Protocollo: seleziona il protocollo corrispondente alla configurazione di Bindplane:
      • Seleziona TCP se hai configurato il ricevitore tcplog in Bindplane (opzione consigliata).
      • Seleziona UDP se hai configurato il ricevitore udplog in Bindplane.
    • Formato: seleziona CEF (Common Event Format).
    • Facility (Struttura): seleziona Local0 (o un'altra struttura disponibile).
    • Gravità: seleziona Informativa (per acquisire tutti i livelli di log).
  6. In Categorie log o Tipi di eventi, seleziona gli eventi da inoltrare:
    • Log di accesso web (log delle transazioni)
    • Eventi di sicurezza (rilevamenti di minacce)
    • Eventi di autenticazione (accesso/disconnessione utente)
    • Eventi di sistema (modifiche al sistema e alla configurazione)
    • In alternativa, seleziona Tutti gli eventi per inoltrare tutti i tipi di log disponibili.
  7. (Facoltativo) Configura le impostazioni aggiuntive:
    • Dimensioni batch: imposta 1 per l'inoltro in tempo reale o un valore superiore per l'elaborazione batch.
    • Formato messaggio: assicurati che sia selezionato il formato CEF.
    • Includi informazioni utente: attiva questa opzione per includere l'identità utente nei log.
  8. Fai clic su Prova connessione per verificare la connettività all'agente Bindplane.
  9. Fai clic su Salva per applicare la configurazione.
  10. Fai clic su Esegui il deployment per eseguire il push della configurazione su tutti i gateway Forcepoint Web Security.

Utilizzo dell'appliance Forcepoint Web Security (configurazione diretta)

Se esegui la configurazione direttamente sull'appliance:

  1. Accedi all'interfaccia di gestione dell'appliance di sicurezza web Forcepoint.
  2. Vai a Sistema > Server di log.
  3. Fai clic su Aggiungi o Modifica per creare o modificare un server di log.
  4. Fornisci i seguenti dettagli di configurazione:
    • Indirizzo server: inserisci l'indirizzo IP dell'agente Bindplane.
    • Porta: inserisci 514 (o la tua porta personalizzata).
    • Protocollo: seleziona TCP o UDP in base alla configurazione di Bindplane.
    • Formato: seleziona CEF o Common Event Format.
    • Facility (Struttura): seleziona Local0.
  5. In Tipi di log, seleziona i log da inoltrare:
    • Log degli accessi
    • Log di sicurezza
    • Log amministratore
  6. Fai clic su Applica o Salva.
  7. Se utilizzi più elettrodomestici, ripeti questa configurazione su ciascuno di essi.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
action security_result.summary Se action_msg non è vuoto, viene mappato a security_result.summary. In caso contrario, se action non è vuoto, viene mappato a security_result.summary. In caso contrario, se act non è vuoto, viene mappato a security_result.summary.
action_msg security_result.summary Se action_msg non è vuoto, viene mappato a security_result.summary. In caso contrario, se action non è vuoto, viene mappato a security_result.summary. In caso contrario, se act non è vuoto, viene mappato a security_result.summary.
app target.application Se destinationServiceName non è vuoto, viene mappato a app_name. In caso contrario, se app non è vuoto e non contiene http o HTTP, viene mappato a app_name. Infine, app_name è mappato a target.application.
bytes_in network.received_bytes Se in non è vuoto, viene mappato a bytes_in. Infine, bytes_in è mappato a network.received_bytes.
bytes_out network.sent_bytes Se out non è vuoto, viene mappato a bytes_out. Infine, bytes_out è mappato a network.sent_bytes.
cat security_result.category_details Se cat non è vuoto, viene mappato a category. Infine, category è mappato a security_result.category_details.
category_no security_result.detection_fields.value Se category_no non è vuoto, viene mappato a security_result.detection_fields.value con la chiave Category Number.
cn1 security_result.detection_fields.value Se cn1 non è vuoto, viene mappato a security_result.detection_fields.value con la chiave Disposition Number.
ContentType target.file.mime_type Se contentType non è vuoto, viene mappato a ContentType. Infine, ContentType è mappato a target.file.mime_type.
cs1 target_role.description cs1 è mappato a target_role.description.
cs2 security_result.category_details Se cs2 non è vuoto e non è 0, viene mappato a security_result.category_details con il prefisso Dynamic Category:.
cs3 target.file.mime_type cs3 è mappato a target.file.mime_type.
description metadata.description Se description non è vuoto, viene mappato a metadata.description.
destinationServiceName target.application Se destinationServiceName non è vuoto, viene mappato a app_name. Infine, app_name è mappato a target.application.
deviceFacility metadata.product_event_type Se product_event e deviceFacility non sono vuoti, vengono concatenati con - e mappati a metadata.product_event_type. In caso contrario, product_event viene mappato a metadata.product_event_type.
disposition security_result.detection_fields.value Se disposition non è vuoto, viene mappato a security_result.detection_fields.value con la chiave Disposition Number.
dst target.ip Se dst non è vuoto e dvchost è vuoto, viene mappato a dst_ip. Infine, dst_ip è mappato a target.ip.
dst_host target.hostname Se dst non è vuoto e dvchost è vuoto, viene mappato a dst_host. Infine, dst_host è mappato a target.hostname.
dst_ip target.ip Se dst non è vuoto e dvchost è vuoto, viene mappato a dst_ip. Infine, dst_ip è mappato a target.ip.
dst_port target.port Se dst non è vuoto e dvchost è vuoto, viene mappato a dst_port. Infine, dst_port è mappato a target.port.
duration network.session_duration.seconds Se duration non è vuoto e non è 0, viene mappato a network.session_duration.seconds.
dvchost intermediary.ip Se dvchost non è vuoto, viene mappato a int_ip. Infine, int_ip viene mappato su intermediary.ip se è un indirizzo IP valido, altrimenti viene mappato su intermediary.hostname.
file_path target.file.full_path Se file_path non è vuoto, viene mappato a target.file.full_path.
host principal.ip Se host non è vuoto, viene mappato a src. Infine, src è mappato a principal.ip.
http_method network.http.method Se requestMethod non è vuoto, viene mappato a http_method. In caso contrario, se method non è vuoto, viene mappato a http_method. Infine, http_method è mappato a network.http.method.
http_proxy_status_code network.http.response_code Se http_response è vuoto o 0 o - e http_proxy_status_code non è vuoto, viene mappato a network.http.response_code.
http_response network.http.response_code Se http_response non è vuoto, non è 0 e non è -, viene mappato a network.http.response_code.
http_user_agent network.http.user_agent Se http_user_agent non è vuoto e non è -, viene mappato a network.http.user_agent.
in network.received_bytes Se in non è vuoto, viene mappato a bytes_in. Infine, bytes_in è mappato a network.received_bytes.
int_host intermediary.hostname Se int_ip non è vuoto e int_host non è vuoto e diverso da int_ip, viene mappato a intermediary.hostname.
int_ip intermediary.ip Se dvchost non è vuoto, viene mappato a int_ip. Infine, int_ip viene mappato su intermediary.ip se è un indirizzo IP valido, altrimenti viene mappato su intermediary.hostname.
level target_role.name Se level non è vuoto e role è vuoto, viene mappato a role. Infine, role è mappato a target_role.name.
log_level security_result.severity Se severity è 1 o log_level contiene info o message contiene notice, security_result.severity è impostato su INFORMATIONAL. Se severity è 7, security_result.severity è impostato su HIGH.
loginID principal.user.userid Se loginID non è vuoto, viene mappato a user. Infine, se user non è vuoto e non è - e non contiene LDAP, viene mappato a principal.user.userid.
method network.http.method Se requestMethod non è vuoto, viene mappato a http_method. In caso contrario, se method non è vuoto, viene mappato a http_method. Infine, http_method è mappato a network.http.method.
NatRuleId security_result.detection_fields.value Se NatRuleId non è vuoto, viene mappato a security_result.detection_fields.value con la chiave NatRuleId.
out network.sent_bytes Se out non è vuoto, viene mappato a bytes_out. Infine, bytes_out è mappato a network.sent_bytes.
pid target.process.pid Se pid non è vuoto, viene mappato a target.process.pid.
policy target_role.description Se Policy non è vuoto, viene mappato a policy. Se policy non è vuoto e non è -, viene mappato a target_role.description.
Policy target_role.description Se Policy non è vuoto, viene mappato a policy. Se policy non è vuoto e non è -, viene mappato a target_role.description.
product_event metadata.product_event_type Se product non è vuoto, viene mappato a product_event. Se product_event e deviceFacility non sono vuoti, vengono concatenati con - e mappati a metadata.product_event_type. In caso contrario, product_event viene mappato a metadata.product_event_type.
proxyStatus-code network.http.response_code Se http_response è vuoto o 0 o - e http_proxy_status_code è vuoto e proxyStatus-code non è vuoto, viene mappato a network.http.response_code.
refererUrl network.http.referral_url Se refererUrl non è vuoto e non è -, viene mappato a network.http.referral_url.
requestClientApplication network.http.user_agent Se requestMethod non è vuoto, viene mappato a http_user_agent. Infine, http_user_agent è mappato a network.http.user_agent.
requestMethod network.http.method Se requestMethod non è vuoto, viene mappato a http_method. Infine, http_method è mappato a network.http.method.
role target_role.name Se level non è vuoto e role è vuoto, viene mappato a role. Infine, role è mappato a target_role.name.
RuleID security_result.rule_id Se RuleID non è vuoto, viene mappato a security_result.rule_id.
serverStatus-code network.http.response_code Se http_response è vuoto o 0 o - e http_proxy_status_code è vuoto e proxyStatus-code non è vuoto, viene mappato a network.http.response_code.
severity security_result.severity Se severity è 1 o log_level contiene info o message contiene notice, security_result.severity è impostato su INFORMATIONAL. Se severity è 7, security_result.severity è impostato su HIGH.
spt principal.port Se spt non è vuoto, viene mappato a src_port. Infine, src_port è mappato a principal.port.
src principal.ip Se src_host non è vuoto, viene mappato a source_ip_temp. Se source_ip_temp è un indirizzo IP valido e src è vuoto, viene mappato a src. Se host non è vuoto, viene mappato a src. Infine, src è mappato a principal.ip.
src_host principal.hostname Se src_host non è vuoto, viene mappato a source_ip_temp. Se source_ip_temp non è un indirizzo IP valido, viene mappato a principal.hostname. Se source_ip_temp è un indirizzo IP valido e src è vuoto, viene mappato a src. Infine, src è mappato a principal.ip.
src_port principal.port Se src_port non è vuoto, viene mappato a principal.port.
suser principal.user.userid Se loginID non è vuoto, viene mappato a user. Se suser non è vuoto, viene mappato a user. Infine, se user non è vuoto e non è - e non contiene LDAP, viene mappato a principal.user.userid.
url target.url Se url non è vuoto, viene mappato a target.url.
user principal.user.userid Se loginID non è vuoto, viene mappato a user. Se suser non è vuoto, viene mappato a user. In caso contrario, se usrName non è vuoto, viene mappato a user. Infine, se user non è vuoto e non è - e non contiene LDAP, viene mappato a principal.user.userid.
usrName principal.user.userid Se loginID non è vuoto, viene mappato a user. Se suser non è vuoto, viene mappato a user. In caso contrario, se usrName non è vuoto, viene mappato a user. Infine, se user non è vuoto e non è - e non contiene LDAP, viene mappato a principal.user.userid.
when metadata.event_timestamp Se when non è vuoto, viene analizzato e mappato a metadata.event_timestamp.
N/D metadata.log_type Il valore FORCEPOINT_WEBPROXY è hardcoded in metadata.log_type.
N/D metadata.product_name Il valore Forcepoint Webproxy è hardcoded in metadata.product_name.
N/D metadata.vendor_name Il valore Forcepoint è hardcoded in metadata.vendor_name.
N/D network.application_protocol Se dst_port è 80, network.application_protocol è impostato su HTTP. Se dst_port è 443, network.application_protocol è impostato su HTTPS.
N/D principal.user.group_identifiers Se user non è vuoto e non è - e contiene LDAP, la parte dell'unità organizzativa della stringa utente viene estratta e mappata a principal.user.group_identifiers.
N/D principal.user.user_display_name Se user non è vuoto e non è - e contiene LDAP, la parte del nome utente della stringa utente viene estratta e mappata a principal.user.user_display_name.
N/D security_result.action Se action_msg, action o act non sono vuoti, sec_action è impostato su ALLOW o BLOCK in base ai loro valori. Infine, sec_action è mappato a security_result.action.
N/D security_result.detection_fields.key Il valore Disposition Number è hardcoded in security_result.detection_fields.key quando viene mappato disposition o cn1. Il valore NatRuleId è hardcoded in security_result.detection_fields.key durante la mappatura di NatRuleId. Il valore Category Number è hardcoded in security_result.detection_fields.key durante la mappatura di category_no.

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