Raccogliere i log di Netgate pfSense
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
- Accedi all'interfaccia di pfSense con le credenziali di amministratore.
- Nelle impostazioni del log globale, procedi nel seguente modo:
- Seleziona Stato > Log di sistema > Impostazioni.
- Nella scheda Impostazioni, seleziona Opzioni di registrazione generale e svolgi i seguenti passaggi:
- Nel campo Formato messaggio log, seleziona syslog (RFC 5424, con timestamp RFC 3339 con precisione a microsecondi).
- 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"
- Per salvare le nuove impostazioni, fai clic su Salva.
Invia i log della firewall a Google SecOps
- Nelle impostazioni del log globale, seleziona Stato > Log di sistema > Impostazioni.
- 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.
- Per salvare le modifiche, fai clic su Salva.
Configura il forwarder di Google SecOps per importare i log di pfSense di Netgate
- Seleziona Impostazioni SIEM > Inoltratori.
- Fai clic su Aggiungi nuovo mittente.
- Nel campo Nome del forwarder, inserisci un nome univoco per il forwarder.
- Fai clic su Invia e poi su Conferma. Il forwarder viene aggiunto e viene visualizzata la finestra Aggiungi configurazione del collettore.
- Nel campo Nome del raccoglitore, digita un nome univoco per il raccoglitore.
- Seleziona pfSense come Tipo di log.
- Nel campo Tipo di raccoglitore, seleziona Syslog.
- 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.
- 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