Raccogliere i log di Cisco eStreamer

Supportato in:

Questo documento spiega come importare i log Cisco eStreamer in Google Security Operations utilizzando Bindplane. Il parser estrae i campi dai messaggi SYSLOG in formato chiave-valore, utilizzando grok per analizzare il messaggio iniziale e kv per gestire i dati chiave-valore. Successivamente, esegue il mapping di questi campi estratti al modello di dati unificato (UDM), gestendo vari tipi di dati e arricchendo l'evento con metadati come il tipo di evento in base alla presenza di informazioni su principal e target.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un host Windows Server 2012 SP2 o versioni successive o Linux con systemd
  • Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
  • Accesso con privilegi a Cisco Firepower Management Center (FMC)
  • Un sistema Linux per eseguire il client CLI eNcore

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

Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.

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

Per ulteriori opzioni di installazione, consulta la guida all'installazione.

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

  1. Accedi al file di configurazione:
    • Individua il file config.yaml. In genere, si trova nella directory /opt/observiq-otel-collector/ su Linux o nella directory `C:\Programmi\observIQ OpenTelemetry Collector` su Windows.
    • 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_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: YOUR_CUSTOMER_ID
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'CISCO_ESTREAMER'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    

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 l'inoltro di Syslog su Cisco eStreamer

Configura eStreamer in Firepower Management Center

  1. Accedi a Firepower Management Center.
  2. Vai a Sistema > Integrazione > eStreamer.
  3. Fai clic su eStreamer per accedere alla configurazione degli eventi eStreamer.
  4. Seleziona le caselle di controllo accanto ai tipi di eventi che vuoi acquisire:
    • Eventi di intrusione: per gli eventi di rilevamento delle intrusioni
    • Dati dei pacchetti di eventi di intrusione: per acquisizioni di pacchetti associati a eventi di intrusione
    • Eventi di connessione: per i dati di connessione di rete
    • Eventi di intelligence sulla sicurezza: per i dati di intelligence sulle minacce
    • Eventi file: per gli eventi di analisi dei file
    • Eventi malware: per gli eventi di rilevamento di malware
  5. Fai clic su Salva.

Crea client eStreamer

  1. Nella pagina eStreamer, fai clic su Crea client.
  2. Fornisci i seguenti dettagli di configurazione:
    • Nome host: inserisci l'indirizzo IP del sistema Linux in cui verrà eseguito il client eNcore.
    • Password: inserisci una password per criptare il file del certificato.
  3. Fai clic su Salva.
  4. Scarica il file del certificato PKCS12 generato e trasferiscilo al sistema client eNcore.

Installa e configura il client CLI eNcore

  1. Sul sistema Linux, scarica il client CLI eStreamer eNcore da Cisco.
  2. Estrai il pacchetto eNcore:

    tar -xzf eStreamer-eNcore-*.tar.gz
    cd eStreamer-eNcore-*
    
  3. Esegui lo script di configurazione:

    ./encore.sh setup
    
  4. Quando richiesto, scegli il formato di output per le coppie chiave-valore (compatibile con i sistemi SIEM).

  5. Inserisci l'indirizzo IP di FMC e la password del certificato PKCS12.

  6. Configura il file estreamer.conf per inviare i messaggi syslog all'agente Bindplane:

    • Apri il file estreamer.conf in un editor di testo.
    • Individua la sezione degli output e configurala per inviare syslog all'agente Bindplane:

      {
        "handler": {
          "outputters": [
            {
              "name": "syslog",
              "adapter": "kvpair",
              "enabled": true,
              "stream": {
                "uri": "udp://BINDPLANE_AGENT_IP:514"
              }
            }
          ]
        }
      }
      
  7. Sostituisci BINDPLANE_AGENT_IP con l'indirizzo IP dell'agente Bindplane.

