Raccogliere i log Cisco IOS

Supportato in:

Questo documento spiega come importare i log di Cisco Internetwork Operating System (IOS) in Google Security Operations utilizzando un agente Bindplane. Il parser trasforma i messaggi syslog non elaborati in un formato strutturato conforme al modello Unified Data Model (UDM). Innanzitutto, inizializza ed estrae i campi utilizzando pattern grok basati su formati syslog Cisco IOS comuni. Dopodiché, mappa i campi estratti ai campi UDM corrispondenti, classifica gli eventi e arricchisce i dati con un contesto aggiuntivo prima di restituire il log strutturato in formato UDM.

Prima di iniziare

  • Assicurati di avere un'istanza Google SecOps.
  • Assicurati di utilizzare Windows 2016 o versioni successive oppure un host Linux con systemd.
  • Se l'esecuzione avviene tramite un proxy, assicurati che le porte del firewall siano aperte.
  • Assicurati di disporre dell'accesso privilegiato a Cisco IOS.

Recuperare il file di autenticazione importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. 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

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa l'agente Bindplane

Installazione di Windows

  1. Apri il prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Installazione di Linux

  1. Apri un terminale con privilegi di root o sudo.
  2. 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

Configura l'agente Bindplane per importare Syslog e inviarli a Google SecOps

  1. Accedi al file di configurazione:

    1. Individua il file config.yaml. In genere, si trova nella directory /etc/bindplane-agent/ su Linux o nella directory di installazione su Windows.
    2. Apri il file utilizzando un editor di testo (ad esempio nano, vi o Blocco note).
  2. 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: '/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: CISCO_IOS
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Sostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.

  4. Sostituisci <customer_id> con l'ID cliente effettivo.

  5. 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
    

