Raccogliere i log di pfSense

Supportato in:

Questo documento spiega come importare i log pfSense in Google Security Operations utilizzando Bindplane.

pfSense è una distribuzione di software firewall e router open source basata su FreeBSD. Offre funzionalità di filtro dei pacchetti stateful, VPN, traffic shaping, NAT, server DHCP, forwarding DNS e rilevamento delle intrusioni, tutte gestite tramite un'interfaccia basata sul web. Il parser estrae i campi dai log formattati syslog di pfSense. Utilizza grok per analizzare il messaggio di log e poi mappa questi valori al modello dei dati unificato (UDM). Inoltre, imposta i valori predefiniti dei metadati per l'origine e il tipo di evento.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Windows Server 2016 o versioni successive o host Linux con systemd
  • Se l'esecuzione avviene dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
  • Accesso con privilegi all'interfaccia web di pfSense

Recuperare il file di autenticazione dell'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'acquisizione. Salva il file in modo sicuro sul sistema in cui verrà installato 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 organizzazione.

Installa l'agente Bindplane

Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.

Installazione di finestre

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

Installazione di Linux

  1. Apri un terminale con privilegi 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 il syslog e inviarlo 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/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'PFSENSE'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Parametri di configurazione

  • Sostituisci i seguenti segnaposto:

    • Configurazione del destinatario:

      • udplog: utilizza udplog per syslog UDP o tcplog per syslog TCP
      • 0.0.0.0: indirizzo IP su cui ascoltare (0.0.0.0 per ascoltare su tutte le interfacce)
      • 514: il numero di porta su cui ascoltare (porta syslog standard)
    • Configurazione dell'esportatore:

      • creds_file_path: percorso completo del file di autenticazione dell'acquisizione:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: l'ID cliente della sezione Recupera l'ID cliente
      • endpoint: URL dell'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, consulta Endpoint regionali.
      • log_type: tipo di log esattamente come appare in Chronicle (PFSENSE)

Salva 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 Servizi:

      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"
        

Configurare l'inoltro di Syslog su pfSense

