Raccogli i log VPN di Cisco
Versione parser: 22.0
Questo documento spiega come importare i log VPN Cisco ASA in Google Security Operations utilizzando l'agente Bindplane.
Il parser estrae i campi dai messaggi syslog della VPN Cisco ASA utilizzando i pattern grok, gestendo sia i formati syslog standard sia le strutture dei messaggi alternative. Mappa i campi estratti nel modello di dati unificato (UDM) e classifica gli eventi in base agli ID evento ASA.
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 Cisco ASA
- Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
- Accesso privilegiato a Cisco ASA
Recuperare il file di autenticazione dell'importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione dell'acquisizione.
Salva il file in modo sicuro sul sistema in cui verrà installato l'agente 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 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" /quietAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sc query observiq-otel-collectorIl servizio dovrebbe essere visualizzato come IN ESECUZIONE.
Installazione di Linux
- Apri un terminale con privilegi 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.shAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sudo systemctl status observiq-otel-collectorIl 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
Individua il file di configurazione
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifica il file di configurazione
Sostituisci l'intero contenuto di
config.yamlcon la seguente configurazione:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/cisco_vpn: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: CISCO_VPN raw_log_field: body service: pipelines: logs/cisco_vpn_to_chronicle: receivers: - udplog exporters: - chronicle/cisco_vpn
Parametri di configurazione
Sostituisci i seguenti segnaposto:
Configurazione del ricevitore:
listen_address: Indirizzo IP e porta da ascoltare:0.0.0.0per ascoltare su tutte le interfacce (consigliato)- La porta
514è la porta syslog standard (richiede l'accesso root su Linux; utilizza1514per l'accesso non root)
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
- Linux:
customer_id: ID cliente copiato dalla console Google SecOpsendpoint: 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.
- Stati Uniti:
Salvare il file di configurazione
- Dopo la modifica, salva il file:
- Linux: premi
Ctrl+O, poiEntere infineCtrl+X. - Windows: fai clic su File > Salva.
- Linux: premi
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart observiq-otel-collectorVerifica che il servizio sia in esecuzione:
sudo systemctl status observiq-otel-collectorControlla 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-collectorConsole dei servizi:
- Premi
Win+R, digitaservices.msce premi Invio. - Individua observIQ OpenTelemetry Collector.
- Fai clic con il tasto destro del mouse e seleziona Riavvia.
Verifica che il servizio sia in esecuzione:
sc query observiq-otel-collectorControlla i log per individuare eventuali errori:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Premi
Configurare syslog per la VPN Cisco ASA
- Apri Cisco ASDM.
- Vai a Configurazione > Funzionalità > Proprietà > Registrazione > Configurazione della registrazione.
- Seleziona la casella di controllo Abilita il logging per attivare syslog.
- Seleziona Syslog Servers (Server Syslog) in Logging (Registrazione) e fai clic su Add (Aggiungi).
- Inserisci i seguenti dettagli di configurazione nella finestra Aggiungi server Syslog:
- Interfaccia: seleziona l'interfaccia per la comunicazione in uscita.
- Indirizzo IP: inserisci l'indirizzo IP dell'agente Bindplane.
- Protocollo: seleziona UDP.
- Porta: inserisci il numero di porta dell'agente Bindplane.
- Fai clic su OK.
- Seleziona Filtri di logging nella sezione Logging.
- Seleziona Server Syslog e fai clic su Modifica.
- Seleziona Informativo dall'elenco come Filtro per gravità.
- Fai clic su OK.
- Fai clic su Applica.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
accesslist |
target.resource.name |
Estratto da message_info quando eventtype è "ASA-4-106103". Rappresenta il nome dell'elenco per gli accessi. |
action |
security_result.action |
Derivato dal parser in base alle parole chiave nel messaggio di log (ad es. "Nega", "Rifiuta", "Consenti", "Accetta"). Maps per CONSENTIRE o BLOCCARE. |
action |
security_result.action_details |
Il valore della stringa non elaborata dell'azione intrapresa (ad es. "consentito", "negato", "disconnesso"). |
app_name |
principal.application |
Il nome dell'applicazione utilizzata dal principal (ad es. "CLI"). Estratto da message_details per gli ID evento 111008, 111009 e 111010. |
assigned_ipv4 |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
assigned_ipv6 |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
bytes_rcv |
network.received_bytes |
Il numero di byte ricevuti nella sessione. Estratto da log_mssg per l'ID evento 113019. |
bytes_sent |
network.sent_bytes |
Il numero di byte inviati nella sessione. Estratto da log_mssg per l'ID evento 113019. |
cipher |
network.tls.cipher |
La crittografia utilizzata per la sessione SSL. Estratto da message_info per eventtype 725012. |
cisco_message_number |
security_result.rule_name |
Il numero del messaggio Cisco, estratto dal campo eventtype. |
cisco_severity |
security_result.severity_details |
Il livello di gravità Cisco non elaborato, estratto dal campo eventtype. |
command |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
cumulative_total_count.key |
security_result.outcomes.key |
La chiave "cumulative_total_count" viene aggiunta all'array security_result.outcomes. |
cumulative_total_count.value |
security_result.outcomes.value |
Il valore del conteggio totale cumulativo, estratto da message_info. |
current_average_rate.key |
security_result.outcomes.key |
La chiave "current_average_rate" viene aggiunta all'array security_result.outcomes. |
current_average_rate.value |
security_result.outcomes.value |
Il valore del tasso medio attuale, estratto da message_info. |
current_burst_rate.key |
security_result.outcomes.key |
La chiave "current_burst_rate" viene aggiunta all'array security_result.outcomes. |
current_burst_rate.value |
security_result.outcomes.value |
Il valore della velocità di burst attuale, estratto da message_info. |
desc |
metadata.description |
Descrizione dell'evento, estratta dal messaggio di log. Utilizzato quando non è disponibile una descrizione più specifica. |
description |
metadata.description |
Una descrizione più dettagliata dell'evento, estratta dal messaggio di log, se disponibile. |
destination_ip |
target.ip, target.asset.ip |
Indirizzo IP di destinazione, estratto da vari formati di messaggi di log. |
destination_ip_port |
target.port o network.application_protocol |
Porta di destinazione, estratta da vari formati di messaggi di log. Se il valore estratto non è un numero, viene considerato come il protocollo dell'applicazione. |
dst_email |
target.user.email_addresses o target.user.userid |
Indirizzo email o ID utente di destinazione, estratto da message_info. Se il valore corrisponde a un formato email, viene aggiunto a email_addresses; altrimenti, viene utilizzato come userid. |
dst_host |
target.hostname |
Nome host di destinazione, estratto da message_info. |
dst_ip |
target.ip, target.asset.ip |
Indirizzo IP di destinazione, estratto dal pattern grok principale o da altri pattern specifici. |
dst_port |
target.port |
Porta di destinazione, estratta dal pattern grok principale o da altri pattern specifici. |
duration |
network.session_duration |
Durata della sessione, estratta da message_details e convertita in secondi. |
event_date |
@timestamp |
La data e l'ora dell'evento, create da vari campi timestamp nel log non elaborato e analizzate utilizzando il filtro date. |
event_id |
metadata.product_event_type (parte di) |
Utilizzato in combinazione con event_severity per formare il campo metadata.product_event_type. |
event_name |
metadata.product_event_type (parte di) |
Utilizzato in combinazione con event_severity e event_type per formare il campo metadata.product_event_type, se disponibile. |
event_severity |
metadata.product_event_type (parte di), security_result.severity, is_alert, is_significant |
Utilizzato in combinazione con event_id o event_name e event_type per formare il campo metadata.product_event_type. Utilizzato anche per derivare i campi security_result.severity, is_alert e is_significant. |
event_type |
metadata.product_event_type (parte di) |
Utilizzato in combinazione con event_name e event_severity per formare il campo metadata.product_event_type, se disponibile. |
eventtype |
metadata.product_event_type, security_result.rule_name, security_result.severity_details, security_result.severity |
La stringa del tipo di evento, utilizzata per derivare i campi metadata.product_event_type, security_result.rule_name, security_result.severity_details e security_result.severity. |
fragment_id |
security_result.about.resource.id |
ID del frammento IP, estratto da message_details per l'ID evento 209005. |
group |
principal.group.group_display_name, principal.user.group_identifiers, target.user.group_identifiers |
Nome del gruppo, estratto da vari formati di messaggi di log. |
group_name |
principal.group.group_display_name |
Nome del gruppo estratto dal campo group quando è un nome host. |
has_principal_ip |
N/D | Variabile interna utilizzata per la logica, non mappata a UDM. |
has_target_ip |
N/D | Variabile interna utilizzata per la logica, non mappata a UDM. |
hostname |
principal.hostname, principal.asset.hostname |
Nome host del principal, estratto da vari formati di messaggi di log. |
hostname2 |
principal.hostname, principal.asset.hostname |
Nome host dell'entità, estratto come fallback quando hostname non è disponibile. |
icmp_code |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
icmp_dst_ip |
target.ip, target.asset.ip |
Indirizzo IP di destinazione da un messaggio di errore ICMP. |
icmp_id |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
icmp_src_ip |
principal.ip, principal.asset.ip |
Indirizzo IP di origine di un messaggio di errore ICMP. |
icmp_type |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
intermediary_ip |
principal.ip, principal.asset.ip |
Indirizzo IP intermediario, estratto da message_info per l'ID evento 111010. |
invalid_ip |
N/D | Variabile interna utilizzata per la logica, non mappata a UDM. |
ip_1 |
principal.ip, principal.asset.ip |
Indirizzo IP di origine estratto come fallback quando gli IP di origine e di destinazione sono gli stessi. |
ip_2 |
target.ip, target.asset.ip |
Indirizzo IP di destinazione estratto come fallback quando gli IP di origine e destinazione sono uguali. |
ipprotocol |
network.ip_protocol |
Protocollo IP, estratto da vari formati di messaggi di log e convertito in maiuscolo. |
issuer |
network.tls.client.certificate.issuer |
Emittente del certificato peer, estratto da message_details per l'ID evento 717037. |
local_proxy_ip |
intermediary.ip |
Indirizzo IP del proxy locale, estratto da message_details per l'ID evento 713041. |
log_mssg |
security_result.description, sr.action |
Utilizzato per compilare il campo security_result.description ed estrarre le azioni di autenticazione. |
login |
security_result.summary |
Stato di accesso, estratto da message_info. |
max_configured_rate.key |
security_result.outcomes.key |
La chiave "max_configured_rate" viene aggiunta all'array security_result.outcomes. |
max_configured_rate.value |
security_result.outcomes.value |
Il valore della tariffa massima configurata, estratto da message_info. |
message_details |
Vari campi | La parte principale del messaggio di log, contenente i dettagli dell'evento. Analizzato utilizzando vari pattern grok a seconda dell'ID evento. |
message_info |
metadata.description |
Utilizzato per compilare il campo metadata.description quando disponibile. |
observer |
observer.hostname o observer.ip |
Nome host o indirizzo IP dell'osservatore, estratto dal messaggio di log. |
observer_ip |
observer.ip |
Indirizzo IP dell'osservatore, estratto dal campo observer. |
peer_type |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
policy |
target.resource.name |
Nome del criterio, estratto da message_details per l'ID evento 113003. |
policy_name |
target.resource.name |
Nome della policy, estratto da message_details per gli ID evento 113009 e 113011. |
principal_ip |
principal.ip, principal.asset.ip |
Indirizzo IP principale, estratto da message_details per l'ID evento 113009. |
privilege_level_from |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
privilege_level_to |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
process |
principal.process.command_line |
Nome del processo, estratto da message_details per l'ID evento 711004. |
protocol |
network.ip_protocol o network.application_protocol |
Protocollo utilizzato nell'evento, estratto da vari formati di messaggi di log. Se il protocollo è un protocollo IP standard (ICMP, TCP, UDP, ESP), viene mappato a network.ip_protocol; in caso contrario, viene mappato a network.application_protocol. |
reason |
security_result.description |
Motivo dell'evento, estratto da message_details per l'ID evento 113016. |
remote_proxy_ip |
intermediary.ip |
Indirizzo IP proxy remoto, estratto da message_details per l'ID evento 713041. |
retrieved_file |
target.file.full_path |
Percorso del file recuperato, estratto da message_info. |
security_action |
security_result.action |
Azione di sicurezza, derivata dal parser in base al contesto dell'evento. |
security_category |
security_result.category |
Categoria di sicurezza, derivata dal parser in base al contesto dell'evento. |
security_result.description |
security_result.description |
Descrizione del risultato di sicurezza, estratta o derivata dal messaggio di log. |
security_result.severity |
security_result.severity |
Gravità del risultato di sicurezza, derivata dal campo event_severity. |
security_result.summary |
security_result.summary |
Riepilogo del risultato di sicurezza, estratto o derivato dal messaggio di log. |
sent_bytes |
network.sent_bytes |
Numero di byte inviati, estratti da message_info. |
ses_id |
network.session_id |
ID sessione, estratto da message_info. |
session_id |
network.session_id |
ID sessione, estratto da message_info. |
sess_type |
principal.hostname, principal.asset.hostname |
Tipo di sessione, estratto da log_mssg e utilizzato come nome host quando hostname non è disponibile. |
source_ip |
principal.ip, principal.asset.ip |
Indirizzo IP di origine, estratto da vari formati di messaggi di log. |
source_ip_port |
principal.port |
Porta di origine, estratta da vari formati di messaggi di log. |
src_email |
principal.user.email_addresses o principal.user.userid |
Indirizzo email o ID utente di origine, estratto da message_info. Se il valore corrisponde a un formato email, viene aggiunto a email_addresses; altrimenti, viene utilizzato come userid. |
src_ip |
principal.ip, principal.asset.ip |
Indirizzo IP di origine, estratto dal pattern grok principale o da altri pattern specifici. |
src_port |
principal.port |
Porta di origine, estratta dal pattern grok principale o da altri pattern specifici. |
src_user |
principal.user.user_display_name |
Nome visualizzato dell'utente di origine, estratto da message_details per gli ID evento 713049 e 713120. |
subject |
network.tls.client.certificate.subject |
Soggetto del certificato peer, estratto da message_details per l'ID evento 717037. |
summary |
security_result.summary |
Riepilogo dell'evento, estratto da message_details per l'ID evento 113016. |
target_host |
target.hostname |
Nome host di destinazione, estratto da message_details per l'ID evento 113004. |
target_ip |
target.ip, target.asset.ip |
Indirizzo IP di destinazione, estratto da message_details per l'ID evento 113004. |
target_user |
target.user.userid |
ID utente target, estratto da message_details per l'ID evento 113003. |
task_duration |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
tcp_dst_ip |
target.ip, target.asset.ip |
Indirizzo IP di destinazione del payload TCP originale di un messaggio di errore ICMP. |
tcp_dst_port |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
tcp_src_ip |
principal.ip, principal.asset.ip |
Indirizzo IP di origine del payload TCP originale di un messaggio di errore ICMP. |
tcp_src_port |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
threshold |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
tls_version |
network.tls.version |
Versione TLS, estratta da message_details per l'ID evento 725002. |
ts |
@timestamp |
Timestamp dell'evento, analizzato utilizzando il filtro date. |
ts_day |
@timestamp (parte di) |
Giorno del mese dal timestamp, utilizzato per creare il campo @timestamp. |
ts_month |
@timestamp (parte di) |
Mese dal timestamp, utilizzato per creare il campo @timestamp. |
ts_time |
@timestamp (parte di) |
Ora dal timestamp, utilizzata per creare il campo @timestamp. |
ts_year |
@timestamp (parte di) |
Anno dal timestamp, utilizzato per creare il campo @timestamp. |
tunnel_type |
N/D | Sebbene analizzato, questo campo non è mappato all'oggetto IDM in UDM. |
user |
principal.user.userid, target.user.userid |
ID utente, estratto da vari formati di messaggi di log. |
user_agent |
network.http.user_agent |
Stringa user agent, estratta da message_details per l'ID evento 722055. |
user_attr.key |
principal.user.attribute.labels.key |
Chiave di un attributo utente, estratta da message_details per gli ID evento 734003 e 734001. |
user_attr.value |
principal.user.attribute.labels.value |
Valore di un attributo utente, estratto da message_details per gli ID evento 734003 e 734001. |
userid |
principal.user.userid |
ID utente estratto da message_details per l'ID evento 106103. |
username |
principal.user.userid |
Nome utente, estratto da message_details per gli ID evento 111008, 111009, 111010 e 113008. |
| N/D | metadata.vendor_name |
Codificato in modo permanente su "CISCO". |
| N/D | metadata.product_name |
Codificato come "ASA VPN" o "VPN". |
| N/D | metadata.event_type |
Determinato dalla logica del parser in base alla presenza di determinati campi e ID evento. Può essere GENERIC_EVENT, NETWORK_CONNECTION, STATUS_UPDATE, NETWORK_FTP, USER_LOGIN, USER_LOGOUT, NETWORK_UNCATEGORIZED, USER_UNCATEGORIZED, NETWORK_FLOW. |
| N/D | metadata.log_type |
Codificato in modo permanente su "CISCO_VPN". |
| N/D | metadata.event_timestamp |
Copiato dal campo @timestamp analizzato. |
| N/D | extensions.auth.type |
Imposta su "VPN", "AUTHTYPE_UNSPECIFIED" o "MACHINE" a seconda del contesto dell'evento. |
| N/D | security_result.about.resource.type |
Imposta "PACKET FRAGMENT" per l'ID evento 209005. |
| N/D | is_alert |
Impostato su true per gli eventi di gravità elevata (event_severity 0 o 1). |
| N/D | is_significant |
Impostato su true per gli eventi di gravità elevata (event_severity 0 o 1). |
puser_id |
principal.user.userid |
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.