Raccogliere i log di OpenCanary

Supportato in:

Panoramica

Questo parser estrae i campi dai log SYSLOG e JSON di OpenCanary, li normalizza nel formato UDM e arricchisce i dati con campi derivati come metadata.event_type e security_result.severity. Gestisce vari formati di log, esegue la convalida dell'indirizzo IP e mappa i campi agli oggetti UDM appropriati, come principal, target e network.

Prima di iniziare

  • Assicurati di avere un'istanza Google SecOps.
  • Assicurati di disporre dell'accesso privilegiato a OpenCanary.

Configura un feed in Google SecOps per importare i log di OpenCanary

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log OpenCanary).
  4. Seleziona Webhook come Tipo di origine.
  5. Seleziona OpenCanary come Tipo di log.
  6. Fai clic su Avanti.
  7. (Facoltativo) Specifica i valori per i seguenti parametri di input:
    • Delimitatore di split: il delimitatore utilizzato per separare le righe di log, ad esempio \n.
    • Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
    • Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
  8. Fai clic su Avanti.
  9. Controlla la configurazione del feed nella schermata Concludi e poi fai clic su Invia.
  10. Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
  11. Copia e memorizza la chiave segreta. Non potrai più visualizzare questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.
  12. Dalla scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni endpoint. Devi specificare questo URL endpoint nell'applicazione client.
  13. Fai clic su Fine.

Crea una chiave API per il feed webhook

  1. Vai alla console Google Cloud > Credenziali.

    Vai a credenziali

  2. Fai clic su Crea credenziali e poi seleziona Chiave API.

  3. Limita l'accesso della chiave API all'API Google Security Operations.

Specifica l'URL dell'endpoint

  1. Nell'applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
  2. Attiva l'autenticazione specificando la chiave API e la chiave segreta nell'intestazione personalizzata nel seguente formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Consiglio: specifica la chiave API come intestazione anziché nell'URL.

  3. Se il client webhook non supporta le intestazioni personalizzate, puoi specificare la chiave API e la chiave segreta utilizzando parametri di ricerca nel seguente formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Sostituisci quanto segue:

    • ENDPOINT_URL: l'URL dell'endpoint del feed.
    • API_KEY: la chiave API per l'autenticazione in Google Security Operations.
    • SECRET: la chiave segreta che hai generato per autenticare il feed.

Configurazione di un webhook OpenCanary per Google SecOps

  1. Individua il file di configurazione di OpenCanary, config.json.

  2. Apri il file config.json con un editor di testo.

  3. Individua la sezione alerters nel file di configurazione.

  4. Se esiste già un avviso webhook, modificalo. In caso contrario, aggiungi una nuova voce per l'avvertimento webhook.

  5. Utilizza la seguente configurazione (sostituisci ENDPOINT_URL, SECRET e API_KEY con i tuoi valori):