Avviare eNcore Client

  1. Testa la connessione in modalità in primo piano:

    ./encore.sh foreground
    
  2. Una volta verificato, avvia eNcore come servizio in background:

    ./encore.sh start
    

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
act security_result.action_details A questo campo viene assegnato il valore di act dal log non elaborato.
act security_result.action Se il valore di act è "Allow" (senza distinzione tra maiuscole e minuscole), a questo campo viene assegnato il valore "ALLOW".
app network.http.user_agent A questo campo viene assegnato il valore di app (rinominato come requestClientApplication nel parser) del log non elaborato.
blockLength security_result.detection_fields[].key A questo campo è assegnata la stringa "blocklength".
blockLength security_result.detection_fields[].value A questo campo viene assegnato il valore di blockLength del log non elaborato, convertito in una stringa.
blockType security_result.detection_fields[].key A questo campo è assegnata la stringa "blockType".
blockType security_result.detection_fields[].value A questo campo viene assegnato il valore di blockType del log non elaborato, convertito in una stringa.
bytesIn network.received_bytes Il valore di bytesIn del log non elaborato viene assegnato a questo campo e convertito in un numero intero senza segno.
bytesOut network.sent_bytes Il valore di bytesOut del log non elaborato viene assegnato a questo campo e convertito in un numero intero senza segno.
cat security_result.category_details A questo campo viene assegnato il valore di cat dal log non elaborato.
cs1 security_result.detection_fields[].value A questo campo viene assegnato il valore di cs1 dal log non elaborato.
cs1Label security_result.detection_fields[].key A questo campo viene assegnato il valore di cs1Label dal log non elaborato.
cs2 security_result.detection_fields[].value A questo campo viene assegnato il valore di cs2 dal log non elaborato.
cs2Label security_result.detection_fields[].key A questo campo viene assegnato il valore di cs2Label dal log non elaborato.
cs3 security_result.detection_fields[].value A questo campo viene assegnato il valore di cs3 dal log non elaborato.
cs3Label security_result.detection_fields[].key A questo campo viene assegnato il valore di cs3Label dal log non elaborato.
cs4 security_result.detection_fields[].value A questo campo viene assegnato il valore di cs4 dal log non elaborato.
cs4Label security_result.detection_fields[].key A questo campo viene assegnato il valore di cs4Label dal log non elaborato.
cs5 security_result.detection_fields[].value A questo campo viene assegnato il valore di cs5 dal log non elaborato.
cs5Label security_result.detection_fields[].key A questo campo viene assegnato il valore di cs5Label dal log non elaborato.
cs6 security_result.detection_fields[].value A questo campo viene assegnato il valore di cs6 dal log non elaborato.
cs6 security_result.rule_id A questo campo viene assegnato il valore di cs6 dal log non elaborato.
cs6Label security_result.detection_fields[].key A questo campo viene assegnato il valore di cs6Label dal log non elaborato.
data security_result.detection_fields[].value Il valore di data dell'oggetto JSON suser nel log non elaborato viene assegnato a questo campo se il campo suser è un JSON.
deviceInboundInterface additional.fields[].key A questo campo viene assegnata la stringa "deviceInboundInterface".
deviceInboundInterface additional.fields[].value.string_value A questo campo viene assegnato il valore di deviceInboundInterface dal log non elaborato.
deviceOutboundInterface additional.fields[].key A questo campo viene assegnata la stringa "deviceOutboundInterface".
deviceOutboundInterface additional.fields[].value.string_value A questo campo viene assegnato il valore di deviceOutboundInterface dal log non elaborato.
dpt target.port Il valore di dpt del log non elaborato viene assegnato a questo campo e convertito in un numero intero.
dst target.asset.ip A questo campo viene assegnato il valore di dst dal log non elaborato.
dst target.ip A questo campo viene assegnato il valore di dst dal log non elaborato.
dvcpid security_result.about.process.pid A questo campo viene assegnato il valore di dvcpid dal log non elaborato.
dvchost target.asset.hostname A questo campo viene assegnato il valore di dvchost dal log non elaborato.
dvchost target.hostname A questo campo viene assegnato il valore di dvchost dal log non elaborato.
hostname principal.asset.hostname A questo campo viene assegnato il valore di hostname dal log non elaborato.
hostname principal.hostname A questo campo viene assegnato il valore di hostname dal log non elaborato. Determinato dalla logica del parser in base alla presenza delle informazioni principal e target. Se sono presenti entrambi, il valore è "NETWORK_CONNECTION". Se è presente solo principal, il valore è "STATUS_UPDATE". Se è presente solo target, il valore è "USER_UNCATEGORIZED". In caso contrario, il valore è "GENERIC_EVENT".
product_event_type metadata.product_event_type A questo campo viene assegnato il valore di product_event_type dal log non elaborato.
product_name metadata.product_name A questo campo viene assegnato il valore di product_name dal log non elaborato.
proto network.ip_protocol Il valore di proto del log non elaborato viene convertito in un numero intero, quindi mappato al nome del protocollo IP corrispondente (ad es. 6 diventa TCP, 17 diventa UDP) utilizzando una ricerca inclusa in "parse_ip_protocol.include".
severity security_result.severity_details A questo campo viene assegnato il valore di severity dal log non elaborato.
spt principal.port Il valore di spt del log non elaborato viene assegnato a questo campo e convertito in un numero intero.
src principal.asset.ip A questo campo viene assegnato il valore di src dal log non elaborato.
src principal.ip A questo campo viene assegnato il valore di src dal log non elaborato.
suser security_result.detection_fields[].value Il valore di suser del log non elaborato viene assegnato a questo campo se non è un oggetto JSON. Se è un JSON, viene utilizzato il campo data dell'oggetto suser.
suser security_result.detection_fields[].key A questo campo viene assegnata la stringa "suser".
ts metadata.event_timestamp Il valore di ts del log non elaborato viene analizzato come timestamp e assegnato a questo campo. Vengono provati diversi formati di timestamp finché non viene eseguita l'analisi.
vendor_name metadata.vendor_name A questo campo viene assegnato il valore di vendor_name dal log non elaborato.
version metadata.product_version A questo campo viene assegnato il valore di version dal log non elaborato.

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