Raccogli i log CEF di Imperva
Questo documento spiega come importare i log CEF di Imperva in Google Security Operations utilizzando l'agente Bindplane.
L'analizzatore sintattico estrae i campi dai log formattati syslog di Imperva in CEF (Common Event Format). Utilizza grok e/o kv per analizzare il messaggio CEF e poi mappa questi valori nel modello di dati unificato (UDM). Imposta anche i valori predefiniti dei metadati per l'origine e il tipo di evento.
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 o all'appliance Imperva
Recuperare il file di autenticazione dell'importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione dell'acquisizione.
- Salva il file in modo sicuro sul sistema in cui verrà installato l'agente Bindplane.
Recuperare l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- 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
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installazione di Linux
- Apri un terminale con privilegi root o sudo.
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
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 di installazione su Windows. - Apri il file utilizzando un editor di testo (ad esempio
nano,vio Blocco note).
- Individua il file
Modifica il file
config.yamlcome 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_CEF' 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.jsoncon il percorso del file in cui è stato salvato il file di autenticazione nel passaggio 1.
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart observiq-otel-collectorPer 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 Imperva WAF Gateway (SecureSphere) per inviare CEF tramite syslog
Nella console MX, crea un insieme di azioni:
- Vai a Norme > Set di azioni.
- Fai clic su Nuovo e assegnale un nome (ad esempio,
Google SecOps CEF).
Aggiungi l'interfaccia di azione syslog CEF:
- In Interfacce azioni disponibili, apri Log di sistema e aggiungi uno o più dei seguenti elementi (se necessario):
- Registrare l'evento di sicurezza nel log di sistema (syslog) utilizzando lo standard CEF
- Registra l'evento di sicurezza di rete nel log di sistema (syslog) utilizzando lo standard CEF
- Registrare l'evento di sistema nel log di sistema (syslog) utilizzando lo standard CEF
- Registrare l'evento di sicurezza personalizzato nel log di sistema (syslog) utilizzando lo standard CEF
- In Interfacce azioni disponibili, apri Log di sistema e aggiungi uno o più dei seguenti elementi (se necessario):
Configura i parametri dell'interfaccia Azioni:
- Host Syslog: inserisci l'indirizzo IP dell'agente Bindplane. Per utilizzare una porta non predefinita, aggiungi
:PORT(il valore predefinito è 514 se non ne specifichi una). Esempio:10.0.0.10:514. - Facility / Log Level: imposta in base ai requisiti delle norme.
- Messaggio: lascia i valori predefiniti del fornitore per CEF, a meno che tu non abbia un mapping personalizzato.
- Host Syslog: inserisci l'indirizzo IP dell'agente Bindplane. Per utilizzare una porta non predefinita, aggiungi
Collega il set di azioni alle policy:
- Per gli eventi Sicurezza / Sicurezza di rete: apri le policy pertinenti e imposta Azione eseguita sul tuo insieme di azioni.
- Per gli Eventi di sistema: crea o verifica una norma Eventi di sistema e imposta Azione eseguita sul tuo insieme di azioni in modo che questi eventi vengano inviati anche tramite CEF.
(Facoltativo) Configura target specifici per il gateway:
- Se gruppi di gateway diversi devono inviare a server syslog diversi, configura ogni gruppo di gateway > logger esterno e attiva l'opzione "Usa la configurazione del gateway, se esistente" nel criterio.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
act |
security_result.action |
Derivato. Se act è "allowed", "alert", inizia con "REQ_PASSED" o con "REQ_CACHED", allora action è "ALLOW". Se act è "deny", "blocked", inizia con "REQ_BLOCKED" o con "REQ_CHALLENGE", allora action è "BLOCK". Se act corrisponde all'espressione regolare (?i)REQ_BAD, action è "FAIL". In caso contrario, action è "UNKNOWN_ACTION". security_result.action viene quindi impostato sul valore di action. |
act |
security_result.action_details |
Derivato. In base al valore di act, viene generata una descrizione dettagliata. Esempi: "REQ_CACHED_FRESH: response was returned from the data center's cache", "REQ_BLOCKED: the request was blocked". |
app |
network.application_protocol |
Mappato direttamente dopo la conversione in maiuscolo. |
cs1 |
security_result.detection_fields.value |
Mappato in modo condizionale se cs1 non è vuoto o "N/A". security_result.detection_fields.key è impostato sul valore di cs1Label. |
cs1Label |
security_result.detection_fields.key |
Mappato in modo condizionale se cs1 non è vuoto o "N/A". security_result.detection_fields.value è impostato sul valore di cs1. |
cs2 |
security_result.detection_fields.value |
Mappato in modo condizionale se non è vuoto. security_result.detection_fields.key è impostato sul valore di cs2Label. |
cs2Label |
security_result.detection_fields.key |
Mappato in modo condizionale se cs2 non è vuoto. security_result.detection_fields.value è impostato sul valore di cs2. |
cs3 |
security_result.detection_fields.value |
Mappato in modo condizionale se non è vuoto o "-". security_result.detection_fields.key è impostato sul valore di cs3Label. |
cs3Label |
security_result.detection_fields.key |
Mappato in modo condizionale se cs3 non è vuoto o "-". security_result.detection_fields.value è impostato sul valore di cs3. |
cs4 |
security_result.detection_fields.value |
Mappato in modo condizionale se non è vuoto. security_result.detection_fields.key è impostato sul valore di cs4Label. |
cs4Label |
security_result.detection_fields.key |
Mappato in modo condizionale se cs4 non è vuoto. security_result.detection_fields.value è impostato sul valore di cs4. |
cs5 |
security_result.detection_fields.value |
Mappato in modo condizionale se non è vuoto. security_result.detection_fields.key è impostato sul valore di cs5Label. |
cs5Label |
security_result.detection_fields.key |
Mappato in modo condizionale se cs5 non è vuoto. security_result.detection_fields.value è impostato sul valore di cs5. |
cs6 |
security_result.detection_fields.value |
Mappato in modo condizionale se non è vuoto. security_result.detection_fields.key è impostato sul valore di cs6Label. |
cs6Label |
security_result.detection_fields.key |
Mappato in modo condizionale se cs6 non è vuoto. security_result.detection_fields.value è impostato sul valore di cs6. |
cs7 |
principal.location.region_latitude |
Mappato in modo condizionale se cs7Label è "latitude". |
cs8 |
principal.location.region_longitude |
Mappato in modo condizionale se cs8Label è "longitude". |
cn1 |
security_result.detection_fields.value |
Mappato in modo condizionale se non è vuoto e cn1Label non è vuoto. security_result.detection_fields.key è impostato sul valore di cn1Label. |
cn1Label |
security_result.detection_fields.key |
Mappato in modo condizionale se cn1 e cn1Label non sono vuoti. security_result.detection_fields.value è impostato sul valore di cn1. |
fileType |
security_result.detection_fields.value |
Mappato in modo condizionale se non è vuoto. security_result.detection_fields.key è impostato su "fileType". |
filePermission |
security_result.detection_fields.value |
Mappato in modo condizionale se non è vuoto. security_result.detection_fields.key è impostato su "filePermission". |
request |
target.url |
Mappato direttamente. |
requestClientApplication |
network.http.user_agent |
Mappato in modo condizionale se non è vuoto. Sovrascrive il valore mappato dal campo user_agent estratto dalle coppie chiave-valore requestContext o requestClientApplication nel payload CEF. |
requestMethod |
network.http.method |
Mappato direttamente. |
siteid |
security_result.detection_fields.value |
Mappato in modo condizionale se non è vuoto. security_result.detection_fields.key è impostato su "siteid". |
sourceServiceName |
target.hostname |
Mappato direttamente. Sovrascrive il valore di dhost, se presente. |
src |
principal.ip |
Mappato direttamente. |
start |
metadata.event_timestamp.seconds |
Estratto utilizzando un pattern grok e convertito in un timestamp. Utilizzato come fallback per deviceReceiptTime se non è presente. Se sia deviceReceiptTime che start sono vuoti, viene utilizzato il timestamp del log. |
suid |
principal.user.userid |
Mappato in modo condizionale se non è vuoto. |
| N/D | metadata.event_type |
Codificato come "NETWORK_HTTP". |
| N/D | metadata.log_type |
Mappato direttamente dal campo log_type di primo livello. |
| N/D | metadata.product_event_type |
Mappato da csv.event_id se non è vuoto. |
| N/D | metadata.product_name |
Codificato in modo permanente su "Web Application Firewall". |
| N/D | metadata.vendor_name |
Codificato in modo permanente su "Imperva". |
kv.act |
event.idm.read_only_udm.security_result.action_details |
Mappato dal log delle modifiche |
kv.sourceServiceName |
event.idm.read_only_udm.target.resource.name |
Mappato dal log delle modifiche |
cicode |
event.idm.read_only_udm.principal.location.city |
Mappato dal log delle modifiche |
ccode |
event.idm.read_only_udm.principal.location.country_or_region |
Mappato dal log delle modifiche |
Customer |
event.idm.read_only_udm.network.organization_name |
Mappato dal log delle modifiche |
tls_cipher |
event.idm.read_only_udm.network.tls.cipher |
Mappato dal log delle modifiche |
cpt |
event.idm.read_only_udm.target.port |
Mappato dal log delle modifiche |
fileId |
event.idm.read_only_udm.target.resource.product_object_id |
Mappato dal log delle modifiche |
dproc |
event.idm.read_only_udm.security_result.category_details |
Mappato dal log delle modifiche |
deviceFacility |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
deviceExternalId |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
end |
event.idm.read_only_udm.metadata.collected_timestamp |
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.