Configura Syslog su Cisco IOS

  1. Accedi a Cisco IOS.
  2. Aumenta i privilegi inserendo questo comando:

    enable
    
  3. Passa alla modalità di configurazione inserendo il seguente comando:

    conf t
    
  4. Inserisci i seguenti comandi:

    logging host <bindplane-server-ip> transport <tcp/udp> port <port-number>
    logging source-interface <interface>
    
    • Sostituisci <bindplane-server-ip> con l'indirizzo IP dell'agente Bindplane e <port-number> con la porta configurata.
    • Sostituisci <tcp/udp> con il protocollo di ascolto configurato nell'agente Bindplane, ad esempio udp.
    • Sostituisci <interface> con l'ID interfaccia Cisco.
  5. Imposta il livello di priorità inserendo il seguente comando:

    logging trap Informational 
    logging console Informational 
    logging severity Informational
    
  6. Imposta la struttura syslog:

    logging facility syslog
    
  7. Salva ed esci.

  8. Configura le impostazioni in modo che vengano mantenute dopo il riavvio inserendo il seguente comando:

    copy running-config startup-config
    

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
AcsSessionID network.session_id Valore tratto dal campo AcsSessionID.
AcctRequest-Flags security_result.summary Valore estratto dal campo AcctRequest-Flags.
AcctRequest-Flags security_result.action Se AcctRequest-Flags contiene Start, impostalo su ALLOW. Se AcctRequest-Flags contiene Stop, impostalo su BLOCK.
AuthenticationIdentityStore additional.fields.key = AuthenticationIdentityStore, value = AuthenticationIdentityStore Valore estratto dal campo AuthenticationIdentityStore.
AuthenticationMethod additional.fields.key = AuthenticationMethod, value = AuthenticationMethod Valore tratto dal campo AuthenticationMethod.
AuthenticationStatus security_result.summary Valore tratto dal campo AuthenticationStatus.
Authen-Method security_result.detection_fields.key = Authen-Method, value = Authen-Method Valore tratto dal campo Authen-Method.
Authen-Method extensions.auth.type Se Authen-Method contiene TacacsPlus, impostalo su TACACS.
AVPair_priv-lvl security_result.detection_fields.key = AVPair_priv-lvl, value = AVPair_priv-lvl Valore tratto dal campo AVPair_priv-lvl.
AVPair_start_time additional.fields.key = AVPair_start_time, value = AVPair_start_time Valore tratto dal campo AVPair_start_time.
AVPair_task_id additional.fields.key = AVPair_task_id, value = AVPair_task_id Valore tratto dal campo AVPair_task_id.
AVPair_timezone additional.fields.key = AVPair_timezone, value = AVPair_timezone Valore tratto dal campo AVPair_timezone.
auditid metadata.product_log_id Valore tratto dal campo auditid.
cisco_facility Non mappato all'oggetto IDM.
cisco_message metadata.description Valore tratto dal campo cisco_message.
cisco_mnemonic security_result.rule_name Valore tratto dal campo cisco_mnemonic.
cisco_severity security_result.severity Mappato a diversi livelli di gravità in base al valore: 0: ALERT, 1: CRITICAL, 2: HIGH, 3: ERROR, 4: MEDIUM, 5: LOW, 6: INFORMATIONAL, 7: INFORMATIONAL.
cisco_severity security_result.severity_details Mappato su diversi dettagli di gravità in base al valore: 0: System unusable, 1: Immediate action needed, 2: Critical condition, 3: Error condition, 4: Warning condition, 5: Normal but significant condition, 6: Informational message only, 7: Appears during debugging only.
cisco_tag metadata.product_event_type Valore estratto dal campo cisco_tag.
cisco_tag metadata.event_type Mappato a diversi tipi di eventi in base al valore: SYS-6-LOGGINGHOST_STARTSTOP, TRACK-6-STATE, SYS-3-LOGGINGHOST_FAIL, CRYPTO-4-IKMP_NO_SA, HA_EM-3-FMPD_ACTION_NOTRACK, HA_EM-3-FMPD_ERROR: GENERIC_EVENT; IPSEC-3-REPLAY_ERROR, CRYPTO-4-RECVD_PKT_INV_SPI, IPSEC-3-HMAC_ERROR, FW-6-DROP_PKT, SEC-6-IPACCESSLOGP: NETWORK_UNCATEGORIZED; CRYPTO-4-IKMP_BAD_MESSAGE, CRYPTO-6-IKMP_NOT_ENCRYPTED, CRYPTO-6-IKMP_MODE_FAILURE: STATUS_UNCATEGORIZED; SYS-5-CONFIG_I: USER_UNCATEGORIZED.
ClientLatency additional.fields.key = ClientLatency, value = ClientLatency Valore estratto dal campo ClientLatency.
CmdSet additional.fields.key = CmdSet, value = CmdSet Valore estratto dal campo CmdSet.
comando principal.process.command_line Valore tratto dal campo del comando.
CPMSessionID additional.fields.key = CPMSessionID, value = CPMSessionID Valore tratto dal campo CPMSessionID.
description metadata.description Valore tratto dal campo Descrizione.
DestinationIPAddress target.asset.ip Valore tratto dal campo DestinationIPAddress.
DestinationIPAddress target.ip Valore tratto dal campo DestinationIPAddress.
DestinationPort target.port Valore ottenuto dal campo DestinationPort.
Device_IP_Address principal.asset.ip Valore tratto dal campo Device_IP_Address.
Device_IP_Address principal.ip Valore tratto dal campo Device_IP_Address.
Device_Type additional.fields.key = Device_Type, value = Device_Type Valore tratto dal campo Device_Type.
dst_ip target.asset.ip Valore tratto dal campo dst_ip.
dst_ip target.ip Valore tratto dal campo dst_ip.
dst_port target.port Valore tratto dal campo dst_port.
dst_user target.user.userid Valore tratto dal campo dst_user.
EnableFlag security_result.detection_fields.key = EnableFlag, value = EnableFlag Valore tratto dal campo EnableFlag.
IdentityGroup additional.fields.key = IdentityGroup, value = IdentityGroup Valore tratto dal campo IdentityGroup.
IdentitySelectionMatchedRule security_result.detection_fields.key = IdentitySelectionMatchedRule, value = IdentitySelectionMatchedRule Valore tratto dal campo IdentitySelectionMatchedRule.
intermediary_host intermediary.hostname Valore tratto dal campo intermediary_host.
intermediary_ip intermediary.ip Valore estratto dal campo intermediary_ip.
IPSEC additional.fields.key = IPSEC, value = IPSEC Valore tratto dal campo IPSEC.
ISEPolicySetName extensions.auth.type Se ISEPolicySetName contiene Tacacs, imposta TACACS.
IsMachineAuthentication additional.fields.key = IsMachineAuthentication, value = IsMachineAuthentication Valore tratto dal campo IsMachineAuthentication.
IsMachineIdentity security_result.detection_fields.key = IsMachineIdentity, value = IsMachineIdentity Valore tratto dal campo IsMachineIdentity.
Località additional.fields.key = Location, value = Location Valore tratto dal campo Località.
MatchedCommandSet additional.fields.key = MatchedCommandSet, value = MatchedCommandSet Valore estratto dal campo MatchedCommandSet.
messaggio Non mappato all'oggetto IDM.
metadata_event_type metadata.event_type Valore estratto dal campo metadata_event_type. Se è vuoto o GENERIC_EVENT, viene impostato su NETWORK_UNCATEGORIZED se principal_mid_present e target_mid_present sono true, USER_UNCATEGORIZED se principal_userid_present è true, STATUS_UPDATE se principal_mid_present è true o GENERIC_EVENT in caso contrario. Se il servizio contiene Login, imposta USER_LOGIN se principal_userid_present, principal_mid_present e target_mid_present sono true oppure USER_UNCATEGORIZED se principal_userid_present è true.
Model_Name additional.fields.key = Model_Name, value = Model_Name Valore tratto dal campo Model_Name.
Nome additional.fields.key = Name, value = Name Valore tratto dal campo Nome.
Network_Device_Profile additional.fields.key = Network_Device_Profile, value = Network_Device_Profile Valore tratto dal campo Network_Device_Profile.
NetworkDeviceGroups additional.fields.key = NetworkDeviceGroups, value = NetworkDeviceGroups Valore tratto dal campo NetworkDeviceGroups.
NetworkDeviceName principal.asset.hostname Valore tratto dal campo NetworkDeviceName.
NetworkDeviceName principal.hostname Valore tratto dal campo NetworkDeviceName.
NetworkDeviceProfileId principal.resource.product_object_id Valore estratto dal campo NetworkDeviceProfileId.
pid principal.process.pid Valore tratto dal campo pid.
Porta principal.resource.attribute.labels.key = Port, value = Port Valore tratto dal campo Porta.
Livello di privilegio security_result.detection_fields.key = Privilege-Level, value = Privilege-Level Valore tratto dal campo Livello di privilegio.
product_event_type metadata.product_event_type Valore estratto dal campo product_event_type.
Protocollo additional.fields.key = Protocol, value = Protocollo Valore tratto dal campo Protocol.
protocollo network.application_protocol Se il protocollo è HTTPS, impostalo su HTTPS.
protocollo network.ip_protocol Se il protocollo è TCP o UDP, impostalo sul valore in maiuscolo del protocollo.
motivo security_result.summary Valore tratto dal campo del motivo.
regione principal.location.country_or_region Valore tratto dal campo regione.
Remote-Address target.asset.ip Valore estratto dal campo Remote-Address dopo la convalida come indirizzo IP.
Remote-Address target.ip Valore estratto dal campo Remote-Address dopo la convalida come indirizzo IP.
RequestLatency security_result.detection_fields.key = RequestLatency, value = RequestLatency Valore tratto dal campo RequestLatency.
Risposta additional.fields.key = Response, value = Response Valore tratto dal campo Risposta.
SelectedAccessService security_result.action_details Valore tratto dal campo SelectedAccessService.
SelectedAuthenticationIdentityStores security_result.detection_fields.key = SelectedAuthenticationIdentityStores, value = SelectedAuthenticationIdentityStores Valore estratto dal campo SelectedAuthenticationIdentityStores.
SelectedCommandSet additional.fields.key = SelectedCommandSet, value = SelectedCommandSet Valore estratto dal campo SelectedCommandSet.
Servizio additional.fields.key = Service, value = Service Valore tratto dal campo Servizio.
Service-Argument additional.fields.key = Service-Argument, value = Service-Argument Valore estratto dal campo Service-Argument.
gravità security_result.severity Se la gravità contiene Notice, impostala su INFORMATIONAL.
Software_Version additional.fields.key = Software_Version, value = Software_Version Valore tratto dal campo Software_Version.
source_facility principal.asset.hostname Valore tratto dal campo source_facility.
source_facility principal.hostname Valore tratto dal campo source_facility.
src_ip principal.asset.ip Valore tratto dal campo src_ip.
src_ip principal.ip Valore tratto dal campo src_ip.
src_mac principal.mac Valore estratto dal campo src_mac dopo aver sostituito . con :.
src_port principal.port Valore tratto dal campo src_port.
src_user_id principal.user.userid Valore tratto dal campo src_user_id. Se è vuoto, prendi il valore dal campo Utente. Se è ancora vuoto, prendi il valore dal campo StepData_9.
src_user_name principal.user.user_display_name Valore tratto dal campo src_user_name.
Passaggio additional.fields.key = Step, value = Step Valore tratto dal campo Passaggio.
StepData_10 principal.asset.hostname Valore estratto dal campo StepData_10.
StepData_10 principal.hostname Valore estratto dal campo StepData_10.
StepData_13 security_result.summary Valore estratto dal campo StepData_13.
StepData_14 security_result.detection_fields.key = StepData_14, value = StepData_14 Valore estratto dal campo StepData_14.
StepData_15 security_result.detection_fields.key = StepData_15, value = StepData_15 Valore estratto dal campo StepData_15.
StepData_20 security_result.detection_fields.key = StepData_20, value = StepData_20 Valore estratto dal campo StepData_20.
StepData_21 security_result.detection_fields.key = StepData_21, value = StepData_21 Valore estratto dal campo StepData_21.
StepData_3 additional.fields.key = StepData_3, value = StepData_3 Valore estratto dal campo StepData_3.
StepData_4 security_result.detection_fields.key = StepData_4, value = StepData_4 Valore estratto dal campo StepData_4.
StepData_6 security_result.detection_fields.key = StepData_6, value = StepData_6 Valore estratto dal campo StepData_6.
StepData_7 security_result.detection_fields.key = StepData_7, value = StepData_7 Valore estratto dal campo StepData_7.
StepData_8 security_result.detection_fields.key = StepData_8, value = StepData_8 Valore estratto dal campo StepData_8.
StepData_9 principal.user.userid Valore estratto dal campo StepData_9 se i campi src_user_id e User sono vuoti.
target_host target.asset.hostname Valore tratto dal campo target_host.
target_host target.hostname Valore tratto dal campo target_host.
timestamp metadata.event_timestamp Valore estratto dal campo timestamp dopo aver rimosso gli spazi aggiuntivi e analizzato la data.
TotalAuthenLatency additional.fields.key = TotalAuthenLatency, value = TotalAuthenLatency Valore tratto dal campo TotalAuthenLatency.
ts metadata.event_timestamp Valore estratto dal campo ts dopo l'analisi della data.
Tipo security_result.category_details Valore tratto dal campo Tipo.
Utente principal.user.userid Valore tratto dal campo Utente se src_user_id è vuoto.
UserType additional.fields.key = UserType, value = UserType Valore tratto dal campo UserType.
metadata.vendor_name Imposta su CISCO.
metadata.product_name Imposta su CISCO_IOS.
metadata.log_type Imposta su CISCO_IOS.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.