Raccogli i log del database Imperva

Supportato in:

Questo documento spiega come importare i log del database Imperva in Google Security Operations utilizzando l'agente Bindplane.

Il parser estrae i campi dai log formattati di syslog del database Imperva. Utilizza grok e/o kv per analizzare il messaggio di log e poi mappa questi valori al modello UDM (Unified Data Model). Imposta anche i valori predefiniti dei metadati per l'origine e il tipo di evento. Imperva Database Security offre funzionalità complete di monitoraggio, controllo e protezione delle attività del database.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un host Windows 2016 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 alla console di gestione di Imperva SecureSphere

Recuperare il file di autenticazione dell'importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'acquisizione.
  4. Salva il file in modo sicuro sul sistema in cui verrà installato l'agente 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 dell'agente Bindplane.

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 /etc/bindplane-agent/ su Linux o nella directory di installazione 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: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'IMPERVA_DB'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • Sostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.
    • Sostituisci <CUSTOMER_ID> con l'ID cliente effettivo.
    • Aggiorna /path/to/ingestion-authentication-file.json con il percorso del file in cui è stato salvato il file di autenticazione nel passaggio 1.

Riavvia l'agente Bindplane per applicare le modifiche

  1. Per riavviare l'agente Bindplane in Linux, esegui questo comando:

    sudo systemctl restart observiq-otel-collector
    
  2. Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:

    net stop observiq-otel-collector && net start observiq-otel-collector
    

Configura l'inoltro di Syslog su Imperva Database

  1. Accedi alla console di gestione Imperva SecureSphere.
  2. Vai a Configurazione > Set di azioni.
  3. Fai clic su Aggiungi per creare un nuovo insieme di azioni o modificarne uno esistente.
  4. Fai clic su Aggiungi azione e fornisci i seguenti dettagli di configurazione:
    • Nome: inserisci un nome descrittivo (ad esempio, Google SecOps Syslog).
    • Tipo di azione: seleziona GW Syslog.
    • Host: inserisci l'indirizzo IP dell'agente Bindplane.
    • Porta: inserisci il numero di porta dell'agente Bindplane (valore predefinito 514).
    • Protocollo: seleziona UDP o TCP, a seconda della configurazione dell'agente Bindplane.
    • Livello di log Syslog: seleziona DEBUG per un logging completo.
    • Syslog Facility (Funzione Syslog): seleziona LOCAL0 o la funzione appropriata.
    • Action Interface (Interfaccia azione): seleziona Gateway Log - Security Event - System Log (syslog) - JSON format (Extended) (Log gateway - Evento di sicurezza - Log di sistema (syslog) - Formato JSON (esteso)) per il formato SYSLOG+JSON o Gateway Log - Security Event - System Log (syslog) (Log gateway - Evento di sicurezza - Log di sistema (syslog)) per il formato SYSLOG standard.
  5. Salva la configurazione dell'azione.
  6. Vai a Norme > Norme di sicurezza o Norme > Norme di controllo del database.
  7. Modifica le policy pertinenti e aggiungi il set di azioni contenente l'azione syslog per assicurarti che gli eventi vengano inoltrati a Google SecOps.

Tabella di mappatura UDM