"handlers": {
    "Webhook": {
        "class": "opencanary.logger.WebhookHandler",
        "url": "<ENDPOINT_URL>",
        "method": "POST",
        "data": {"message": "%(message)s"},
        "status_code": 200,
        "headers": {
            "X-Webhook-Access-Key": "<SECRET>",
            "X-goog-api-key": "<API_KEY>"
         }
    }
}
  1. Salva il file config.json.
  2. Riavvia il servizio OpenCanary per applicare le modifiche. (ad esempio sudo systemctl restart opencanary).

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
dst_host target.asset.ip Il campo dst_host del log non elaborato è mappato all'UDM. È stato mappato anche a target.ip.
dst_host target.ip Il campo dst_host del log non elaborato è mappato all'UDM. È stato mappato anche a target.asset.ip.
dst_port target.port Il campo dst_port del log non elaborato viene convertito in una stringa, poi in un numero intero e mappato all'UDM.
local_time metadata.event_timestamp Il campo local_time del log non elaborato viene utilizzato per compilare metadata.event_timestamp nell'UDM. Il parser utilizza create_time dall'oggetto batch se il campo local_time non è presente.
local_time_adjusted security_result.detection_fields Il campo local_time_adjusted del log non elaborato viene aggiunto come coppia chiave-valore all'array security_result.detection_fields nell'UDM.
logdata.COMMUNITY_STRING security_result.detection_fields Il campo logdata.COMMUNITY_STRING del log non elaborato viene aggiunto come coppia chiave-valore all'array security_result.detection_fields nell'UDM.
logdata.DOMAIN principal.administrative_domain Il campo logdata.DOMAIN del log non elaborato è mappato all'UDM.
logdata.FILENAME target.file.full_path Il campo logdata.FILENAME del log non elaborato è mappato all'UDM.
logdata.HOSTNAME principal.asset.hostname Se il campo logdata.HOSTNAME non è un indirizzo IP, viene mappato all'UDM. È stato mappato anche a principal.hostname.
logdata.HOSTNAME principal.asset.ip Se il campo logdata.HOSTNAME è un indirizzo IP, viene mappato all'UDM. È stato mappato anche a principal.ip.
logdata.HOSTNAME principal.hostname Se il campo logdata.HOSTNAME non è un indirizzo IP, viene mappato all'UDM. È stato mappato anche a principal.asset.hostname.
logdata.HOSTNAME principal.ip Se il campo logdata.HOSTNAME è un indirizzo IP, viene mappato all'UDM. È stato mappato anche a principal.asset.ip.
logdata.LOCALNAME principal.asset.hostname Il campo logdata.LOCALNAME del log non elaborato è mappato all'UDM. È stato mappato anche a principal.hostname.
logdata.LOCALNAME principal.hostname Il campo logdata.LOCALNAME del log non elaborato è mappato all'UDM. È stato mappato anche a principal.asset.hostname.
logdata.LOCALVERSION principal.platform_version Il campo logdata.LOCALVERSION del log non elaborato è mappato all'UDM.
logdata.PASSWORD extensions.auth.mechanism La presenza del campo logdata.PASSWORD attiva il parser per impostare extensions.auth.mechanism su USERNAME_PASSWORD nell'UMD.
logdata.PATH network.http.referral_url Il campo logdata.PATH del log non elaborato è mappato all'UDM.
logdata.REMOTENAME target.asset.hostname Il campo logdata.REMOTENAME del log non elaborato è mappato all'UDM. È stato mappato anche a target.hostname.
logdata.REMOTENAME target.hostname Il campo logdata.REMOTENAME del log non elaborato è mappato all'UDM. È stato mappato anche a target.asset.hostname.
logdata.REMOTEVERSION target.platform_version Il campo logdata.REMOTEVERSION del log non elaborato è mappato all'UDM.
logdata.SMBVER network.application_protocol La presenza del campo logdata.SMBVER attiva il parser per impostare network.application_protocol su SMB nell'UMD.
logdata.USERAGENT network.http.parsed_user_agent Il campo logdata.USERAGENT del log non elaborato viene convertito in uno user agent analizzato e mappato all'UDM.
logdata.USERAGENT network.http.user_agent Il campo logdata.USERAGENT del log non elaborato è mappato all'UDM.
logdata.USERNAME target.user.userid Il campo logdata.USERNAME del log non elaborato è mappato all'UDM.
loglevel security_result.severity Il campo loglevel del log non elaborato determina security_result.severity nell'UDM. WARNING corrisponde a HIGH, INFO/INFORMATION corrisponde a LOW.
logtype security_result.detection_fields Il campo logtype del log non elaborato viene aggiunto come coppia chiave-valore all'array security_result.detection_fields nell'UDM.
node_id principal.asset.asset_id Al campo node_id del log non elaborato viene anteposto "id:" e viene mappato all'UDM.
src_host principal.asset.ip Il campo src_host del log non elaborato è mappato all'UDM. È stato mappato anche a principal.ip.
src_host principal.ip Il campo src_host del log non elaborato è mappato all'UDM. È stato mappato anche a principal.asset.ip.
src_port principal.port Il campo src_port del log non elaborato viene convertito in un numero intero e mappato all'UDM.
utc_time security_result.detection_fields Il campo utc_time del log non elaborato viene aggiunto come coppia chiave-valore all'array security_result.detection_fields nell'UDM.

Modifiche

2024-03-11

  • È stato rimosso il carattere non valido alla fine dei log JSON per analizzare i log non analizzati.
  • Mappature "principal.ip" e "principal.asset.ip" allineate.
  • Mappature "target.ip" e "target.asset.ip" allineate.

2024-02-08

  • Parser appena creato.