Raccogli i log di gestione di Imperva SecureSphere
Questo documento spiega come importare i log di gestione di Imperva SecureSphere in Google Security Operations utilizzando l'agente Bindplane.
Imperva SecureSphere è una piattaforma di sicurezza per web application firewall, database e file che genera messaggi syslog in formato CEF per eventi di sicurezza, eventi di sistema e violazioni delle norme. Il parser estrae i campi dai messaggi CEF utilizzando l'analisi grok e coppia chiave-valore e li mappa al modello UDM (Unified Data Model).
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Windows Server 2016 o versioni successive oppure host Linux con
systemd - Connettività di rete tra l'agente Bindplane e il server di gestione Imperva SecureSphere
- Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane.
- Accesso privilegiato alla console di gestione di Imperva SecureSphere
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 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 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" /quietAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sc query observiq-otel-collectorIl servizio dovrebbe essere visualizzato come IN ESECUZIONE.
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.shAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sudo systemctl status observiq-otel-collectorIl servizio dovrebbe essere visualizzato come attivo (in esecuzione).
Risorse aggiuntive per l'installazione
Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la guida all'installazione dell'agente Bindplane.
Configura l'agente Bindplane per importare syslog e inviarli a Google SecOps
Individua il file di configurazione
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifica il file di configurazione
Sostituisci l'intero contenuto di
config.yamlcon la seguente configurazione:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/imperva_securesphere: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: IMPERVA_SECURESPHERE raw_log_field: body service: pipelines: logs/imperva_securesphere_to_chronicle: receivers: - udplog exporters: - chronicle/imperva_securesphere
Parametri di configurazione
Sostituisci i seguenti segnaposto:
Configurazione del ricevitore:
listen_address: Indirizzo IP e porta da ascoltare:0.0.0.0per ascoltare su tutte le interfacce (consigliato)- La porta
514è la porta syslog standard (richiede l'accesso root su Linux; utilizza1514per l'accesso non root)
Configurazione dell'esportatore:
creds_file_path: percorso completo del file di autenticazione importazione:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: ID cliente copiato dalla console Google SecOpsendpoint: URL endpoint regionale:- Stati Uniti:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Per un elenco completo, vedi Endpoint regionali.
- Stati Uniti:
Salvare il file di configurazione
- Dopo la modifica, salva il file:
- Linux: premi
Ctrl+O, poiEntere infineCtrl+X. - Windows: fai clic su File > Salva.
- Linux: premi
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart observiq-otel-collectorVerifica che il servizio sia in esecuzione:
sudo systemctl status observiq-otel-collectorControlla i log per individuare eventuali errori:
sudo journalctl -u observiq-otel-collector -f
Per riavviare l'agente Bindplane in Windows, scegli una delle seguenti opzioni:
Prompt dei comandi o PowerShell come amministratore:
net stop observiq-otel-collector && net start observiq-otel-collectorConsole Services:
- Premi
Win+R, digitaservices.msce premi Invio. - Individua observIQ OpenTelemetry Collector.
- Fai clic con il tasto destro del mouse e seleziona Riavvia.
Verifica che il servizio sia in esecuzione:
sc query observiq-otel-collectorControlla i log per individuare eventuali errori:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Premi
Configurare l'inoltro di syslog su Imperva SecureSphere Management
- Accedi alla console di gestione Imperva SecureSphere.
- Vai a Configurazione > Set di azioni.
- Fai clic su Aggiungi per creare un nuovo insieme di azioni.
- Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci un nome descrittivo (ad esempio,
Google SecOps Syslog).
- Nome: inserisci un nome descrittivo (ad esempio,
Configura l'azione dell'evento di sicurezza
Fai clic su Aggiungi azione e configura:
- Action Type (Tipo di azione): seleziona 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.
- Livello di log Syslog: seleziona DEBUG.
- Syslog Facility: seleziona LOCAL0.
- Formato messaggio: seleziona Gateway Log - Security Event - System Log (syslog) using CEF standard (Log gateway - Evento di sicurezza - Log di sistema (syslog) utilizzando lo standard CEF).
Configura l'azione dell'evento di sistema
Fai clic su Aggiungi azione e configura:
- Action Type (Tipo di azione): seleziona System Log (Log di sistema).
- Host: inserisci l'indirizzo IP dell'agente Bindplane.
- Porta: inserisci il numero di porta dell'agente Bindplane.
- Protocollo: seleziona UDP o TCP.
- Formato messaggio: seleziona Registra evento di sistema nel log di sistema (syslog) utilizzando lo standard CEF.
Applicare set di azioni ai criteri
- Vai a Norme > Norme di sicurezza.
- Per ogni norma pertinente, configura Azioni eseguite in modo che utilizzi il tuo insieme di azioni.
- Vai a Norme > Norme sugli eventi di sistema.
- Configura le policy per gli eventi di sistema in modo che utilizzino il set di azioni per un monitoraggio completo.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logic |
|---|---|---|
action |
security_result.action_details |
Il valore del campo action viene assegnato al campo security_result.action_details. |
application-name |
target.application |
Il valore del campo application-name viene assegnato al campo target.application. |
cat |
security_result.category_details |
Il valore del campo cat viene assegnato al campo security_result.category_details. |
class |
security_result.detection_fields.value |
Il valore del campo class viene assegnato al campo value all'interno di security_result.detection_fields. Il key corrispondente è "class". |
collection_time.seconds |
metadata.event_timestamp.seconds |
Il valore di collection_time.seconds del log non elaborato viene utilizzato come valore dei secondi per metadata.event_timestamp. |
create-time |
metadata.event_timestamp.seconds |
Il valore di create-time viene analizzato e il suo valore in secondi viene utilizzato come valore in secondi per metadata.event_timestamp. |
cs1 |
security_result.rule_name |
Il valore del campo cs1 viene assegnato al campo security_result.rule_name. |
cs10 |
target.resource.attribute.labels.value |
Il valore del campo cs10 viene assegnato al campo value all'interno di target.resource.attribute.labels. |
cs10Label |
target.resource.attribute.labels.key |
Il valore del campo cs10Label viene assegnato al campo key all'interno di target.resource.attribute.labels. |
cs11 |
principal.application |
Il valore del campo cs11 viene assegnato al campo principal.application. |
cs12 |
security_result.description |
Il valore del campo cs12, dopo aver rimosso le parentesi graffe e i simboli del dollaro, viene assegnato al campo security_result.description. |
cs14 |
target.resource.attribute.labels.value |
Il valore del campo cs14 viene assegnato al campo value all'interno di target.resource.attribute.labels. |
cs14Label |
target.resource.attribute.labels.key |
Il valore del campo cs14Label viene assegnato al campo key all'interno di target.resource.attribute.labels. |
cs15 |
security_result.summary |
Il valore del campo cs15 viene assegnato al campo security_result.summary. |
cs16 |
principal.process.command_line |
Il valore del campo cs16 viene assegnato al campo principal.process.command_line. |
cs17 |
target.resource.resource_subtype |
Il valore del campo cs17 viene assegnato al campo target.resource.resource_subtype. |
cs2 |
principal.group.group_display_name |
Il valore del campo cs2 viene assegnato al campo principal.group.group_display_name. |
cs3 |
principal.hostname, principal.asset.hostname |
Il valore del campo cs3 viene assegnato sia al campo principal.hostname che al campo principal.asset.hostname. |
cs4 |
target.application |
Il valore del campo cs4 viene assegnato al campo target.application, a meno che il valore non sia "ProcessWitness". |
cs5 |
metadata.description |
Il valore del campo cs5 viene assegnato al campo metadata.description. |
cs6 |
target.resource_ancestors.name |
Il valore del campo cs6 viene assegnato al campo target.resource_ancestors.name. |
cs7 |
target.resource_ancestors.resource_subtype |
Il valore del campo cs7 viene assegnato al campo target.resource_ancestors.resource_subtype. |
cs8 |
target.resource.name, target.resource.resource_type |
Il valore del campo cs8 viene assegnato al campo target.resource.name e target.resource.resource_type è impostato su "DATABASE". |
cs9 |
principal.user.userid |
Il valore del campo cs9 viene assegnato al campo principal.user.userid. |
description |
security_result.description |
Il valore del campo description viene assegnato al campo security_result.description. |
dest-ip |
target.ip, target.asset.ip |
L'indirizzo IP estratto dal campo dest-ip viene assegnato sia al campo target.ip che al campo target.asset.ip. |
dest-port |
target.port |
Il valore del campo dest-port, convertito in un numero intero, viene assegnato al campo target.port. |
deviceExternalId |
intermediary.hostname |
Il valore del campo deviceExternalId viene assegnato al campo intermediary.hostname. |
dpt |
target.port |
Il valore del campo dpt, convertito in un numero intero, viene assegnato al campo target.port. |
dst |
target.ip, target.asset.ip |
Il valore del campo dst viene assegnato sia al campo target.ip che al campo target.asset.ip. |
duser |
target.user.userid |
Il valore del campo duser viene assegnato al campo target.user.userid. |
eventId |
metadata.product_log_id |
Il valore del campo eventId viene assegnato al campo metadata.product_log_id. |
gateway-name |
security_result.detection_fields.value |
Il valore del campo gateway-name viene assegnato al campo value all'interno di security_result.detection_fields. Il key corrispondente è "gateway-name". |
http.request.method |
network.http.method |
Il valore del campo http.request.method viene assegnato al campo network.http.method. |
http.request.user-agent |
network.http.user_agent |
Il valore del campo http.request.user_agent viene assegnato al campo network.http.user_agent. |
http.response.code |
network.http.response_code |
Il valore del campo http.response.code, convertito in un numero intero, viene assegnato al campo network.http.response_code. |
http.session-id |
network.session_id |
Il valore del campo http.session-id viene assegnato al campo network.session_id. |
http.user-name |
principal.user.userid |
Il valore del campo http.user-name, con le virgolette circostanti rimosse, viene assegnato al campo principal.user.userid. |
log_type |
metadata.log_type |
Il valore del campo log_type del log non elaborato viene assegnato al campo metadata.log_type. |
mx-ip |
intermediary.ip |
Il valore del campo mx-ip viene assegnato al campo intermediary.ip. |
MxIP |
intermediary.ip |
Il valore del campo MxIP viene assegnato al campo intermediary.ip. |
OSUser |
principal.user.userid |
Il valore del campo OSUser viene assegnato al campo principal.user.userid. |
policy-name |
security_result.detection_fields.value |
Il valore del campo policy-name viene assegnato al campo value all'interno di security_result.detection_fields. Il key corrispondente è "policy-name". |
pquery |
target.resource.name, target.process.command_line |
Se pquery non è vuoto e contiene la parola "from", il nome della tabella viene estratto e assegnato a target.resource.name, target.resource.resource_type viene impostato su "TABLE" e l'intero valore di pquery viene assegnato a target.process.command_line. In caso contrario, l'intero valore pquery viene assegnato a target.resource.name. |
pro |
security_result.description |
Il valore del campo pro viene assegnato al campo security_result.description. |
product |
metadata.product_name |
Il valore del campo product viene assegnato al campo metadata.product_name. |
product_type |
metadata.product_event_type |
Il valore del campo product_type viene assegnato al campo metadata.product_event_type. |
protocol |
network.ip_protocol |
Se il valore del campo protocol è "TCP" o "UDP", viene assegnato al campo network.ip_protocol. |
proto |
network.ip_protocol |
Il valore del campo proto viene assegnato al campo network.ip_protocol. |
reason |
security_result.rule_name |
Il valore del campo reason viene assegnato al campo security_result.rule_name. |
rt |
metadata.event_timestamp.seconds |
Il valore di rt viene analizzato e il suo valore in secondi viene utilizzato come valore in secondi per metadata.event_timestamp. |
server-group-name |
target.resource.attribute.labels.value |
Il valore del campo server-group-name viene assegnato al campo value all'interno di target.resource.attribute.labels. Il key corrispondente è "server-group-name". |
server-group-simulation-mode |
target.resource.attribute.labels.value |
Il valore del campo server-group-simulation-mode viene assegnato al campo value all'interno di target.resource.attribute.labels. Il key corrispondente è "server-group-simulation-mode". |
service-name |
target.resource.attribute.labels.value |
Il valore del campo service-name viene assegnato al campo value all'interno di target.resource.attribute.labels. Il key corrispondente è "service-name". |
ServiceName |
target.application |
Se ApplicationName non è vuoto e ServiceName è vuoto, il valore di ApplicationName viene assegnato a ServiceName. Il valore di ServiceName viene quindi assegnato a target.application. |
severity |
security_result.severity, security_result.severity_details |
Il valore del campo severity viene convertito in maiuscolo. Se è uno dei valori "LOW", "MEDIUM", "HIGH", "CRITICAL", viene assegnato a security_result.severity. Se è "INFORMATIVE" o "INFO", security_result.severity è impostato su "INFORMATIONAL". Il valore originale viene assegnato anche a security_result.severity_details. |
severity_data |
security_result.severity |
Il valore del campo severity_data viene convertito in maiuscolo. Se è uno dei seguenti valori: "HIGH", "LOW", "MEDIUM", "CRITICAL", "ERROR", "INFORMATIONAL", viene assegnato a security_result.severity. |
source-ip |
principal.ip, principal.asset.ip |
Il valore del campo source-ip viene assegnato sia al campo principal.ip che al campo principal.asset.ip. |
source-port |
principal.port |
Il valore del campo source-port, convertito in un numero intero, viene assegnato al campo principal.port. |
spt |
principal.port |
Il valore del campo spt, convertito in un numero intero, viene assegnato al campo principal.port. |
src |
principal.ip, principal.asset.ip |
Il valore del campo src viene assegnato sia al campo principal.ip che al campo principal.asset.ip. |
srcapp |
principal.application |
Il valore del campo srcapp viene assegnato al campo principal.application. |
srchost |
principal.hostname, principal.asset.hostname |
Il valore del campo srchost viene assegnato sia al campo principal.hostname che al campo principal.asset.hostname. |
vendor |
metadata.vendor_name |
Il valore del campo vendor viene assegnato al campo metadata.vendor_name. |
version |
metadata.product_version |
Il valore del campo version viene assegnato al campo metadata.product_version. |
violation-id |
security_result.detection_fields.value |
Il valore del campo violation-id viene assegnato al campo value all'interno di security_result.detection_fields. Il key corrispondente è "violation-id". |
violation-type |
security_result.detection_fields.value |
Il valore del campo violation-type viene assegnato al campo value all'interno di security_result.detection_fields. Il key corrispondente è "violation-type". |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.