Raccogli i log di WatchGuard Firebox
Questo documento spiega come importare i log di WatchGuard Firebox in Google Security Operations utilizzando Bindplane. WatchGuard Firebox è un'appliance firewall UTM (Unified Threat Management) che fornisce funzionalità di sicurezza di rete, tra cui ispezione dei pacchetti stateful, prevenzione delle intrusioni, controllo delle applicazioni, filtro URL, antivirus gateway e connettività VPN. I log di Firebox acquisiscono eventi di traffico, avvisi di sicurezza, attività di autenticazione e informazioni sullo stato del sistema.
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'esecuzione avviene dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane.
- Accesso con privilegi alla UI web di WatchGuard Firebox (UI web di Fireware) o a WatchGuard System Manager.
Ottieni le credenziali di Google SecOps per l'agente Bindplane
Per autenticare l'agente Bindplane in Google SecOps, scegli uno dei seguenti metodi:
- Nuovi deployment: utilizza l'API Chronicle (opzione 1).
- Deployment legacy: continua a utilizzare il file di autenticazione dell'acquisizione (Opzione 2) fino alla dismissione dell'API Ingestion il 20 luglio 2027.
Opzione 1: crea un account di servizio per l'API Chronicle (consigliata)
- Accedi alla consoleGoogle Cloud e seleziona il progetto Google Cloud collegato alla tua istanza Google SecOps.
- Vai a IAM e amministrazione > Service account.
- Fai clic su Crea service account.
- Fornisci i seguenti dettagli di configurazione:
- Nome service account: inserisci un nome per l'account (ad esempio,
bindplane-ingest). - Descrizione service account: inserisci una descrizione (ad esempio
Bindplane agent log ingestion).
- Nome service account: inserisci un nome per l'account (ad esempio,
- Fai clic su Crea e continua.
- Nella sezione Concedi a questo account di servizio l'accesso al progetto, fai clic su Seleziona un ruolo e seleziona Editor Chronicle.
- Fai clic su Continua, quindi su Fine.
- Fai clic sul account di servizio che hai creato, quindi vai alla scheda Chiavi.
- Fai clic su Aggiungi chiave > Crea nuova chiave.
- Seleziona JSON e fai clic su Crea. Il file della chiave viene scaricato sul tuo computer.
- Salva il file della chiave come
ingestion-auth.jsonnella directory del raccoglitore Bindplane (/opt/observiq-otel-collector/ingestion-auth.jsonsu Linux oC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsonsu Windows) o aggiornacreds_file_pathinconfig.yamlin modo che corrisponda al percorso in cui lo salvi. - Vai a IAM e amministrazione > Impostazioni e copia il Numero progetto. Ti servirà per la configurazione dell'esportatore.
Opzione 2: scarica il file di autenticazione dell'acquisizione (legacy)
- 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 organizzazione.
Installa l'agente Bindplane
Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.
Installazione di finestre
- 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 il 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: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' 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: YOUR_CUSTOMER_ID endpoint: chronicle.googleapis.com # Add optional ingestion labels for better organization log_type: 'WATCHGUARD' 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 come richiesto nella tua infrastruttura.
- Sostituisci
<LOCATION>con la regione della tua istanza Google SecOps (ad esempious,europeoasia-southeast1). L'esportatore anteponechronicle.googleapis.coma questo valore. - Sostituisci
<PROJECT_NUMBER>con il numero di progetto indicato in IAM e amministrazione > Impostazioni. - Sostituisci
YOUR_CUSTOMER_IDcon l'ID cliente effettivo. - Aggiorna
/path/to/ingestion-authentication-file.jsoncon il percorso del file in cui è stato salvato il file della chiave del account di servizio (Opzione 1) nel Passaggio 1.
Esportatore API di importazione legacy
Se utilizzi il file di autenticazione dell'acquisizione dell'Opzione 2, sostituisci il blocco
exporterscon il seguente. Impostacreds_file_pathsul percorso del file di autenticazione dell'acquisizione e, se l'istanza si trova al di fuori degli Stati Uniti, sostituiscimalachiteingestion-pa.googleapis.comcon il tuo endpoint regionale (ad esempio,europe-malachiteingestion-pa.googleapis.com).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: YOUR_CUSTOMER_ID endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'WATCHGUARD' raw_log_field: body ingestion_labels:
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 l'inoltro del syslog di WatchGuard Firebox
Per configurare WatchGuard Firebox in modo che inoltri i messaggi syslog all'agente Bindplane, segui questi passaggi utilizzando l'interfaccia web di Fireware:
- Accedi alla UI web di Fireware (
https://<firebox-ip>:8080). - Vai a Sistema > Logging.
- Fai clic su Add (Aggiungi) nella sezione Syslog Servers (Server Syslog).
Fornisci i seguenti dettagli di configurazione:
- Indirizzo IP: inserisci l'indirizzo IP dell'host dell'agente Bindplane (ad esempio,
192.168.1.100). - Port (Porta): inserisci
514(o la porta configurata nell'agente Bindplane). - Formato log: seleziona Syslog (formato syslog BSD standard).
- Indirizzo IP: inserisci l'indirizzo IP dell'host dell'agente Bindplane (ad esempio,
Nella sezione Syslog Settings (Impostazioni Syslog), configura il livello di log:
- Imposta Log Level (Livello di log) su Information (Informazioni) o su un valore superiore per acquisire eventi di traffico, sicurezza e sistema.
Fai clic su Salva.
Configura i tipi di log da inoltrare
- Nella Fireware Web UI, vai a System > Logging > Syslog.
Assicurati che i seguenti tipi di log siano abilitati per l'inoltro syslog:
- Traffico: eventi di traffico del firewall (consenti, nega).
- Allarme: eventi di IPS e allarme di sicurezza.
- Evento: eventi di sistema e modifiche di stato.
- Debug: facoltativo, solo per la risoluzione dei problemi.
Fai clic su Salva.
(Alternativa) Configura tramite WatchGuard System Manager
- Apri WatchGuard System Manager e connettiti a Firebox.
- Vai a Setup > Logging > Send log messages to this syslog server (Configurazione > Logging > Invia messaggi di log a questo server syslog).
- Fai clic su Aggiungi.
Fornisci i seguenti dettagli di configurazione:
- Indirizzo IP: inserisci l'indirizzo IP dell'host dell'agente Bindplane.
- Porta: inserisci
514. - Formato log: seleziona Syslog.
Fai clic su Ok e salva la configurazione in Firebox.
Per saperne di più, consulta la documentazione di logging di WatchGuard Fireware.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
action |
security_result.action_details |
Il valore di action del log non elaborato viene assegnato a security_result.action_details. |
action |
target.labels.value |
Il valore di action del log non elaborato viene assegnato a target.labels.value, con target.labels.key che corrisponde ad "Azione sulla risorsa". |
arg |
target.file.full_path |
Il valore di arg del log non elaborato viene assegnato a target.file.full_path. |
app_cat_id |
about.labels.value |
Il valore di app_cat_id del log non elaborato viene assegnato a about.labels.value, con about.labels.key impostato su "app_cat_id". |
app_cat_name |
target.application |
Utilizzato in combinazione con app_name per formare il valore di target.application (ad es. "Google - Servizi web"). |
app_id |
about.labels.value |
Il valore di app_id del log non elaborato viene assegnato a about.labels.value, con about.labels.key che è "app_id". |
app_name |
target.application |
Utilizzato in combinazione con app_cat_name per formare il valore di target.application (ad es. "Google - Servizi web"). |
cats |
security_result.category_details |
Il valore di cats del log non elaborato viene assegnato a security_result.category_details. |
cert_issuer |
network.tls.server.certificate.issuer |
Il valore di cert_issuer del log non elaborato viene assegnato a network.tls.server.certificate.issuer. |
cert_subject |
network.tls.server.certificate.subject |
Il valore di cert_subject del log non elaborato viene assegnato a network.tls.server.certificate.subject. |
cn |
network.tls.server.certificate.subject |
Il valore di cn del log non elaborato viene assegnato a network.tls.server.certificate.subject. |
conn_action |
security_result.action_details |
Il valore di conn_action del log non elaborato viene assegnato a security_result.action_details. |
content_type |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
description |
metadata.description |
Il valore di description derivato dal log non elaborato viene assegnato a metadata.description. |
dhcp_type |
network.dhcp.type |
Il valore di dhcp_type del log non elaborato viene mappato al tipo DHCP corrispondente in network.dhcp.type (ad es. "REQUEST", "ACK"). |
dst_host |
target.hostname |
Il valore di dst_host del log non elaborato viene assegnato a target.hostname. |
dst_ip |
target.ip |
Il valore di dst_ip del log non elaborato viene assegnato a target.ip. |
dst_mac |
target.mac |
Il valore di dst_mac del log non elaborato viene assegnato a target.mac. |
dst_port |
target.port |
Il valore di dst_port del log non elaborato viene assegnato a target.port. |
dst_user |
target.user.user_display_name |
Il valore di dst_user del log non elaborato viene assegnato a target.user.user_display_name. |
dstname |
target.administrative_domain |
Il valore di dstname del log non elaborato viene assegnato a target.administrative_domain. |
duration |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
elapsed_time |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
endpoint |
intermediary.labels.value |
Il valore di endpoint del log non elaborato viene assegnato a intermediary.labels.value, con intermediary.labels.key che è "Gateway-Endpoint". |
event_name |
principal.application |
Il valore di event_name del log non elaborato viene assegnato a principal.application. |
firewall_id |
intermediary.asset_id |
Il valore di firewall_id del log non elaborato viene preceduto da "ID firewall : " e assegnato a intermediary.asset_id. |
firewall_name |
principal.asset_id |
Il valore di firewall_name del log non elaborato è preceduto da "Firewall: " e assegnato a principal.asset_id. |
firewallname |
intermediary.hostname |
Il valore di firewallname del log non elaborato viene assegnato a intermediary.hostname. |
firewallname |
principal.hostname |
Il valore di firewallname del log non elaborato viene assegnato a principal.hostname. |
fqdn_dst_match |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
geo |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
geo_dst |
target.location.country_or_region |
Il valore di geo_dst del log non elaborato viene assegnato a target.location.country_or_region. |
geo_src |
principal.location.country_or_region |
Il valore di geo_src del log non elaborato viene assegnato a principal.location.country_or_region. |
host |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
ike_policy |
security_result.rule_id |
Il valore di ike_policy del log non elaborato viene assegnato a security_result.rule_id. |
ike_policy_version |
security_result.rule_version |
Il valore di ike_policy_version del log non elaborato viene assegnato a security_result.rule_version. |
intermediary_host |
intermediary.hostname |
Il valore di intermediary_host del log non elaborato viene assegnato a intermediary.hostname. |
ipaddress |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
ipsec_policy |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
ipsec_policy_version |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
keyword |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
line |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
log_message |
metadata.description |
Il valore di log_message del log non elaborato viene assegnato a metadata.description quando non sono disponibili altre descrizioni più specifiche. |
log_reason |
security_result.summary |
Il valore di log_reason del log non elaborato viene assegnato a security_result.summary. |
log_type |
metadata.log_type |
Il valore di log_type del log non elaborato viene assegnato a metadata.log_type. Sempre impostato su "WATCHGUARD". |
msg |
security_result.summary |
Il valore di msg del log non elaborato viene assegnato a security_result.summary. |
msg_id |
metadata.product_event_type |
Il valore di msg_id del log non elaborato viene assegnato a metadata.product_event_type. |
new_action |
security_result.action_details |
Utilizzato con conn_action per formare il valore di security_result.action_details (ad es. "ProxyReplace: IP protocol - HTTPS-Client.DPI-Off"). |
op |
network.http.method |
Il valore di op del log non elaborato viene assegnato a network.http.method. |
path |
target.url |
Il valore di path del log non elaborato viene assegnato a target.url. |
pid |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
policy_name |
intermediary.resource.name |
Il valore di policy_name del log non elaborato viene assegnato a intermediary.resource.name. |
policy_name |
security_result.rule_name |
Il valore di policy_name del log non elaborato viene assegnato a security_result.rule_name. |
policyname_label.value |
security_result.rule_labels.value |
Il valore di policy_name del log non elaborato viene assegnato a security_result.rule_labels.value, con security_result.rule_labels.key che è "PolicyName". |
prin_host |
principal.hostname |
Il valore di prin_host del log non elaborato viene assegnato a principal.hostname. |
proc_id |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
protocol |
network.ip_protocol |
Il valore di protocol del log non elaborato, convertito in maiuscolo, viene assegnato a network.ip_protocol. Gestione speciale per "EXTERNAL ICMP", mappato a "ICMP". |
proxy_act |
security_result.rule_id |
Il valore di proxy_act del log non elaborato viene assegnato a security_result.rule_id. |
proxy_act |
security_result.rule_name |
Il valore di proxy_act del log non elaborato viene assegnato a security_result.rule_name. |
query_name |
network.dns.questions.name |
Il valore di query_name del log non elaborato viene assegnato a network.dns.questions.name. |
query_type |
network.dns.questions.type |
Il valore di query_type del log non elaborato viene assegnato a network.dns.questions.type. Gestione speciale per i tipi di query numerici e mappatura ai tipi di query DNS standard. |
rc |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
reason |
security_result.summary |
Il valore di reason del log non elaborato viene assegnato a security_result.summary. |
record_type |
network.dns.answers.type |
Il valore di record_type del log non elaborato viene mappato al tipo di record DNS corrispondente in network.dns.answers.type. |
redirect_action |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
reputation |
additional.fields.value.string_value |
Il valore di reputation del log non elaborato viene assegnato a additional.fields.value.string_value, con additional.fields.key che è "reputation". |
response |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
response_code |
network.dns.response_code |
Il valore di response_code del log non elaborato viene mappato al codice di risposta DNS corrispondente in network.dns.response_code. |
route_type |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
rule_name |
security_result.rule_name |
Il valore di rule_name del log non elaborato viene assegnato a security_result.rule_name. |
rcvd_bytes |
network.received_bytes |
Il valore di rcvd_bytes del log non elaborato viene assegnato a network.received_bytes. |
sent_bytes |
network.sent_bytes |
Il valore di sent_bytes del log non elaborato viene assegnato a network.sent_bytes. |
server_ssl |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
severity |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
sig_vers |
network.tls.server.certificate.version |
Il valore di sig_vers del log non elaborato viene assegnato a network.tls.server.certificate.version. |
signature_cat |
additional.fields.value.string_value |
Il valore di signature_cat del log non elaborato viene assegnato a additional.fields.value.string_value, con additional.fields.key che è "signature_cat". |
signature_id |
additional.fields.value.string_value |
Il valore di signature_id del log non elaborato viene assegnato a additional.fields.value.string_value, con additional.fields.key che è "signature_id". |
signature_name |
additional.fields.value.string_value |
Il valore di signature_name del log non elaborato viene assegnato a additional.fields.value.string_value, con additional.fields.key impostato su "signature_name". |
sni |
network.tls.client.server_name |
Il valore di sni del log non elaborato viene assegnato a network.tls.client.server_name. |
src_ctid |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
src_host |
principal.hostname |
Il valore di src_host del log non elaborato viene assegnato a principal.hostname. |
src_ip |
principal.ip |
Il valore di src_ip del log non elaborato viene assegnato a principal.ip. |
src_ip_nat |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
src_mac |
principal.mac |
Il valore di src_mac del log non elaborato viene assegnato a principal.mac. |
src_port |
principal.port |
Il valore di src_port del log non elaborato viene assegnato a principal.port. |
src_user |
principal.user.user_display_name |
Il valore di src_user del log non elaborato viene assegnato a principal.user.user_display_name. |
src_user_name |
principal.user.user_display_name |
Il valore di src_user_name del log non elaborato viene assegnato a principal.user.user_display_name. |
src_vpn_ip |
principal.ip |
Il valore di src_vpn_ip del log non elaborato viene assegnato a principal.ip. |
srv_ip |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
srv_port |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
ssl_offload |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
tcp_info |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
time |
metadata.event_timestamp.seconds, timestamp.seconds |
Il valore di time del log non elaborato viene analizzato e utilizzato per compilare metadata.event_timestamp.seconds e timestamp.seconds. |
time1 |
metadata.event_timestamp.seconds, timestamp.seconds |
Il valore di time1 del log non elaborato viene analizzato e utilizzato per compilare metadata.event_timestamp.seconds e timestamp.seconds. |
tls_profile |
about.labels.value |
Il valore di tls_profile del log non elaborato viene assegnato a about.labels.value, con about.labels.key impostato su "tls_profile". |
tls_version |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
user_name |
principal.user.userid, principal.user.user_display_name |
Il valore di user_name del log non elaborato viene assegnato a principal.user.userid o principal.user.user_display_name a seconda del contesto. |
user_type |
Non mappato | Non mappato all'oggetto IDM negli esempi UDM forniti. |
| (N/A) | intermediary.resource.type |
Impostato sempre su "ACCESS_POLICY". |
| (N/A) | metadata.event_type |
Determinato dalla logica del parser in base a msg_id, log_type, event_name e altri campi. Può essere NETWORK_CONNECTION, SERVICE_MODIFICATION, NETWORK_SMTP, NETWORK_DNS, NETWORK_HTTP, USER_LOGIN, USER_LOGOUT, USER_RESOURCE_UPDATE_CONTENT, RESOURCE_PERMISSIONS_CHANGE, RESOURCE_CREATION, GENERIC_EVENT, STATUS_UPDATE o USER_UNCATEGORIZED. |
| (N/A) | metadata.product_name |
Sempre impostato su "Firmware". |
| (N/A) | metadata.vendor_name |
Impostato sempre su "Watchguard". |
| (N/A) | security_result.action |
Determinato dalla logica del parser in base a disposition. Può essere "ALLOW" o "BLOCK". |
| (N/A) | extensions.auth.type |
Impostato su "AUTHTYPE_UNSPECIFIED" per gli eventi di accesso/disconnessione dell'utente e su "VPN" per gli eventi di rete correlati alle VPN. |
| (N/A) | network.application_protocol |
Determinato dalla logica del parser in base a msg_id e event_name. Può essere "DNS", "DHCP", "HTTP" o "HTTPS". |
| (N/A) | network.dns.questions.type |
Imposta su 1 per le query sui record "A". |
| (N/A) | target.labels.key |
Imposta su "Azione sulla risorsa" quando action è mappato a target.labels.value. |
| (N/A) | intermediary.labels.key |
Impostato su "Nome membro firewall" quando prin_host è mappato su intermediary.labels.value. |
| (N/A) | intermediary.labels.key |
Imposta "Gateway-Endpoint" quando endpoint è mappato a intermediary.labels.value. |
| (N/A) | principal.labels.key |
Imposta "Gateway" quando gateway è mappato su principal.labels.value. |
| (N/A) | target.labels.key |
Imposta "Gateway" quando gateway è mappato su target.labels.value. |
| (N/A) | principal.labels.key |
Imposta "state" (stato) quando status è mappato a principal.labels.value. |
| (N/A) | target.labels.key |
Impostato su "Stato gateway" quando status è mappato su target.labels.value. |
| (N/A) | additional.fields.key |
Impostato su "signature_name", "signature_cat", "signature_id" o "reputation" quando i valori corrispondenti vengono mappati dal log non elaborato. |
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.