Raccogliere i log di Cisco Secure ACS
Questo documento descrive come raccogliere i log di Cisco Secure Access Control Server (ACS) utilizzando un forwarder di Google Security Operations.
Per ulteriori informazioni, consulta Importazione dei dati in Google Security Operations.
Un'etichetta di importazione identifica il parser che normalizza i dati di log non elaborati in formato UDM strutturato. Le informazioni contenute in questo documento si applicano al parser con l'etichetta di importazione
CISCO_ACS
.
Configura Cisco Secure ACS
- Accedi alla console Cisco Secure ACS utilizzando le credenziali di amministratore.
- Nella console Cisco Secure ACS, seleziona System administration (Amministrazione di sistema) > Configuration (Configurazione) > Log configuration (Configurazione log) > Remote log targets (Destinazioni log remoti).
- Fai clic su Crea.
Nella finestra Crea, specifica i valori per i seguenti campi:
Campo Descrizione Nome Nome del programma di inoltro di Google Security Operations. Descrizione Descrizione del programma di inoltro di Google Security Operations. Indirizzo IP L'indirizzo IP del programma di inoltro di Google Security Operations. Utilizzare le opzioni syslog avanzate Seleziona questa opzione per attivare le opzioni syslog avanzate. Tipo target Seleziona Syslog TCP o Syslog UDP. Porta Utilizza una porta alta, ad esempio 10514. Codice struttura LOCAL6 (codice = 22; valore predefinito). Lunghezza massima Il valore consigliato è 1024. Fai clic su Invia. Viene visualizzata la finestra Destinazioni log remoti con la nuova configurazione della destinazione log remota.
Nella console Cisco Secure ACS, seleziona System administration > Configuration > Log configuration > Logging categories > Per-Instance.
Seleziona ACS e poi fai clic su Configura.
Nella finestra Per istanza, seleziona una categoria di logging e poi fai clic su Modifica.
Nella scheda Generale, per alcune categorie di logging, la gravità del logging deve essere impostata su predefinita o come fornita dal fornitore.
Per Cisco Secure ACS, la gravità predefinita è Avviso per tutte le categorie di logging, ad eccezione di quelle per cui la gravità non può essere modificata, ad esempio avviso di controllo AAA, avviso di contabilità, avviso di controllo amministrativo e operativo e avviso di statistiche di sistema.
Fai clic sulla scheda Target syslog remoto e sposta il target remoto appena creato da Target disponibili a Target selezionati.
Fai clic su Invia.
Per configurare destinazioni remote per altre categorie di logging, ripeti i passaggi da 8 a 10.
Configura il forwarder e syslog di Google Security Operations per importare i log di Cisco Secure ACS
- Vai a Impostazioni SIEM > Forwarder.
- Fai clic su Aggiungi nuovo inoltro.
- Nel campo Nome forwarder, inserisci un nome univoco per il forwarder.
- Fai clic su Invia. Il forwarder viene aggiunto e viene visualizzata la finestra Aggiungi configurazione del raccoglitore.
- Nel campo Nome del raccoglitore, digita un nome.
- Seleziona Cisco ACS come Tipo di log.
- Seleziona Syslog come Tipo di raccoglitore.
- Configura i seguenti parametri di input obbligatori:
- Protocollo: specifica il protocollo.
- Indirizzo: specifica l'indirizzo IP o il nome host di destinazione in cui si trova il raccoglitore e gli indirizzi dei dati syslog.
- Porta: specifica la porta di destinazione in cui risiede il raccoglitore e ascolta i dati syslog.
- Fai clic su Invia.
Per saperne di più sui forwarder di Google Security Operations, consulta la documentazione sui forwarder di Google Security Operations. Per informazioni sui requisiti per ciascun tipo di forwarder, consulta Configurazione del forwarder per tipo. Se riscontri problemi durante la creazione degli inoltri, contatta l'assistenza di Google Security Operations.
Riferimento alla mappatura dei campi
Questo parser gestisce i log Cisco ACS, inclusi autenticazione, contabilità, diagnostica e statistiche di sistema. Utilizza pattern grok per estrarre i campi da vari formati di log (SYSLOG + KV, LEEF), normalizza i timestamp e i fusi orari e mappa i campi chiave all'UDM, gestendo diversi tipi di log con una logica specifica per gli esiti positivi/negativi dell'autenticazione, la contabilità TACACS+ e gli eventi RADIUS. Inoltre, arricchisce l'UDM con campi aggiuntivi come informazioni sul dispositivo e dettagli di autenticazione.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
Acct-Authentic |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Acct-Authentic . |
Acct-Delay-Time |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Acct-Delay-Time . |
Acct-Input-Octets |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Acct-Input-Octets . |
Acct-Input-Packets |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Acct-Input-Packets . |
Acct-Output-Octets |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Acct-Output-Octets . |
Acct-Output-Packets |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Acct-Output-Packets . |
Acct-Session-Id |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Acct-Session-Id . |
Acct-Session-Time |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Acct-Session-Time . |
Acct-Status-Type |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Acct-Status-Type . |
Acct-Terminate-Cause |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Acct-Terminate-Cause . |
ACSVersion |
additional.fields[].value.string_value |
Il valore viene estratto dal campo ACSVersion . |
AD-Domain |
principal.group.group_display_name |
Il valore viene estratto dal campo AD-Domain . |
AD-IP-Address |
principal.ip |
Il valore viene estratto dal campo AD-IP-Address . |
Called-Station-ID |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Called-Station-ID . |
Calling-Station-ID |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Calling-Station-ID . |
Class |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Class . |
CmdSet |
(non mappato) | Non mappato all'oggetto IDM. |
ConfigVersionId |
additional.fields[].value.number_value |
Il valore viene estratto dal campo ConfigVersionId e convertito in un numero in virgola mobile. |
DestinationIPAddress |
target.ip , intermediary.ip |
Il valore viene estratto dal campo DestinationIPAddress . intermediary.ip è derivato da Device IP Address . |
DestinationPort |
target.port |
Il valore viene estratto dal campo DestinationPort e convertito in un numero intero. |
Device IP Address |
intermediary.ip |
Il valore viene estratto dal campo Device IP Address . |
Device Port |
intermediary.port |
Il valore viene estratto dal campo Device Port e convertito in un numero intero. |
DetailedInfo |
security_result.summary , security_result.description , security_result.action |
Se DetailedInfo è "Authentication succeed" (Autenticazione riuscita), security_result.summary è "successful login occurred" (Accesso riuscito) e security_result.action è ALLOW (Consenti). Se DetailedInfo contiene "Invalid username or password specified" (Nome utente o password specificati non validi), security_result.summary è "failed login occurred" (accesso non riuscito) e security_result.action è BLOCK (BLOCCO). security_result.description è derivato da log_header . |
Framed-IP-Address |
principal.ip |
Il valore viene estratto dal campo Framed-IP-Address . |
Framed-Protocol |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Framed-Protocol . |
NAS-IP-Address |
target.ip |
Il valore viene estratto dal campo NAS-IP-Address . |
NAS-Port |
additional.fields[].value.string_value |
Il valore viene estratto dal campo NAS-Port . |
NAS-Port-Id |
target.port |
Il valore viene estratto dal campo NAS-Port-Id e convertito in un numero intero. |
NAS-Port-Type |
additional.fields[].value.string_value |
Il valore viene estratto dal campo NAS-Port-Type . |
NetworkDeviceName |
target.hostname |
Il valore viene estratto dal campo NetworkDeviceName . |
Protocol |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Protocol . |
RadiusPacketType |
(non mappato) | Non mappato all'oggetto IDM. |
Remote-Address |
principal.ip , target.ip |
Il valore viene estratto dal campo Remote-Address e analizzato come indirizzo IP. È mappato su principal.ip per gli eventi di autenticazione e su target.ip per gli eventi di contabilità e diagnostica. |
RequestLatency |
additional.fields[].value.string_value |
Il valore viene estratto dal campo RequestLatency . |
Response |
principal.user.userid |
Se Response contiene "User-Name", il nome utente viene estratto e mappato a principal.user.userid . |
SelectedAccessService |
additional.fields[].value.string_value |
Il valore viene estratto dal campo SelectedAccessService . |
SelectedAuthenticationIdentityStores |
security_result.detection_fields[].value |
Il valore viene estratto dal campo SelectedAuthenticationIdentityStores . |
SelectedAuthorizationProfiles |
security_result.detection_fields[].value |
Il valore viene estratto dal campo SelectedAuthorizationProfiles . |
Service-Type |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Service-Type . |
Tunnel-Client-Endpoint |
additional.fields[].value.string_value |
Il valore viene estratto dal campo Tunnel-Client-Endpoint e analizzato come indirizzo IP. |
User |
target.user.userid |
Il valore viene estratto dal campo User . |
UserName |
target.user.userid , principal.mac |
Se UserName è un indirizzo MAC, viene analizzato e mappato a principal.mac . In caso contrario, viene mappato a target.user.userid . |
ac-user-agent |
network.http.user_agent |
Il valore viene estratto dal campo ac-user-agent . |
cat |
metadata.description |
Il valore viene estratto dal campo cat . |
device-mac |
principal.mac |
Il valore viene estratto dal campo device-mac , vengono aggiunti i due punti e il valore viene convertito in minuscolo. Se device-mac è "00", viene sostituito con "00:00:00:00:00:00". |
device-platform |
principal.asset.platform_software.platform |
Se device-platform è "win", il valore "WINDOWS" viene assegnato a principal.asset.platform_software.platform . |
device-platform-version |
principal.asset.platform_software.platform_version |
Il valore viene estratto dal campo device-platform-version . |
device-public-mac |
principal.mac |
Il valore viene estratto dal campo device-public-mac , i trattini vengono sostituiti con i due punti e il valore viene convertito in minuscolo. |
device-type |
principal.asset.hardware.model |
Il valore viene estratto dal campo device-type . |
device-uid |
principal.asset.asset_id |
Il valore viene estratto dal campo device-uid e preceduto da "ID ASSET: ". |
device-uid-global |
principal.asset.product_object_id |
Il valore viene estratto dal campo device-uid-global . |
hostname |
principal.hostname |
Il valore viene estratto dal campo hostname . |
ip:source-ip |
principal.ip |
Il valore viene estratto dal campo ip:source-ip . |
kv.ADDomain |
(non mappato) | Non mappato all'oggetto IDM. |
kv.Airespace-Wlan-Id |
(non mappato) | Non mappato all'oggetto IDM. |
kv.AuthenticationIdentityStore |
(non mappato) | Non mappato all'oggetto IDM. |
kv.AVPair |
(non mappato) | Non mappato all'oggetto IDM. |
kv.CVPN3000/ASA/PIX7.x-DAP-Tunnel-Group-Name |
(non mappato) | Non mappato all'oggetto IDM. |
kv.CVPN3000/ASA/PIX7.x-Group-Based-Address-Pools |
(non mappato) | Non mappato all'oggetto IDM. |
kv.ExternalGroups |
(non mappato) | Non mappato all'oggetto IDM. |
kv.FailureReason |
(non mappato) | Non mappato all'oggetto IDM. |
kv.IdentityAccessRestricted |
(non mappato) | Non mappato all'oggetto IDM. |
kv.IdentityGroup |
(non mappato) | Non mappato all'oggetto IDM. |
kv.NAS-Identifier |
(non mappato) | Non mappato all'oggetto IDM. |
kv.SelectedShellProfile |
(non mappato) | Non mappato all'oggetto IDM. |
kv.ServiceSelectionMatchedRule |
(non mappato) | Non mappato all'oggetto IDM. |
kv.State |
(non mappato) | Non mappato all'oggetto IDM. |
kv.Step |
(non mappato) | Non mappato all'oggetto IDM. |
kv.Tunnel-Medium-Type |
(non mappato) | Non mappato all'oggetto IDM. |
kv.Tunnel-Private-Group-ID |
(non mappato) | Non mappato all'oggetto IDM. |
kv.Tunnel-Type |
(non mappato) | Non mappato all'oggetto IDM. |
kv.UseCase |
(non mappato) | Non mappato all'oggetto IDM. |
kv.UserIdentityGroup |
(non mappato) | Non mappato all'oggetto IDM. |
kv.VendorSpecific |
(non mappato) | Non mappato all'oggetto IDM. |
kv.attribute-131 |
(non mappato) | Non mappato all'oggetto IDM. |
kv.attribute-89 |
(non mappato) | Non mappato all'oggetto IDM. |
kv.cisco-av-pair |
(non mappato) | Non mappato all'oggetto IDM. |
kv.cisco-av-pair:CiscoSecure-Group-Id |
(non mappato) | Non mappato all'oggetto IDM. |
leef_version |
(non mappato) | Non mappato all'oggetto IDM. |
log_header |
metadata.description |
Il valore viene estratto dal campo log_header . |
log_id |
metadata.product_log_id |
Il valore viene estratto dal campo log_id . |
log_type |
metadata.product_event_type |
Il valore viene estratto dal campo log_type . |
message_severity |
(non mappato) | Non mappato all'oggetto IDM. |
product |
metadata.product_name |
Il valore viene estratto dal campo product . |
product_version |
metadata.product_version |
Il valore viene estratto dal campo product_version . |
server_host |
target.hostname |
Il valore viene estratto dal campo server_host . |
timestamp |
metadata.event_timestamp |
Il valore viene estratto dal campo timestamp e dal campo timezone (dopo aver rimosso i due punti). Il valore combinato viene analizzato come un timestamp. |
url |
network.dns.questions[].name |
Il valore viene estratto dal campo url . |
vendor |
metadata.vendor_name |
Il valore viene estratto dal campo vendor . Impostato inizialmente su "GENERIC_EVENT", poi potenzialmente sovrascritto in base a log_type e ai campi analizzati. Può essere "USER_LOGIN", "USER_UNCATEGORIZED", "NETWORK_DNS", "NETWORK_CONNECTION", "STATUS_UPDATE" o "STATUS_UNCATEGORIZED". Impostato inizialmente su "Cisco", quindi potenzialmente sovrascritto dal campo vendor . Impostato inizialmente su "ACS", poi potenzialmente sovrascritto dal campo product . Imposta il valore su "CISCO_ACS". Imposta il valore su "USERNAME_PASSWORD". Imposta su "TACACS". Imposta "UDP" per gli eventi di diagnostica e contabilità RADIUS. Imposta "DNS" per gli eventi DNS. Derivato dal campo security_action , che viene impostato in base all'esito positivo o negativo dell'accesso. Imposta "accesso riuscito" per gli accessi riusciti e "accesso non riuscito" per gli accessi non riusciti. Potrebbe anche essere impostato su "superato" per determinati eventi di diagnostica dell'archivio delle identità. Imposta su "BASSA" per i tentativi di accesso non riusciti. Costruito anteponendo "ASSET ID: " al campo device-uid . |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.