Raccogliere i log CEF di Imperva
Questo documento spiega come importare i log CEF di Imperva in Google Security Operations utilizzando Bindplane. Il parser estrae i log in formato CEF dai messaggi syslog, convertendoli nel formato UDM. Gestisce vari formati di log, estrae le coppie chiave-valore dal payload, esegue trasformazioni e arricchimenti dei dati e mappa i campi estratti con i campi UDM corrispondenti, tra cui informazioni di rete, dettagli utente, geolocalizzazione e risultati di sicurezza.
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 importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- 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
- 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 questa guida all'installazione.
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/etc/bindplane-agent/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.jsonal 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-agentPer riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
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
- Registra 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 dei criteri.
- 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 ai criteri:
- Per gli eventi Sicurezza / Sicurezza di rete: apri le norme 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 sull'insieme di azioni in modo che questi eventi vengano inviati anche tramite CEF.
(Facoltativo) Configura target specifici del gateway:
- Se gruppi di gateway diversi devono inviare a server syslog diversi, configura ogni gruppo di gateway > logger esterno e attiva "Utilizza la configurazione del gateway, se esistente" nel criterio.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logic |
|---|---|---|
act |
security_result.action |
Derivato. Se act è "consentito", "avviso", 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 come "Imperva". |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.