Raccogliere i log di Netgate pfSense

Supportato in:

Questo documento descrive come raccogliere i log di Netgate pfSense utilizzando un forwarder di Google Security Operations.

Per ulteriori informazioni, vedi Importazione dei dati in Google SecOps.

Un'etichetta di importazione identifica l'analizzatore sintattico che normalizza i dati dei log non elaborati in formato UDM strutturato. Le informazioni contenute in questo documento si applicano all'analizzatore con l'etichetta di importazione PFSENSE.

Configurare Netgate pfSense

  1. Accedi all'interfaccia di pfSense con le credenziali di amministratore.
  2. Nelle impostazioni del log globale, procedi nel seguente modo:
    1. Seleziona Stato > Log di sistema > Impostazioni.
    2. Nella scheda Impostazioni, seleziona Opzioni di registrazione generale e svolgi i seguenti passaggi:
      1. Nel campo Formato messaggio log, seleziona syslog (RFC 5424, con timestamp RFC 3339 con precisione a microsecondi).
      2. Nel campo Registra i blocchi predefiniti del firewall, seleziona le seguenti caselle di controllo:
        • Registrare i pacchetti corrispondenti alle regole di blocco predefinite nel set di regole
        • Pacchetti di log corrispondenti alle regole di passaggio predefinite inserite nel set di regole
        • Registrare i pacchetti bloccati dalle regole "Blocca reti bogon"
        • Registrare i pacchetti bloccati dalle regole "Blocca reti private"
  3. Per salvare le nuove impostazioni, fai clic su Salva.

Invia i log della firewall a Google SecOps

  1. Nelle impostazioni del log globale, seleziona Stato > Log di sistema > Impostazioni.
  2. Nella scheda Impostazioni, seleziona Opzioni di logging remoto e svolgi i seguenti passaggi:
    • Nel campo Abilita il logging remoto, seleziona la casella di controllo Invia i messaggi di log al server syslog remoto.
    • Nel campo Indirizzo di origine, mantieni il valore predefinito Qualsiasi.
    • Nel campo Protocollo IP, se l'indirizzo di origine è selezionato come valore predefinito, non è necessario specificare l'indirizzo IP. In caso contrario, inserisci l'indirizzo IP.
    • In Server di log remoti, specifica l'indirizzo IP del forwarder di Google SecOps.
    • In Contenuti syslog remoti, seleziona la casella di controllo Eventi firewall.
  3. Per salvare le modifiche, fai clic su Salva.

Configura il forwarder di Google SecOps per importare i log di pfSense di Netgate

  1. Seleziona Impostazioni SIEM > Inoltratori.
  2. Fai clic su Aggiungi nuovo mittente.
  3. Nel campo Nome del forwarder, inserisci un nome univoco per il forwarder.
  4. Fai clic su Invia e poi su Conferma. Il forwarder viene aggiunto e viene visualizzata la finestra Aggiungi configurazione del collettore.
  5. Nel campo Nome del raccoglitore, digita un nome univoco per il raccoglitore.
  6. Seleziona pfSense come Tipo di log.
  7. Nel campo Tipo di raccoglitore, seleziona Syslog.
  8. Configura i seguenti parametri di input obbligatori:
    • Protocollo: specifica il protocollo di connessione utilizzato dal collector per ascoltare i dati syslog.
    • Indirizzo: specifica l'indirizzo IP o il nome host di destinazione in cui risiede il collector e ascolta i dati syslog.
    • Porta: specifica la porta di destinazione in cui risiede il raccoglitore e che ascolta i dati syslog.
  9. Fai clic su Invia.

Per ulteriori informazioni sui forwarder di Google SecOps, consulta Gestire le configurazioni dei forwarder tramite l'interfaccia utente di Google SecOps.

Se riscontri problemi durante la creazione dei forwarder, contatta l'assistenza Google SecOps.

Riferimento alla mappatura dei campi

