Raccogliere i log di WatchGuard Fireware

Supportato in:

Panoramica

Questo parser estrae i log di WatchGuard Fireware in formato JSON o chiave-valore (KV), trasformandoli in UDM. Gestisce i log "Traffico" ed "Evento" in modo diverso, utilizzando i filtri grok e kv per estrarre i campi e mapparli a UDM, con una logica specifica per vari valori msg_id e nomi di eventi, gestione dei protocolli di rete, azioni utente, risultati di sicurezza e altri dettagli pertinenti. Inoltre, elabora un secondo gruppo di voci syslog, estraendo informazioni simili e mappandole al formato UDM.

Prima di iniziare

  • Assicurati di avere un'istanza Google SecOps.
  • Assicurati di disporre dell'accesso con privilegi a Watchguard.
  • Assicurati di avere Windows 2012 SP2 o versioni successive o un host Linux con systemd.
  • Se il servizio è in esecuzione dietro un proxy, assicurati che le porte del firewall siano aperte.

Recupera il file di autenticazione di importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'importazione.

Ottenere l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa BindPlane Agent

  1. Per l'installazione su Windows, esegui il seguente script: msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet.
  2. Per l'installazione su Linux, esegui il seguente script: sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh.
  3. Ulteriori opzioni di installazione sono disponibili in questa guida all'installazione.

Configurare l'agente BindPlane per importare i syslog e inviarli a Google SecOps

  1. Accedi al computer su cui è installato BindPlane.
  2. Modifica il file config.yaml come segue:

    receivers:
      tcplog:
        # Replace the below port <54525> and IP (0.0.0.0) with your specific values
        listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: testNamespace
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Riavviare BindPlane Agent per applicare le modifiche utilizzando il seguente comando: sudo systemctl bindplane restart

Aggiungere la configurazione del server Syslog a Watchguard

  1. Accedi all'interfaccia utente di Watchguard.
  2. Seleziona Sistema > Logging.
  3. Fai clic sulla scheda Server Syslog.
  4. Seleziona la casella di controllo Invia messaggi di log a questi server syslog.
  5. Fai clic su Aggiungi.
  6. Specifica i valori per i parametri di input nella finestra di dialogo Server Syslog:

    • Indirizzo IP: digita l'indirizzo IP del server.
    • Porta: per modificare la porta predefinita del server syslog (514), digita una porta diversa per il server.
    • Formato log: seleziona Syslog dal menu a discesa.
    • (Facoltativo) Descrizione: digita una descrizione per il server (ad esempio Esportazione Google SecOps).
    • (Facoltativo) Il timestamp: seleziona la casella di controllo per includere la data e l'ora in cui si verifica l'evento su Firebox nei dettagli del messaggio di log.
    • (Facoltativo) Il numero di serie del dispositivo seleziona la casella di controllo per includere il numero di serie di Firebox nei dettagli del messaggio di log.
    • Strumento syslog: per ogni tipo di messaggio di log, seleziona una priorità dal menu a discesa (ad esempio, per i messaggi syslog ad alta priorità, come le allarmi, seleziona Local0).
    • (Facoltativo) Ripristina i valori predefiniti: per ripristinare le impostazioni predefinite.
  7. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