Campo log mappatura UDM Logica
acct principal.user.userid Se acct è "admin", mappalo su target.user.userid, altrimenti mappalo su principal.user.userid. Rimuovi le virgolette e gli spazi da acct prima della mappatura.
azione security_result.action_details Valore del campo action dal log non elaborato
alertSev security_result.severity Se alertSev è "Informativo", mappalo come "INFORMATIONAL", altrimenti mappalo come versione in maiuscolo di alertSev
applicazione principal.application Se application è "pam_unix(sudo:session)" o description contiene "pam_unix", mappa come "pam_unix". Se message contiene "run-parts", mappalo come "run-parts". Se message contiene "audispd", mappalo come "audispd". Se message contiene "FSS audit", mappalo come "FSS audit". Altrimenti, mappa come campo application dal log non elaborato
application-name target.application Valore del campo application-name dal log non elaborato
audit-policy security_result.category_details Valore del campo audit-policy dal log non elaborato
bind-variables additional.fields.bind_variables_label.value.string_value Valore del campo bind-variables dal log non elaborato
categoria security_result.category_details Valore del campo category dal log non elaborato
COMANDO target.process.command_line Se exe non è vuoto, esegui la mappatura come campo exe dal log non elaborato. Altrimenti, mappa come campo COMMAND dal log non elaborato
Ora di creazione Non mappato
db-schema-pair additional.fields.DB Name_{index}.value.string_value, additional.fields.Schema Name_{index}.value.string_value Per ogni oggetto db-schema-pair nel log non elaborato, estrai i campi db-name e schema-name e mappali rispettivamente a DB Name_{index} e Schema Name_{index} in UDM, dove index è l'indice dell'oggetto nell'array.
db-user principal.user.userid Se db-user non è vuoto, mappalo come campo db-user dal log non elaborato. Altrimenti, se os-user non è vuoto e db-user è vuoto, mappalo come campo os-user dal log non elaborato
dbName target.resource.name Valore del campo dbName dal log non elaborato
dest-ip target.ip, target.asset.ip Valore del campo dest-ip dal log non elaborato
dest-port target.port Valore del campo dest-port dal log non elaborato
descrizione metadata.description Se description contiene "user:", estrai l'ID utente da description e mappalo a userid. Se userid non è vuoto e description contiene "Invalid" o "invalid", sostituisci "Invalid user" con "Invalid". Se application è "sshd", rimuovi "da" e "di" da description. Altrimenti, mappa come campo description dal log non elaborato
dst target.ip, target.asset.ip Valore del campo dst dal log non elaborato
dstIP target.ip, target.asset.ip Valore del campo dstIP dal log non elaborato
dstPort target.port Valore del campo dstPort dal log non elaborato
event-type metadata.product_event_type Valore del campo event-type dal log non elaborato
eventType metadata.product_event_type, metadata.event_type Se eventType non è vuoto e srcIP e dstIP non sono vuoti, mappa eventType a metadata.product_event_type e mappa "NETWORK_CONNECTION" a metadata.event_type
evntDesc security_result.description Valore del campo evntDesc dal log non elaborato
exe target.process.command_line Valore del campo exe dal log non elaborato
da network.email.from Rimuovi "<" e ">" da from e mappali a network.email.from
gruppo target.user.group_identifiers Valore del campo group dal log non elaborato
gw-ip intermediary.ip, intermediary.asset.ip Valore del campo gw-ip dal log non elaborato
host target.hostname, target.asset.hostname Valore del campo host dal log non elaborato
host-name principal.hostname, principal.asset.hostname Valore del campo host-name dal log non elaborato
nome host principal.hostname, principal.asset.hostname Valore del campo hostname dal log non elaborato
ip target.ip, target.asset.ip Valore del campo ip dal log non elaborato
mx-ip intermediary.ip, intermediary.asset.ip Valore del campo mx-ip dal log non elaborato
objects-list additional.fields.Object_{index}.value.string_value Per ogni oggetto objects-list nel log non elaborato, estrai l'oggetto e mappalo in Object_{index} nel modello UDM, dove index è l'indice dell'oggetto nell'array.
Operazione about.labels.Operation.value Valore del campo Operation dal log non elaborato
Operation type about.labels.Operation Type.value Valore del campo Operation type dal log non elaborato
os-user principal.user.userid, additional.fields.OS User.value.string_value Se os-user non è vuoto e db-user è vuoto, esegui il mapping come campo os-user dal log non elaborato. Altrimenti, mappa come campo OS User dal log non elaborato
Query analizzata target.process.command_line Valore del campo Parsed Query dal log non elaborato
parsed-query additional.fields.Parsed Query.value.string_value Valore del campo parsed-query dal log non elaborato
pid target.process.pid Valore del campo pid dal log non elaborato
policy-id security_result.detection_fields.Policy_ID_{index}.value Per ogni oggetto policy-id nel log non elaborato, estrai il criterio e mappalo in Policy_ID_{index} nell'UDM, dove index è l'indice dell'oggetto nell'array.
policyName security_result.detection_fields.policyName_label.value Valore del campo policyName dal log non elaborato
porta target.port Valore del campo port dal log non elaborato
Con privilegi about.labels.Privileged.value Se Privileged è true, esegui il mapping come "True", altrimenti come "False"
proto network.ip_protocol Valore del campo proto dal log non elaborato
protocollo network.ip_protocol Se protocol è "TCP" o "UDP", esegui la mappatura come campo protocol dal log non elaborato
PWD target.file.full_path Valore del campo PWD dal log non elaborato
Raw Data target.resource.attribute.labels.raw_Data.value Valore del campo Raw Data dal log non elaborato
raw-query additional.fields.Raw Query.value.string_value Valore del campo raw-query dal log non elaborato
ruleName security_result.rule_name Valore del campo ruleName dal log non elaborato
server-group additional.fields.serve_group_label.value.string_value Valore del campo server-group dal log non elaborato
service-name additional.fields.service_name_label.value.string_value Valore del campo service-name dal log non elaborato
Service Type additional.fields.Service Type.value.string_value Valore del campo Service Type dal log non elaborato
dimensioni network.received_bytes Valore del campo size dal log non elaborato
Stored Proc about.labels.Stored_Proc.value Se Stored Proc è true, mappa come "True", altrimenti mappa come "False"
Table Group target.group.group_display_name Valore del campo Table Group dal log non elaborato
timestamp metadata.event_timestamp Valore del campo timestamp dal log non elaborato
a network.email.to Rimuovi "<" e ">" da to e mappalo su network.email.to
UTENTE principal.user.userid, target.user.userid Se USER non è vuoto e USER è "admin", esegui il mapping come campo USER dal log non elaborato a target.user.userid. Altrimenti, se USER non è vuoto, esegui la mappatura come campo USER dal log non elaborato a principal.user.userid
user-authenticated security_result.detection_fields.user_authenticated.value Valore del campo user-authenticated dal log non elaborato
user-group additional.fields.user_group_label.value.string_value Valore del campo user-group dal log non elaborato
nome utente principal.user.user_display_name Valore del campo username dal log non elaborato
usrName principal.user.userid Valore del campo usrName dal log non elaborato
extensions.auth.mechanism Impostato come hardcoded su "USERNAME_PASSWORD" se description contiene "authentication failure" o "check pass; user unknown" o "Invalid user" o "invalid user" o se error non è vuoto
extensions.auth.type Impostato come hardcoded su "AUTHTYPE_UNSPECIFIED" se has_principal è "true", has_target è "true" e event-type è "Login"
metadata.event_type Codificato in modo permanente su "PROCESS_OPEN" se PWD non è vuoto. Codificato in modo permanente su "PROCESS_OPEN" se message contiene "starting" o application è "pman" o "CROND" o "run-parts" e event_type è vuoto. Codificato in modo permanente su "NETWORK_CONNECTION" se description è "Syslog connection established" (Connessione Syslog stabilita), "Syslog connection broken" (Connessione Syslog interrotta) o "Syslog connection failed" (Connessione Syslog non riuscita). Codificato in modo permanente su "EMAIL_UNCATEGORIZED" se application è "postfix/qmgr", "postfix/local" o "postfix/pickup". Impostato come hardcoded su "EMAIL_TRANSACTION" se application è "postfix/local" o "postfix/pickup" e status è "sent (delivered to mailbox)". Codificato in modo permanente su "NETWORK_HTTP" se application è "sshd" e description non contiene "check pass; user unknown" e description non contiene "authentication failure" e description non contiene "invalid". Codificato come "USER_LOGIN" se description contiene "authentication failure" (errore di autenticazione) o "check pass; user unknown" (verifica pass; utente sconosciuto) o "Invalid user" (utente non valido) o "invalid user" (utente non valido) o se error non è vuoto. Codificato in modo permanente su "FILE_SYNC" se file_path non è vuoto. Impostato come hardcoded su "PROCESS_UNCATEGORIZED" se message contiene "reconfigure" e application è "pman". Codificato come "PROCESS_TERMINATION" se message contiene "exit code 1" e application è "pman". Impostato come hardcoded su "NETWORK_CONNECTION" se eventType non è vuoto e srcIP e dstIP non sono vuoti. Codificato in modo permanente su "USER_LOGIN" se has_principal è "true", has_target è "true" e event-type è "Login". Impostato come hardcoded su "NETWORK_CONNECTION" se has_principal è "true", has_target è "true" e protocol non è vuoto. Codificato in modo permanente su "STATUS_UPDATE" se has_principal è "true". Codificato in modo permanente su "GENERIC_EVENT" se event_type è vuoto o "GENERIC_EVENT"
metadata.log_type Codificato in modo permanente su "IMPERVA_DB"
metadata.product_name Impostato come hardcoded su "IMPERVA DB"
metadata.vendor_name Codificato come "IMPERVA DB"
security_result.action Codificato come "ALLOW" se description non contiene "authentication failure" (errore di autenticazione) o "check pass; user unknown" (verifica pass; utente sconosciuto) o "Invalid user" (utente non valido) o "invalid user" (utente non valido) e error è vuoto. Codificato come "BLOCK" se description contiene "authentication failure" o "check pass; user unknown" o "Invalid user" o "invalid user" o se error non è vuoto
security_result.rule_id Se description contiene "alert_score" o "new_alert_score", estrai ruleid da description e mappalo a security_result.rule_id
version metadata.product_version Mappato dal log delle modifiche
source-ip principal.ip Mappato dal log delle modifiche
source-port principal.port Mappato dal log delle modifiche
server-group", "service-name", "user-group", "raw-query", "parsed-query", "bind-variables", "sql-error", "db-schema-pair.db-name", "db-schema-pair.schema-name", and "objects-list additional.fields Mappato dal log delle modifiche
source-application principal.application Mappato dal log delle modifiche
event-id metadata.product_log_id Mappato dal log delle modifiche
application-user principal.user.user_display_name Mappato dal log delle modifiche
mx-ip", "gw-ip intermediary.ip Mappato dal log delle modifiche
policy-id" and "user-authenticated security_result.detection_fields Mappato dal log delle modifiche
srcPort principal.port Mappato dal log delle modifiche
srcIP principal.ip Mappato dal log delle modifiche
event_name metadata.product_event_type 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.