Questo parser del firewall pfSense estrae i campi dai messaggi syslog utilizzando pattern grok, gestendo vari formati di log, inclusi gli eventi DHCP e firewall. Successivamente, mappa questi campi estratti all'UDM, arricchendo i dati con informazioni contestuali come indirizzi IP, indirizzi MAC, nomi utente e dettagli della rete.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
applicazione principal.application Il valore viene estratto dal messaggio del 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 un'esecuzione di comando.
description 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, 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 OPPURE 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 Se non è presente alcun IP principale, l'host viene considerato come il 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 Estratto 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. Le informazioni sul fuso orario (tz) vengono aggiunte al timestamp prima della conversione, se disponibili.
timestamp_no_year metadata.event_timestamp Se è presente un timestamp senza anno, viene analizzato e l'anno corrente viene aggiunto durante la procedura di analisi.
utente principal.user.userid Il nome utente associato a un evento viene estratto e mappato.
colonna1 security_result.rule_id Mappato dalla prima colonna CSV se la descrizione è in formato CSV.
column6 security_result.rule_type Mappato dalla sesta colonna CSV se la descrizione è in formato CSV.
column7 security_result.action Mappato dalla settima colonna CSV se la descrizione è in formato CSV. Convertito in "BLOCK" o "ALLOW".
column8 network.direction Mappato dall'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 chiave "Id".
column16 principal.ip, principal.asset.ip (se IPv6 e colonna 9 è 6) Mappato dalla sedicesima colonna CSV se la descrizione è in formato CSV e la colonna 9 è 6. Per gli eventi TCP/UDP, viene utilizzato per l'identificazione del protocollo se la colonna 9 è 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 indirizzo 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, è 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, è mappato a network.dhcp.yiaddr. Per altri eventi, è 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 altri eventi, è 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 (chiave: "tcp_flags") (se TCP) Mappato dalla ventiquattresima colonna CSV se la descrizione è in formato CSV e il protocollo è TCP.
column25 additional.fields (chiave: "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 (chiave: "tcp_options") (se TCP) Mappato dalla ventinovesima colonna CSV se la descrizione è in formato CSV e il protocollo è TCP.
compression_algo additional.fields (chiave: "Compression Algorithm") Estratte dal campo Descrizione e aggiunte come campo aggiuntivo.
decr metadata.description Estratto dal campo del messaggio e utilizzato come descrizione.
principal_ip principal.ip, principal.asset.ip Viene estratto dal campo della descrizione e rappresenta l'indirizzo IP principale.
principal_username principal.user.userid Estratto dal campo della descrizione e rappresenta il nome utente principale.
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 Viene estratto dal campo della descrizione e rappresenta il nome host di destinazione.
src_port principal.port Viene estratto dal campo della 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. Hardcoded su "PFSENSE". Hardcoded su "PFSENSE". Hardcoded su "PFSENSE". Imposta su "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.

Modifiche

2024-05-08

  • Sono stati aggiunti pattern Grok per analizzare il campo "description".
  • "principal_ip" è stato mappato a "principal.ip" e "principal.asset.ip".
  • "src_port" è stato mappato a "principal.port".
  • "compression_algo" è stato mappato a "additional.fields".
  • "status" è stato mappato a "security_result.detection_fields".
  • "principal_username" è stato mappato a "principal.user.userid".
  • "target_host" è stato mappato a "target.hostname" e "target.asset.hostname".

2023-05-05

  • È stata aggiunta la conversione alle lettere maiuscole prima della mappatura di "network.ip_protocol".
  • "colonna18" è stata mappata a "principal.port" quando il protocollo è presente in "colonna13".
  • "colonna19" è stata mappata a "target.port" quando il protocollo è presente in "colonna13".
  • "colonna20" è stata mappata a "additional.fields" come "data-length" quando il protocollo è presente in "colonna13".

2023-02-20

  • È stato aggiunto il pattern Grok per supportare il nuovo formato dei log filtrati e il formato syslog-ng.

2022-10-04

  • Il nome del dispositivo firewall è stato rimappato in intermediary.hostname anziché in principal.hostname per i log in cui event_types è "NETWORK_CONNECTION".

2022-09-05

  • Enhancement-
  • Per i log in formato CSV, i seguenti campi sono mappati.
  • È stato aggiunto il pattern Grok per recuperare "IP" e "MAC".
  • Ho mappato "colonna19", che corrisponde a "source-address", a "network.dhcp.yiaddr".
  • "security_result.action" è stato mappato su "ALLOW" quando "column7" è uguale a "pass".
  • Quando "colonna9" è uguale a "6", che indica "IPv6", i seguenti campi vengono mappati:
  • "colonna17", ovvero "destination-address", è stata mappata a "target.ip".
  • È stata mappata "colonna16", che corrisponde a "source-address", a "principal.ip".
  • "event_type" è stato mappato a "NETWORK_CONNECTION" quando "column16" e "column17" non sono null.
  • "colonna12", che corrisponde a "hop_limit", è stata mappata a "additional.fields".
  • "colonna13", ovvero "ip_protocol", è stata mappata a "network.ip_protocol".
  • È stata eseguita la migrazione degli analizzatori sintattici personalizzati nell'analizzatore sintattico predefinito.
  • È stato aggiunto un controllo condizionale per impostare "event_type" su "STATUS_UPDATE"

2022-06-30

  • "ttl" è stato mappato a "additional.fields".
  • "Id" è stato mappato a "additional.fields".
  • "Offset" è stato mappato a "additional.fields".
  • "Lunghezza dati" è stato mappato a "additional.fields".
  • "Lunghezza" è stato mappato a "additional.fields".
  • "Numero-di-serie" è stato mappato a "additional.fields".

2022-04-11

  • Analizzatore appena creato