action security_result.action_details Il valore action del log non elaborato viene assegnato a security_result.action_details.
action target.labels.value Il valore di action dal log non elaborato viene assegnato a target.labels.value, dove target.labels.key è "Azione sulla risorsa".
arg target.file.full_path Il valore arg del log non elaborato viene assegnato a target.file.full_path.
app_cat_id about.labels.value Il valore di app_cat_id dal log non elaborato viene assegnato a about.labels.value, dove about.labels.key è "app_cat_id".
app_cat_name target.application Utilizzato in combinazione con app_name per formare il valore di target.application (ad es. "Google - Web services").
app_id about.labels.value Il valore di app_id dal log non elaborato viene assegnato a about.labels.value, dove about.labels.key è "app_id".
app_name target.application Utilizzato in combinazione con app_cat_name per formare il valore di target.application (ad es. "Google - Web services").
cats security_result.category_details Il valore cats del log non elaborato viene assegnato a security_result.category_details.
cert_issuer network.tls.server.certificate.issuer Il valore cert_issuer del log non elaborato viene assegnato a network.tls.server.certificate.issuer.
cert_subject network.tls.server.certificate.subject Il valore cert_subject del log non elaborato viene assegnato a network.tls.server.certificate.subject.
cn network.tls.server.certificate.subject Il valore cn del log non elaborato viene assegnato a network.tls.server.certificate.subject.
conn_action security_result.action_details Il valore conn_action del log non elaborato viene assegnato a security_result.action_details.
content_type Non mappato Non mappato all'oggetto IDM negli esempi di 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 dal log non elaborato viene mappato al tipo DHCP corrispondente in network.dhcp.type (ad es. "REQUEST", "ACK").
dst_host target.hostname Il valore dst_host del log non elaborato viene assegnato a target.hostname.
dst_ip target.ip Il valore dst_ip del log non elaborato viene assegnato a target.ip.
dst_mac target.mac Il valore dst_mac del log non elaborato viene assegnato a target.mac.
dst_port target.port Il valore dst_port del log non elaborato viene assegnato a target.port.
dst_user target.user.user_display_name Il valore dst_user del log non elaborato viene assegnato a target.user.user_display_name.
dstname target.administrative_domain Il valore dstname del log non elaborato viene assegnato a target.administrative_domain.
duration Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
elapsed_time Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
endpoint intermediary.labels.value Il valore di endpoint dal log non elaborato viene assegnato a intermediary.labels.value, con intermediary.labels.key che è "Gateway-Endpoint".
event_name principal.application Il valore event_name del log non elaborato viene assegnato a principal.application.
firewall_id intermediary.asset_id Al valore di firewall_id dal log non elaborato viene anteposto "ID firewall : " e assegnato a intermediary.asset_id.
firewall_name principal.asset_id Al valore di firewall_name dal log non elaborato viene anteposto "Firewall: " e assegnato a principal.asset_id.
firewallname intermediary.hostname Il valore firewallname del log non elaborato viene assegnato a intermediary.hostname.
firewallname principal.hostname Il valore firewallname del log non elaborato viene assegnato a principal.hostname.
fqdn_dst_match Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
geo Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
geo_dst target.location.country_or_region Il valore geo_dst del log non elaborato viene assegnato a target.location.country_or_region.
geo_src principal.location.country_or_region Il valore geo_src del log non elaborato viene assegnato a principal.location.country_or_region.
host Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
ike_policy security_result.rule_id Il valore ike_policy del log non elaborato viene assegnato a security_result.rule_id.
ike_policy_version security_result.rule_version Il valore ike_policy_version del log non elaborato viene assegnato a security_result.rule_version.
intermediary_host intermediary.hostname Il valore intermediary_host del log non elaborato viene assegnato a intermediary.hostname.
ipaddress Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
ipsec_policy Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
ipsec_policy_version Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
keyword Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
line Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
log_message metadata.description Il valore di log_message dal log non elaborato viene assegnato a metadata.description quando non sono disponibili altre descrizioni più specifiche.
log_reason security_result.summary Il valore log_reason del log non elaborato viene assegnato a security_result.summary.
log_type metadata.log_type Il valore log_type del log non elaborato viene assegnato a metadata.log_type. Deve sempre essere impostato su "WATCHGUARD".
msg security_result.summary Il valore msg del log non elaborato viene assegnato a security_result.summary.
msg_id metadata.product_event_type Il valore 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 op del log non elaborato viene assegnato a network.http.method.
path target.url Il valore path del log non elaborato viene assegnato a target.url.
pid Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
policy_name intermediary.resource.name Il valore policy_name del log non elaborato viene assegnato a intermediary.resource.name.
policy_name security_result.rule_name Il valore 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 dal log non elaborato viene assegnato a security_result.rule_labels.value, dove security_result.rule_labels.key è "PolicyName".
prin_host principal.hostname Il valore prin_host del log non elaborato viene assegnato a principal.hostname.
proc_id Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
protocol network.ip_protocol Il valore protocol del log non elaborato, convertito in maiuscolo, viene assegnato a network.ip_protocol. Trattamento speciale per "ICMP ESTERNO", che viene mappato a "ICMP".
proxy_act security_result.rule_id Il valore proxy_act del log non elaborato viene assegnato a security_result.rule_id.
proxy_act security_result.rule_name Il valore proxy_act del log non elaborato viene assegnato a security_result.rule_name.
query_name network.dns.questions.name Il valore query_name del log non elaborato viene assegnato a network.dns.questions.name.
query_type network.dns.questions.type Il valore query_type del log non elaborato viene assegnato a network.dns.questions.type. Trattamento speciale per i tipi di query numeriche e mappatura ai tipi di query DNS standard.
rc Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
reason security_result.summary Il valore reason del log non elaborato viene assegnato a security_result.summary.
record_type network.dns.answers.type Il valore di record_type dal 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 di UDM forniti.
reputation additional.fields.value.string_value Il valore di reputation dal log non elaborato viene assegnato a additional.fields.value.string_value, dove additional.fields.key è "reputation".
response Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
response_code network.dns.response_code Il valore response_code del log non elaborato è mappato al codice di risposta DNS corrispondente in network.dns.response_code.
route_type Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
rule_name security_result.rule_name Il valore rule_name del log non elaborato viene assegnato a security_result.rule_name.
rcvd_bytes network.received_bytes Il valore rcvd_bytes del log non elaborato viene assegnato a network.received_bytes.
sent_bytes network.sent_bytes Il valore sent_bytes del log non elaborato viene assegnato a network.sent_bytes.
server_ssl Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
severity Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
sig_vers network.tls.server.certificate.version Il valore 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 dal 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 dal log non elaborato viene assegnato a additional.fields.value.string_value, dove additional.fields.key è "signature_id".
signature_name additional.fields.value.string_value Il valore di signature_name dal log non elaborato viene assegnato a additional.fields.value.string_value, con additional.fields.key che è "signature_name".
sni network.tls.client.server_name Il valore sni del log non elaborato viene assegnato a network.tls.client.server_name.
src_ctid Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
src_host principal.hostname Il valore src_host del log non elaborato viene assegnato a principal.hostname.
src_ip principal.ip Il valore src_ip del log non elaborato viene assegnato a principal.ip.
src_ip_nat Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
src_mac principal.mac Il valore src_mac del log non elaborato viene assegnato a principal.mac.
src_port principal.port Il valore src_port del log non elaborato viene assegnato a principal.port.
src_user principal.user.user_display_name Il valore src_user del log non elaborato viene assegnato a principal.user.user_display_name.
src_user_name principal.user.user_display_name Il valore src_user_name del log non elaborato viene assegnato a principal.user.user_display_name.
src_vpn_ip principal.ip Il valore src_vpn_ip del log non elaborato viene assegnato a principal.ip.
srv_ip Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
srv_port Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
ssl_offload Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
tcp_info Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
time metadata.event_timestamp.seconds, timestamp.seconds Il valore di time dal 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 dal 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 dal log non elaborato viene assegnato a about.labels.value, con about.labels.key pari a "tls_profile".
tls_version Non mappato Non mappato all'oggetto IDM negli esempi di UDM forniti.
user_name principal.user.userid, principal.user.user_display_name Il valore di user_name dal 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 di UDM forniti.
(N/A) intermediary.resource.type Impostato sempre su "ACCESS_POLICY".
(N/A) metadata.event_type Determinato dalla logica dell'analizzatore sintattico 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 "Fireware".
(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/uscita degli utenti e su "VPN" per gli eventi di rete relativi 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 Impostato 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 Imposta su "Nome membro del firewall" quando prin_host è mappato a intermediary.labels.value.
(N/A) intermediary.labels.key Imposta su "Gateway-Endpoint" quando endpoint è mappato a intermediary.labels.value.
(N/A) principal.labels.key Imposta su "Gateway" quando gateway è mappato a principal.labels.value.
(N/A) target.labels.key Imposta su "Gateway" quando gateway è mappato a target.labels.value.
(N/A) principal.labels.key Imposta su "state" quando status è mappato a principal.labels.value.
(N/A) target.labels.key Imposta su "Stato gateway" quando status è mappato a 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.

Modifiche

2023-12-03

  • È stato modificato un pattern Grok per analizzare i nuovi campi.
  • Sono stati modificati alcuni pattern Grok per analizzare nuovi pattern di "identified_log".
  • È stato aggiunto un nuovo pattern Grok per analizzare "identified_log" con il valore "msg_id" pari a "1600-0066".

2023-11-27

  • "signature_name" è stato mappato a "additional.fields" per i log con "msg_id" uguale a "3000-0150".
  • "signature_id" e "signature_cat" sono stati mappati a "additional.fields".

2023-11-24

  • Sono stati modificati alcuni pattern Grok per analizzare i nuovi campi.
  • "firewallname" è stato mappato a "event.idm.read_only_udm.intermediary.hostname".
  • "firewall_id" è stato mappato a "event.idm.read_only_udm.intermediary.asset_id".
  • "prin_host" è stato mappato a "event.idm.read_only_udm.intermediary.labels"

2023-11-10

  • Codice ridondante rimosso.
  • "signature_name" è stato mappato a "additional.fields".

2023-09-28

  • Correzione di bug:
  • È stato modificato il filtro "data" in modo da supportare i seguenti formati: "yyyy-MM-dd HH:mm:ss", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601", "yyyy-MM-ddTHH:mm:ss".

2023-05-25

  • Correzione di bug:
  • È stata modificata la mappatura per il campo "src_vpn_ip" da "principal.ip" a "target.ip" per l'evento "Received DPD message from target host through gateway" (Messaggio DPD ricevuto dall'host target tramite gateway).

