Raccogliere i log di Forescout NAC
Questo documento spiega come importare i log di Forescout Network Access Control (NAC) in Google Security Operations utilizzando Bindplane. Il parser gestisce i log in formato syslog e CEF di Forescout NAC. Estrae i campi utilizzando i pattern grok, li mappa al modello di dati unificato (UDM) e classifica gli eventi in base a parole chiave e campi estratti, gestendo l'accesso/la disconnessione, le connessioni di rete, gli eventi di posta e gli aggiornamenti dello stato del sistema. Viene implementata una logica specifica per la gestione degli eventi "CounterACT" e "Virtual Firewall", inclusi il mapping della gravità e l'arricchimento del contesto utente.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps
- Windows 2016 o versioni successive oppure un host Linux con
systemd
- Se l'esecuzione avviene tramite un proxy, le porte del firewall sono aperte
- Deve essere installata la versione 8.0 o successiva di ForeScout CounterAct
- Deve essere installato il plug-in Syslog v3.5 del modulo di estensione principale ForeScout CounterAct
- Accesso con privilegi all'appliance Forescout e al plug-in CounterACT
Recuperare il file di autenticazione importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Recuperare l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- 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
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installazione di Linux
- Apri un terminale con privilegi di root o sudo.
Esegui questo comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Risorse aggiuntive per l'installazione
Per ulteriori opzioni di installazione, consulta la guida all'installazione.
Configura l'agente Bindplane per importare Syslog e inviarli a Google SecOps
- Accedi al file di configurazione:
- Individua il file
config.yaml
. In genere, si trova nella directory/etc/bindplane-agent/
su Linux o nella directory di installazione su Windows. - Apri il file utilizzando un editor di testo (ad esempio
nano
,vi
o Blocco note).
- Individua il file
Modifica il file
config.yaml
come segue:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: 'FORESCOUT_NAC' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Sostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.
Sostituisci
<customer_id>
con l'ID cliente effettivo.Aggiorna
/path/to/ingestion-authentication-file.json
al percorso in cui è stato salvato il file di autenticazione nella sezione Recupera il file di autenticazione per l'importazione di Google SecOps.
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart bindplane-agent
Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Installa il plug-in Syslog di CounterACT
- Vai alla pagina Forescount Base Plugins e scarica il file del plug-in .fpi.
- Salva il file sul computer su cui è installata la console CounterACT.
- Accedi alla console CounterACT.
- Seleziona Opzioni > Plug-in > Installa.
- Sfoglia e seleziona il file FPI del plug-in salvato.
- Fai clic su Installa.
- Accetta il contratto di licenza per continuare.
- Al termine dell'installazione, fai clic su Chiudi.
- Seleziona il plug-in dal riquadro Plug-in e fai clic su Avvia.
- Seleziona le CounterACT Appliances su cui avviare il plug-in (è consigliabile eseguire il plug-in su tutte le appliance nell'ambiente).
- Fai clic su OK.
- Fai clic su Chiudi.
Configurare Syslog nel plug-in Syslog di Forescout CounterACT
- Nel riquadro Plug-in, fai clic su Syslog > Configura.
- Seleziona un'appliance o Enterprise Manager dalla finestra di dialogo e fai clic su Ok.
- In Invia eventi a, fai clic su Aggiungi.
- Fornisci i seguenti dettagli di configurazione:
- Indirizzo server: inserisci l'indirizzo IP dell'agente Bindplane.
- Porta server: inserisci il numero di porta dell'agente Bindplane (ad esempio,
514
per UDP). - Protocollo server: seleziona UDP.
- Identità: campo di testo libero per identificare il messaggio syslog.
- (Facoltativo) Struttura: struttura del messaggio Syslog trasmessa come parte
del campo Priorità del messaggio. Se il valore della struttura non è menzionato, è
impostato su
local5
. - Gravità: seleziona Informazioni.
- Vai alla scheda Syslog Trigger.
- Non selezionare la casella di controllo Invia solo i messaggi generati dall'azione "Invia messaggio a Syslog".
- Seleziona solo la casella di controllo Includi timestamp e identificatore del dispositivo CounterACT in tutti i messaggi.
- Fai clic su Opzioni per definire quali tipi di eventi attivano i messaggi syslog:
- Includi i log delle policy NAC.
- Includi eventi di corrispondenza e mancata corrispondenza delle norme NAC.
- Seleziona altri eventi, se disponibili.
- Vai alla scheda Configurazione azione predefinita.
- Fornisci i seguenti dettagli di configurazione:
- Indirizzo server: inserisci l'indirizzo IP dell'agente Bindplane.
- Porta server: inserisci il numero di porta dell'agente Bindplane (ad esempio,
514
per UDP). - Protocollo server: seleziona UDP.
- Identità messaggio: campo di testo libero per identificare il messaggio Syslog.
- (Facoltativo) Struttura: struttura del messaggio Syslog trasmessa come parte del campo Priorità del messaggio. Se il valore della struttura non è menzionato, è impostato su
local5
. - Gravità: seleziona Informazioni.
- Fai clic su OK.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
act |
security_result.action_details |
Mappato direttamente dal campo act nei log CEF. |
app |
network.application_protocol |
Mappato direttamente dal campo app nei log CEF. |
Available_memory |
additional.fields |
Estratto da kv_data quando event_type è "Statistiche di sistema". La chiave è "Available memory" (Memoria disponibile) e il valore è la stringa estratta. |
Available_swap |
additional.fields |
Estratto da kv_data quando event_type è "Statistiche di sistema". La chiave è "Available swap" e il valore è la stringa estratta. |
application_status |
additional.fields |
Estratto da kv_data quando event_type è "Stato della richiesta". La chiave è "Stato dell'applicazione" e il valore è la stringa estratta. |
Assigned_hosts |
additional.fields |
Estratto da kv_log_data quando event_type è "Stato della richiesta". La chiave è "Assigned hosts" (Host assegnati) e il valore è la stringa estratta. |
Category |
security_result.description |
Parte di security_result.description quando et_lower è "nac policy log". Concatenato con altri dettagli. |
command |
principal.process.command_line |
Estratto dal campo rnmsg nei log CEF quando inizia con "command:". |
Connected_clients |
additional.fields |
Estratto da kv_log_data quando event_type è "Stato della richiesta". La chiave è "Connected clients" (Client connessi) e il valore è la stringa estratta. |
CPU_usage |
additional.fields |
Estratto da kv_data quando event_type è "Statistiche di sistema". La chiave è "Utilizzo CPU" e il valore è la stringa estratta. |
cs1 |
additional.fields |
Mappato direttamente dal campo cs1 nei log CEF. La chiave è "Compliancy Policy Name". |
cs2 |
additional.fields |
Mappato direttamente dal campo cs2 nei log CEF. La chiave è "Compliancy Policy Subrule Name". |
cs3 |
additional.fields |
Mappato direttamente dal campo cs3 nei log CEF. La chiave è "Host Compliancy Status". |
cs4 |
additional.fields |
Mappato direttamente dal campo cs4 nei log CEF. La chiave è "Compliancy Event Trigger". |
data |
security_result.description |
Utilizzato in varie parti del parser per estrarre informazioni e contribuire ai campi UDM finali. Non mappato direttamente a un singolo campo UDM. |
details |
security_result.description |
Utilizzato per compilare security_result.description in diversi casi, ad esempio durante l'analisi degli eventi "Log" e delle modifiche alla sessione utente. Potrebbe essere analizzato ulteriormente per informazioni specifiche. |
Destination |
target.ip , target.hostname |
Analizzato da kv_data o data . Se può essere convertito in un indirizzo IP, viene mappato su target.ip . In caso contrario, viene mappato a target.hostname . |
deviceExternalId |
about.asset.asset_id |
Mappato direttamente dal campo deviceExternalId nei log CEF, con il prefisso "Forescout.CommandCenter:". |
dhost |
target.hostname |
Mappato direttamente dal campo dhost nei log CEF. |
dmac |
target.mac |
Mappato direttamente dal campo dmac nei log CEF. |
dntdom |
target.administrative_domain |
Mappato direttamente dal campo dntdom nei log CEF. |
dst |
target.ip |
Mappato direttamente dal campo dst nei log CEF. |
dpt |
target.port |
Mappato direttamente dal campo dpt nei log CEF. |
duser |
target.user.user_display_name |
Mappato direttamente dal campo duser nei log CEF. |
dvc |
about.ip |
Mappato direttamente dal campo dvc nei log CEF. |
dvchost |
about.hostname |
Mappato direttamente dal campo dvchost nei log CEF. |
EM_connection_status |
additional.fields |
Estratto da kv_log_data quando event_type è "Stato della richiesta". La chiave è "EM connection status" (stato della connessione EM) e il valore è la stringa estratta. |
Engine_status |
additional.fields |
Estratto da kv_log_data quando event_type è "Stato della richiesta". La chiave è "Engine status" (Stato del motore) e il valore è la stringa estratta. |
event_type |
metadata.description , security_result.summary |
Analizzato dal messaggio di log. Utilizzato per determinare il tipo di evento UDM e altri campi. Se l'evento è di tipo"GENERIC_EVENT", viene utilizzato anche per la descrizione. |
eventtype |
additional.fields |
Mappato direttamente dal campo eventtype nei log CEF. La chiave è "eventtype". |
externalId |
metadata.product_log_id |
Mappato direttamente dal campo externalId nei log CEF. |
from\[...\] to\[...\] |
principal.ip , target.ip |
Estrae gli IP di origine e destinazione dal pattern "da[...] a[...]". |
Host |
principal.ip , principal.hostname |
Analizzato da kv_data quando et_lower è "block event". Se convertibile in un IP, mappato a principal.ip ; altrimenti, a principal.hostname . |
Hostname |
principal.hostname , principal.asset.hostname |
Mappato a principal.hostname e principal.asset.hostname se presente negli eventi di modifica della proprietà rilevati. |
Installed_Plugins |
additional.fields |
Estratto da kv_log_data quando event_type è "Stato della richiesta". La chiave è "Installed Plugins" (Plug-in installati) e il valore è la stringa estratta. |
iporhost |
intermediary.ip , intermediary.hostname |
Analizzato da header_data . Se convertibile in un IP, mappato a intermediary.ip ; altrimenti, a intermediary.hostname . |
Is Virtual Firewall blocking rule |
security_result.action , security_result.rule_name |
Se "true", imposta security_result.action su "BLOCK" e security_result.rule_name su "Virtual Firewall blocking". |
log_description |
security_result.summary |
Mappato direttamente su security_result.summary , se presente. |
log_type |
metadata.log_type |
Impostato sul valore costante "FORESCOUT_NAC". |
MAC |
principal.mac |
Analizzato da kv_data negli eventi di modifica della proprietà rilevati e formattato come indirizzo MAC. |
mail_from |
network.email.from |
Mappato direttamente dal campo mail_from estratto da mail_details . |
mail_subject |
network.email.subject |
Mappato direttamente dal campo mail_subject estratto da mail_details . |
mail_to |
network.email.to |
Mappato direttamente dal campo mail_to estratto da mail_details . |
Match |
security_result.rule_name |
Mappato direttamente dal campo Match quando et_lower è "nac policy log". |
metadata.event_type |
metadata.event_type |
Determinato da varie condizioni nel parser, tra cui la presenza di campi e parole chiave specifici nel messaggio di log. Il valore predefinito è GENERIC_EVENT e viene aggiornato in base ai dati analizzati. Esempi: USER_LOGIN , USER_LOGOUT , NETWORK_CONNECTION , SCAN_NETWORK , STATUS_UPDATE , EMAIL_TRANSACTION e USER_UNCATEGORIZED . |
metadata.product_name |
metadata.product_name |
Imposta il valore "FORESCOUT NAC" per la maggior parte degli eventi o il valore del campo product , se esistente. Per gli eventi CEF, è impostato su "CounterAct". |
metadata.vendor_name |
metadata.vendor_name |
Imposta "FORESCOUT" per la maggior parte degli eventi. Per gli eventi CEF, viene estratto dal campo cs1Label , se esistente, o impostato su "ForeScout Technologies". |
msg |
metadata.description |
Mappato direttamente dal campo msg nei log CEF. |
pid |
intermediary.process.pid |
Mappato direttamente dal campo pid estratto da header_data . |
policy_details |
security_result.description |
Parte di security_result.description quando et_lower è "nac policy log". Concatenato con altri dettagli. |
product |
metadata.product_name |
Mappato direttamente su metadata.product_name , se presente. |
proto |
network.ip_protocol |
Mappato direttamente dal campo proto nei log CEF. |
Reason |
security_result.description |
Mappato direttamente dal campo Reason quando et_lower è "block event". |
resource |
principal.resource.name |
Mappato direttamente dal campo resource nei log CEF. |
rnmsg |
security_result.description , principal.process.command_line |
Se inizia con "command:", la parte dopo "command:" viene mappata a principal.process.command_line . In caso contrario, viene mappato a security_result.description . |
rt |
metadata.event_timestamp |
Mappato direttamente dal campo rt nei log CEF, convertito in un timestamp. |
Rule |
security_result.rule_id |
Mappato direttamente dal campo Rule quando et_lower è "nac policy log". |
security_result.severity |
security_result.severity |
Derivato dal campo severity_level . 0-3 corrisponde a BASSA, 4-6 a MEDIA, 7-8 ad ALTA e 9-10 a CRITICA. |
security_result.severity_details |
security_result.severity_details |
Mappato direttamente dal campo severity nei log CEF. |
Service |
target.port , network.ip_protocol |
Analizzato per estrarre porta e protocollo. La porta è mappata a target.port e il protocollo a network.ip_protocol . |
session_id |
network.session_id |
Mappato direttamente dal campo session_id . |
severity |
security_result.severity_details |
Mappato direttamente dal campo severity nei log CEF. |
severity_level |
security_result.severity |
Utilizzato per determinare security_result.severity . |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.