pfSense viene eseguito su FreeBSD e fornisce un'interfaccia basata sul web per tutte le attività di configurazione, incluso l'inoltro syslog remoto.

  1. Accedi all'interfaccia web di pfSense.
  2. Vai a Stato > Log di sistema > Impostazioni.
  3. Vai alla sezione Remote Logging Options (Opzioni di logging remoto).
  4. Seleziona Attiva logging remoto.
  5. Fornisci i seguenti dettagli di configurazione:
    • Indirizzo di origine: seleziona Qualsiasi (o un'interfaccia specifica).
    • Protocollo IP: seleziona IPv4.
    • Server di log remoti: inserisci BINDPLANE_IP:514 nel primo campo disponibile. Sostituisci BINDPLANE_IP con l'indirizzo IP dell'host dell'agente Bindplane.
  6. Nella sezione Contenuti syslog remoto, seleziona le categorie di log da inoltrare:
    • Eventi di sistema
    • Eventi firewall
    • Eventi DNS (Resolver/unbound, Forwarder/dnsmasq)
    • Eventi DHCP (servizio DHCP)
    • Eventi PPP
    • Eventi di autenticazione (autenticazione del portale, RADIUS)
    • Eventi VPN (IPsec, OpenVPN, L2TP)
    • Gateway Events (Monitoraggio gateway)
    • Eventi di routing (daemon di routing)
    • Eventi NTP
    • Pacchetti (pacchetti installati)
  7. Fai clic su Salva.
  8. Verifica che i messaggi syslog vengano inviati controllando i log dell'agente Bindplane.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
applicazione principal.application Il valore viene estratto dal messaggio di log utilizzando i pattern grok. Per i messaggi syslog, il nome dell'applicazione si trova in genere dopo il nome host e il timestamp.
comando principal.process.command_line Estratto dal campo della descrizione quando il log indica l'esecuzione di un comando.
descrizione metadata.description Il campo della descrizione è mappato alla descrizione dei metadati UDM, ad eccezione dei log dell'applicazione syslog-ng, in cui è mappato a metadata.description. Per gli eventi DHCP, il tipo dhcp_type viene anteposto alla descrizione.
dhcp_type metadata.product_event_type Il tipo di messaggio DHCP (ad es. DHCPDISCOVER, DHCPOFFER) viene estratto e mappato.
host intermediary.hostname OR intermediary.ip Se il valore host è un indirizzo IP valido, viene mappato a intermediary.ip. In caso contrario, viene mappato a intermediary.hostname.
host principal.hostname, principal.asset.hostname Quando non è presente alcun IP principale, l'host viene trattato come nome host principale.
mac principal.mac, network.dhcp.chaddr L'indirizzo MAC associato a una richiesta DHCP viene estratto e mappato.
src_ip principal.ip, principal.asset.ip Estratto da formati di log specifici utilizzando un pattern grok.
src_mac principal.mac Estratti da formati di log specifici utilizzando un pattern grok.
dst_mac target.mac Estratto da formati di log specifici utilizzando un pattern grok.
timestamp metadata.event_timestamp Il timestamp viene estratto dal messaggio di log e convertito in un formato timestamp UDM. Se disponibili, le informazioni sul fuso orario (tz) vengono aggiunte al timestamp prima della conversione.
timestamp_no_year metadata.event_timestamp Se è presente un timestamp senza anno, viene analizzato e l'anno corrente viene aggiunto durante il processo di analisi.
utente principal.user.userid Il nome utente associato a un evento viene estratto e mappato.
colonna1 security_result.rule_id Mappata dalla prima colonna CSV se la descrizione è in formato CSV.
column6 security_result.rule_type Mappata dalla sesta colonna CSV se la descrizione è in formato CSV.
column7 security_result.action Mappata dalla settima colonna CSV se la descrizione è in formato CSV. Convertito in "BLOCK" (BLOCCA) o "ALLOW" (CONSENTI).
column8 network.direction Mappata dalla ottava colonna CSV se la descrizione è in formato CSV. Convertito in "INBOUND" o "OUTBOUND".
column13 network.ip_protocol (se UDP o ICMP) Mappato dalla tredicesima colonna CSV se la descrizione è in formato CSV e il protocollo è UDP o ICMP. Per gli eventi TCP/UDP, viene utilizzato per creare un campo aggiuntivo con la chiave "Id".
column16 principal.ip, principal.asset.ip (se IPv6 e column9 è 6) Mappato dalla sedicesima colonna CSV se la descrizione è in formato CSV e la colonna9 è 6. Per gli eventi TCP/UDP, viene utilizzato per l'identificazione del protocollo se column9 è 4.
column17 target.ip, target.asset.ip (se IPv6 e non ip_failure) Mappato dalla diciassettesima colonna CSV se la descrizione è in formato CSV, la colonna 9 è 6 e il valore è un IP valido. Per gli eventi TCP/UDP, viene utilizzato per l'identificazione del protocollo.
column18 principal.port (se UDP) Mappato dalla diciottesima colonna CSV se la descrizione è in formato CSV e il protocollo è UDP. Per gli eventi TCP/UDP, viene mappato a network.received_bytes.
column19 target.port (se UDP) Mappato dalla diciannovesima colonna CSV se la descrizione è in formato CSV e il protocollo è UDP. Per gli eventi DHCP, viene mappato a network.dhcp.yiaddr. Per gli altri eventi, viene mappato a principal.ip, principal.asset.ip.
column20 additional.fields (chiave: "data_length") (se UDP) Mappato dalla ventesima colonna CSV se la descrizione è in formato CSV e il protocollo è UDP. Per gli altri eventi, viene mappato a target.ip, target.asset.ip.
column21 principal.port (se TCP/UDP) Mappato dalla ventunesima colonna CSV se la descrizione è in formato CSV e il protocollo è TCP o UDP.
column22 target.port (se TCP/UDP) Mappato dalla ventiduesima colonna CSV se la descrizione è in formato CSV e il protocollo è TCP o UDP.
column23 additional.fields (chiave: "data_length") (se TCP/UDP) Mappato dalla ventitreesima colonna CSV se la descrizione è in formato CSV e il protocollo è TCP o UDP.
column24 additional.fields (key: "tcp_flags") (se TCP) Mappato dalla ventiquattresima colonna CSV se la descrizione è in formato CSV e il protocollo è TCP.
column25 additional.fields (key: "sequence_number") (se TCP/UDP) Mappato dalla venticinquesima colonna CSV se la descrizione è in formato CSV e il protocollo è TCP o UDP.
column29 additional.fields (key: "tcp_options") (se TCP) Mappato dalla ventinovesima colonna CSV se la descrizione è in formato CSV e il protocollo è TCP.
compression_algo additional.fields (key: "Compression Algorithm") Estratto dal campo della descrizione e aggiunto come campo aggiuntivo.
decr metadata.description Estratto dal campo del messaggio e utilizzato come descrizione.
principal_ip principal.ip, principal.asset.ip Estratto dal campo Descrizione e rappresenta l'indirizzo IP principale.
principal_username principal.user.userid Estratto dal campo della descrizione e rappresenta il nome utente dell'entità.
stato security_result.detection_fields (chiave: "status") Estratto dal campo della descrizione e aggiunto come campo di rilevamento all'interno del risultato di sicurezza.
target_host target.hostname, target.asset.hostname Estratto dal campo della descrizione e rappresenta il nome host di destinazione.
src_port principal.port Estratto dal campo Descrizione e rappresenta la porta di origine. Determinato in base a vari campi di log e alla logica del parser. Può essere NETWORK_CONNECTION, NETWORK_DHCP, STATUS_UPDATE o GENERIC_EVENT. Codificato come "PFSENSE". Impostato come hardcoded su "PFSENSE". Impostato come hardcoded su "PFSENSE". Imposta "DHCP" per gli eventi DHCP. Impostato su "BOOTREQUEST" per DHCPDISCOVER e DHCPREQUEST e su "BOOTREPLY" per DHCPOFFER e DHCPACK. Impostato su "DISCOVER", "REQUEST", "OFFER" o "ACK" in base al campo dhcp_type.
pid intermediary.process.pid Mappato dal log delle modifiche
application intermediary.application Mappato dal log delle modifiche
ipv4" and "ipv6 principal.ip Mappato dal log delle modifiche
security_result.category AUTH_VIOLATION Mappato dal log delle modifiche
method network.http.method Mappato dal log delle modifiche
referer network.http.referral_url Mappato dal log delle modifiche
response_code network.http.response_code Mappato dal log delle modifiche
user_agent network.http.user_agent Mappato dal log delle modifiche
sent_bytes network.sent_bytes Mappato dal log delle modifiche
url target.url Mappato dal log delle modifiche
http_version additional.fields Mappato dal log delle modifiche
column19" which is "source-address network.dhcp.yiaddr Mappato dal log delle modifiche
column17" which is "destination-address target.ip Mappato dal log delle modifiche
column16" which is "source-address principal.ip Mappato dal log delle modifiche
column12" which is "hop_limit additional.fields Mappato dal log delle modifiche
column13" which is "ip_protocol network.ip_protocol Mappato dal log delle modifiche
ttl additional.fields Mappato dal log delle modifiche
Offset additional.fields Mappato dal log delle modifiche
Data length additional.fields Mappato dal log delle modifiche
Length additional.fields Mappato dal log delle modifiche
Sequence-number additional.fields 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.