2023-05-04

  • Miglioramento: sono stati aggiunti pattern Grok per gestire i log non analizzati con eventi "dnsmasq", "dhcpd", "iked", "admd".

2023-01-20

  • Miglioramento: è stato aggiunto grok per gestire i log non analizzati.
  • "dst_port" è stato mappato a target.port.
  • "src_port" è stato mappato a principal.port.
  • "rcvd_bytes" è stato mappato a network.received_bytes.
  • "geo_src" è stato mappato a principal.location.country_or_region.
  • "geo_dst" è stato mappato a target.location.country_or_region.
  • "prin_host" è stato mappato a "principal.hostname".
  • È stato aggiunto il controllo condizionale per "dhcp_type", "intermediary_host", "protocol"
  • Per "msg_id" uguale a "1600-0066"
  • È stato aggiunto il pattern Grok per "msg_id" uguale a "1600-0066".
  • "description" è stato mappato a "metadeta.description".
  • Per "msg_id" uguale a "2DFF-0000"
  • "proxy_act" è stato mappato a "security_result.rule_name".

2022-12-17

  • Miglioramento: il nome del firewall è stato mappato a "principal.asset_id" per i log contenenti il membro 1.
  • "event_type" è stato modificato da "SERVICE_MODIFICATION" a "NETWORK_CONNECTION".
  • "src_user" è stato mappato a "principal.user.email_addresses" se si tratta di un'email, altrimenti a "principal.user.user_display_name".

2022-12-16

  • Miglioramento:
  • È stato aggiunto un pattern grok per gestire i log non analizzati con event_name "firewall".
  • Tipo GENERIC_EVENT ridotto.

2022-11-16

  • Miglioramento: il campo "reason" è stato mappato a "security_result.action_details".
  • È stato aggiunto un pattern grok per gestire i log non analizzati con event_name "firewall".
  • Sono stati aggiunti blocchi condizionali aggiuntivi per analizzare i log con event_name "loggerd", "sigd", "sessiond", "admd", "iked".

2022-11-07

  • Correzione di bug:
  • Il percorso mappato specificato nell'intestazione HTTP da "target.file.full_path" a "target.url".

2022-06-17

  • Miglioramento: log analizzati con eventi relativi a "firewall", "http-proxy", "https-proxy".