Raccogliere i log di McAfee Web Gateway
Questo documento spiega come importare i log di McAfee Web Gateway in Google Security Operations utilizzando un agente Bindplane. Il parser estrae i campi dai log nei formati SYSLOG + KV (CEF), JSON e non elaborato. Utilizza i filtri grok e CSV per analizzare diverse strutture di log e normalizza i nomi dei campi. Successivamente, mappa i campi estratti allo schema Unified Data Model (UDM), gestendo vari casi limite e incoerenze dei dati per creare un output unificato.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps
- Host Windows 2016 o versioni successive o Linux con systemd
- Se l'esecuzione avviene tramite un proxy, le porte del firewall sono aperte
- Accesso con privilegi a McAfee Web Gateway
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
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 di 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.
Configura l'agente Bindplane per importare Syslog e inviarli 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
,vi
o Blocco note).
- Individua il file
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: '/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 ingestion_labels: log_type: MCAFEE_WEBPROXY raw_log_field: body 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
al 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-agent
Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configura Syslog in McAfee Web Gateway
- Accedi all'UI web di McAfee Web Gateway.
- Vai a Norme > Set di regole.
- Fai clic su Gestore log, espandi il set di regole Predefinito e seleziona il set di regole nidificato CEF Syslog.
- Attiva la regola Send to Syslog (Invia a Syslog).
- Fai clic su Salva modifiche.
- Vai a Configurazione > Appliance > Gestore file di log > Impostazioni.
- Seleziona Scrivi audit log in syslog.
- Vai a Configurazione > Editor file.
- Seleziona rsyslog.conf nell'albero dei file.
- Modifica il file come segue:
- Individua la riga (o simile):
*.info;mail.none;authpriv.none;cron.none /var/log/messages
. - Aggiungi un daemon in questa riga e inserisci un trattino (-) prima delle informazioni sul percorso:
*.info;daemon.!=info;mail.none;authpriv.none;cron.none -/var/log/messages
- Individua la riga (o simile):
Aggiungi una nuova riga in fondo al file per inviare i messaggi informativi all'indirizzo IP dell'agente Bindplane.
Per syslog su UDP:
daemon.info;auth.=info @<bindplane-server-ip>:<bindplane-port>
Per syslog su TCP:
daemon.info;auth.=info @@<bindplane-server-ip>:<bindplane-port>
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
application_name |
principal.application |
Mappato direttamente dal campo application_name in formato KV o user_agent_product in formato JSON. |
auth_user |
principal.user.userid |
Mappato direttamente dal campo auth_user in formato KV. |
block_reason |
security_result.summary |
Mappato direttamente dal campo block_reason nei formati JSON e CSV JSON o _block_reason in formato non elaborato o block_reason in formato KV. |
block_res |
security_result.action |
Mappato dal campo block_res in formato KV. Se block_res è DENIED o contiene Block , l'azione è BLOCK . Se block_res è 0 o contiene Allow , l'azione è ALLOW . I valori speciali come 50 , 51 , 52 , 53 , 58 , 59 , 81 , 80 , 82 , 83 , 84 , 110 , 111 vengono utilizzati per determinare security_result.category . |
bytes_from_client |
network.sent_bytes |
Mappato direttamente dal campo bytes_from_client in formato KV o sr_bytes in formato non elaborato oppure client_to_server_bytes in formato JSON e CSV JSON. |
bytes_to_client |
network.received_bytes |
Mappato direttamente dal campo bytes_to_client in formato KV o rs_bytes in formato non elaborato oppure server_to_client_bytes in formato JSON e CSV JSON. |
categories |
security_result.category_details |
Mappato direttamente dal campo categories in formato KV o _category in formato non elaborato oppure category in formato JSON e CSV JSON. |
client_ip |
principal.ip , intermediary.ip |
Mappato direttamente dal campo client_ip in formato JSON. |
clientIP |
principal.ip |
Mappato direttamente dal campo clientIP in formato CEF. |
csmethod |
network.http.method |
Mappato direttamente dal campo csmethod in formato non elaborato. |
day |
metadata.event_timestamp |
Parte del timestamp, estratta dal campo time_stamp in formato KV. |
destination_ip |
target.ip |
Mappato direttamente dal campo destination_ip in formato JSON. |
destination_port |
target.port |
Mappato direttamente dal campo destination_port in formato JSON. |
domain |
target.hostname , target.url |
Mappato direttamente dal campo domain in formato non elaborato. Utilizzato per costruire target.url se è presente uri . |
header |
intermediary.hostname |
Estratto dall'inizio del messaggio di log. Utilizzato per estrarre intermediary.hostname . |
host |
target.hostname |
Mappato direttamente dal campo host in formato KV. |
hostname |
principal.hostname |
Mappato direttamente dal campo hostname in formato JSON. |
hour |
metadata.event_timestamp |
Parte del timestamp, estratta dal campo time_stamp in formato KV. |
http_action |
network.http.method |
Mappato direttamente dal campo http_action in formato JSON. |
http_status_code |
network.http.response_code |
Mappato direttamente dal campo http_status_code nei formati JSON e CSV JSON o status_code nei formati non elaborati e KV. |
kv_entry.application_name |
principal.application |
Mappato direttamente dal campo application_name all'interno della voce KV. |
kv_entry.auth_user |
principal.user.userid |
Mappato direttamente dal campo auth_user all'interno della voce KV. |
kv_entry.block_reason |
security_result.summary |
Mappato direttamente dal campo block_reason all'interno della voce KV. |
kv_entry.block_res |
security_result.action , security_result.category |
Mappato dal campo block_res all'interno della voce KV. La logica per determinare l'azione e la categoria è la stessa del campo block_res di primo livello. |
kv_entry.bytes_from_client |
network.sent_bytes |
Mappato direttamente dal campo bytes_from_client all'interno della voce KV. |
kv_entry.bytes_to_client |
network.received_bytes |
Mappato direttamente dal campo bytes_to_client all'interno della voce KV. |
kv_entry.categories |
security_result.category_details |
Mappato direttamente dal campo categories all'interno della voce KV. |
kv_entry.host |
target.hostname |
Mappato direttamente dal campo host all'interno della voce KV. |
kv_entry.method |
network.http.method |
Mappato direttamente dal campo method all'interno della voce KV. |
kv_entry.rep_level |
security_result.severity_details |
Mappato direttamente dal campo rep_level all'interno della voce KV. |
kv_entry.server_ip |
target.ip |
Mappato direttamente dal campo server_ip all'interno della voce KV. |
kv_entry.status_code |
network.http.response_code |
Mappato direttamente dal campo status_code all'interno della voce KV. |
kv_entry.time_stamp |
metadata.event_timestamp |
Mappato direttamente dal campo time_stamp all'interno della voce KV. |
kv_entry.url |
target.url |
Mappato direttamente dal campo url all'interno della voce KV. |
kv_entry.url_port |
target.port |
Mappato direttamente dal campo url_port all'interno della voce KV. |
kv_entry.user_agent |
network.http.parsed_user_agent |
Mappato direttamente dal campo user_agent all'interno della voce KV, quindi analizzato in un oggetto strutturato. |
last_rule |
security_result.rule_name |
Mappato direttamente dal campo last_rule in formato JSON. |
loc |
principal.location.country_or_region |
Mappato direttamente dal campo loc estratto da tgt_ip_or_location . |
location |
principal.location.country_or_region |
Mappato direttamente dal campo location in formato JSON. |
log.file.path |
principal.process.file.full_path |
Mappato direttamente dal campo log.file.path in formato JSON. |
message |
Varie | Il messaggio di log non elaborato. Analizzato in modo diverso a seconda del formato (raw, JSON, KV, CEF). |
method |
network.http.method |
Mappato direttamente dal campo method nei formati KV e non elaborati o http_action in formato JSON o derivato dai dati CEF. Se il valore è uno tra GET , POST , HEAD , OPTIONS , PUT , CONNECT , metadata.event_type è impostato su NETWORK_HTTP . Se il valore è - o CERTVERIFY , metadata.event_type è impostato su NETWORK_CONNECTION . |
mins |
metadata.event_timestamp |
Parte del timestamp, estratta dal campo time_stamp in formato KV. |
month |
metadata.event_timestamp |
Parte del timestamp, estratta dal campo time_stamp in formato KV o dal campo rt in formato CEF. |
monthday |
metadata.event_timestamp |
Parte del timestamp, estratta dall'inizio del messaggio di log. |
protocol |
network.application_protocol |
Mappato direttamente dal campo protocol in formato non elaborato o uri_scheme in formato JSON oppure derivato dal campo url in formato KV. |
query |
target.url |
Mappato direttamente dal campo query in formato non elaborato. Aggiunto al campo url . |
rep_level |
security_result.severity_details |
Mappato direttamente dal campo rep_level in formato KV o reputation in formato JSON o _risk in formato non elaborato. Utilizzato per determinare security_result.severity . |
request |
target.url |
Mappato direttamente dal campo request in formato CEF. |
requestClientApplication |
network.http.user_agent |
Mappato direttamente dal campo requestClientApplication in formato CEF. |
requestContext |
network.http.referral_url |
Mappato direttamente dal campo requestContext in formato CEF. |
requestMethod |
network.http.method |
Mappato direttamente dal campo requestMethod in formato CEF. |
requested_host |
target.url |
Mappato direttamente dal campo requested_host in formato JSON. Utilizzato per creare target.url se è presente anche requested_path . |
requested_path |
target.url |
Mappato direttamente dal campo requested_path in formato JSON. Aggiunto a requested_host per formare target.url . |
request_timestamp |
metadata.event_timestamp |
Mappato direttamente dal campo request_timestamp in formato JSON. |
result |
security_result.action , security_result.category |
Mappato direttamente dal campo result nei formati JSON e CSV JSON o block_res nel formato KV. Utilizzato per determinare security_result.action e security_result.category . |
rt |
metadata.event_timestamp |
Mappato direttamente dal campo rt in formato CEF. |
secs |
metadata.event_timestamp |
Parte del timestamp, estratta dal campo time_stamp in formato KV. |
server_ip |
target.ip |
Mappato direttamente dal campo server_ip in formato KV. |
source_ip |
principal.ip |
Mappato direttamente dal campo source_ip nei formati JSON, CSV JSON, non elaborato e KV o src nel formato CEF o src_ip nel formato non elaborato. |
src |
principal.ip |
Mappato direttamente dal campo src in formato CEF. |
status_code |
network.http.response_code |
Mappato direttamente dal campo status_code in formato non elaborato. |
summary |
security_result.summary |
Mappato direttamente dal campo summary in formato CSV o block_reason in formato JSON. |
system |
principal.platform |
Mappato direttamente dal campo system in formato JSON. Convertito in maiuscolo. |
target_ip |
target.ip |
Mappato direttamente dal campo target_ip in formato non elaborato o dst in formato CEF. |
tgtport |
target.port |
Mappato direttamente dal campo tgtport in formato non elaborato. |
time |
metadata.event_timestamp |
Parte del timestamp, estratta dall'inizio del messaggio di log, o il campo rt in formato CEF o il campo time_stamp in formato KV. |
timestamp |
metadata.event_timestamp |
Mappato direttamente dal campo @timestamp in formato JSON. |
timezone |
metadata.event_timestamp |
Parte del timestamp, estratta dal campo time_stamp in formato KV. |
uri |
target.url |
Mappato direttamente dal campo uri in formato non elaborato. Utilizzato per costruire target.url . |
uri_scheme |
network.application_protocol |
Mappato direttamente dal campo uri_scheme in formato JSON. Convertito in maiuscolo. |
url |
target.url |
Mappato direttamente dal campo url nei formati non elaborato, KV e JSON oppure creato da domain , uri e query in formato non elaborato oppure da requested_host e requested_path in formato JSON oppure da request in formato CEF. |
url_port |
target.port |
Mappato direttamente dal campo url_port in formato KV. |
user |
principal.user.userid |
Mappato direttamente dal campo user in formato JSON o username in formato JSON o auth_user in formato KV o suser in formato non elaborato. |
user_agent |
network.http.parsed_user_agent |
Mappato direttamente dal campo user_agent nei formati non elaborato e KV o user_agent_comment in formato JSON o requestClientApplication in formato CEF o costruito da agent.type e agent.version in formato JSON. Analizzato in un oggetto strutturato. |
user_agent_comment |
network.http.parsed_user_agent |
Mappato direttamente dal campo user_agent_comment in formato JSON. |
user_agent_product |
principal.application |
Mappato direttamente dal campo user_agent_product in formato JSON. |
username |
principal.user.userid |
Mappato direttamente dal campo username in formato JSON. |
year |
metadata.event_timestamp |
Parte del timestamp, estratta dal campo time_stamp in formato KV o dal campo rt in formato CEF. |
N/A | metadata.event_type |
Determinato dal parser in base al campo method . Può essere NETWORK_HTTP , NETWORK_CONNECTION , GENERIC_EVENT o STATUS_UPDATE . |
N/A | metadata.log_type |
Codificato in modo permanente su MCAFEE_WEBPROXY . |
N/A | metadata.product_name |
Codificato in modo permanente su MCAFEE_WEBPROXY . |
N/A | metadata.vendor_name |
Codificato in modo permanente su MCAFEE . |
N/A | network.direction |
Codificato in modo permanente su OUTBOUND . |
N/A | security_result.action |
Determinato dal parser in base ai campi block_reason o result . Può essere ALLOW o BLOCK . |
N/A | security_result.category |
Determinato dal parser in base al campo result . Può essere NETWORK_CATEGORIZED_CONTENT , NETWORK_DENIAL_OF_SERVICE , MAIL_SPAM , AUTH_VIOLATION , SOFTWARE_MALICIOUS , NETWORK_SUSPICIOUS o NETWORK_MALICIOUS . |
N/A | security_result.severity |
Determinato dal parser in base al campo risk . Può essere LOW , MEDIUM o HIGH . |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.