Recopila registros de WatchGuard Fireware

Compatible con:

Descripción general

Este analizador extrae registros de WatchGuard Fireware en formato JSON o par clave-valor (KV) y los transforma en UDM. Controla los registros de "Tráfico" y "Evento" de manera diferente, con filtros grok y kv para extraer campos y asignarlos a la UDM, con una lógica específica para varios valores y nombres de eventos msg_id, controlando los protocolos de red, las acciones del usuario, los resultados de seguridad y otros detalles relevantes. También procesa un segundo grupo de entradas de syslog, extrae información similar y la asigna al formato UDM.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de tener acceso con privilegios a Watchguard.
  • Asegúrate de tener un host de Windows 2012 SP2 o una versión posterior, o bien Linux con systemd.
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.

Obtén el archivo de autenticación de transferencia de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia.

Obtén el ID de cliente de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instala el agente de BindPlane

  1. Para la instalación de Windows, ejecuta la siguiente secuencia de comandos: msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet.
  2. Para la instalación de Linux, ejecuta la siguiente secuencia de comandos: sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh.
  3. Puedes encontrar opciones de instalación adicionales en esta guía de instalación.

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

  1. Accede a la máquina en la que está instalado BindPlane.
  2. Edita el archivo config.yaml de la siguiente manera:

    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. Reinicia el agente de BindPlane para aplicar los cambios con el siguiente comando: sudo systemctl bindplane restart

Agrega la configuración del servidor de Syslog a Watchguard

  1. Accede a la IU de Watchguard.
  2. Selecciona Sistema > Registros.
  3. Haz clic en la pestaña Syslog Server.
  4. Selecciona la casilla de verificación Enviar mensajes de registro a estos servidores de syslog.
  5. Haz clic en Agregar.
  6. Especifica valores para los parámetros de entrada en el diálogo Syslog Server:

    • Dirección IP: Escribe la dirección IP del servidor.
    • Puerto: Cambia el puerto predeterminado del servidor syslog (514) y escribe un puerto diferente para tu servidor.
    • Formato de registro: Selecciona Syslog en el menú desplegable.
    • Opcional: Descripción: Escribe una descripción para el servidor (por ejemplo, Exportación de SecOps de Google).
    • Opcional: La marca de tiempo: Selecciona la casilla de verificación para incluir la fecha y la hora en que se produce el evento en tu Firebox en los detalles del mensaje de registro.
    • Opcional: El número de serie del dispositivo: Selecciona la casilla de verificación para incluir el número de serie de la Firebox en los detalles del mensaje de registro.
    • Servicio de Syslog: Para cada tipo de mensaje de registro, selecciona una prioridad en el menú desplegable (por ejemplo, para los mensajes de syslog de alta prioridad, como las alarmas, selecciona Local0).
    • Opcional: Restablecer valores predeterminados: Para restablecer la configuración predeterminada.
  7. Haz clic en Guardar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
action security_result.action_details El valor de action del registro sin procesar se asigna a security_result.action_details.
action target.labels.value El valor de action del registro sin procesar se asigna a target.labels.value, y target.labels.key es "Acción sobre el recurso".
arg target.file.full_path El valor de arg del registro sin procesar se asigna a target.file.full_path.
app_cat_id about.labels.value El valor de app_cat_id del registro sin procesar se asigna a about.labels.value, y about.labels.key es "app_cat_id".
app_cat_name target.application Se usa en combinación con app_name para formar el valor de target.application (p.ej., "Google - Web services").
app_id about.labels.value El valor de app_id del registro sin procesar se asigna a about.labels.value, y about.labels.key es "app_id".
app_name target.application Se usa en combinación con app_cat_name para formar el valor de target.application (p.ej., "Google - Web services").
cats security_result.category_details El valor de cats del registro sin procesar se asigna a security_result.category_details.
cert_issuer network.tls.server.certificate.issuer El valor de cert_issuer del registro sin procesar se asigna a network.tls.server.certificate.issuer.
cert_subject network.tls.server.certificate.subject El valor de cert_subject del registro sin procesar se asigna a network.tls.server.certificate.subject.
cn network.tls.server.certificate.subject El valor de cn del registro sin procesar se asigna a network.tls.server.certificate.subject.
conn_action security_result.action_details El valor de conn_action del registro sin procesar se asigna a security_result.action_details.
content_type Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
description metadata.description El valor de description derivado del registro sin procesar se asigna a metadata.description.
dhcp_type network.dhcp.type El valor de dhcp_type del registro sin procesar se asigna al tipo de DHCP correspondiente en network.dhcp.type (p.ej., "REQUEST", "ACK").
dst_host target.hostname El valor de dst_host del registro sin procesar se asigna a target.hostname.
dst_ip target.ip El valor de dst_ip del registro sin procesar se asigna a target.ip.
dst_mac target.mac El valor de dst_mac del registro sin procesar se asigna a target.mac.
dst_port target.port El valor de dst_port del registro sin procesar se asigna a target.port.
dst_user target.user.user_display_name El valor de dst_user del registro sin procesar se asigna a target.user.user_display_name.
dstname target.administrative_domain El valor de dstname del registro sin procesar se asigna a target.administrative_domain.
duration Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
elapsed_time Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
endpoint intermediary.labels.value El valor de endpoint del registro sin procesar se asigna a intermediary.labels.value, y intermediary.labels.key es "Gateway-Endpoint".
event_name principal.application El valor de event_name del registro sin procesar se asigna a principal.application.
firewall_id intermediary.asset_id El valor de firewall_id del registro sin procesar se antepone con "ID de firewall : " y se asigna a intermediary.asset_id.
firewall_name principal.asset_id El valor de firewall_name del registro sin procesar se antepone con "Firewall: " y se asigna a principal.asset_id.
firewallname intermediary.hostname El valor de firewallname del registro sin procesar se asigna a intermediary.hostname.
firewallname principal.hostname El valor de firewallname del registro sin procesar se asigna a principal.hostname.
fqdn_dst_match Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
geo Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
geo_dst target.location.country_or_region El valor de geo_dst del registro sin procesar se asigna a target.location.country_or_region.
geo_src principal.location.country_or_region El valor de geo_src del registro sin procesar se asigna a principal.location.country_or_region.
host Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
ike_policy security_result.rule_id El valor de ike_policy del registro sin procesar se asigna a security_result.rule_id.
ike_policy_version security_result.rule_version El valor de ike_policy_version del registro sin procesar se asigna a security_result.rule_version.
intermediary_host intermediary.hostname El valor de intermediary_host del registro sin procesar se asigna a intermediary.hostname.
ipaddress Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
ipsec_policy Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
ipsec_policy_version Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
keyword Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
line Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
log_message metadata.description El valor de log_message del registro sin procesar se asigna a metadata.description cuando no hay otras descripciones más específicas disponibles.
log_reason security_result.summary El valor de log_reason del registro sin procesar se asigna a security_result.summary.
log_type metadata.log_type El valor de log_type del registro sin procesar se asigna a metadata.log_type. Siempre se establece en "WATCHGUARD".
msg security_result.summary El valor de msg del registro sin procesar se asigna a security_result.summary.
msg_id metadata.product_event_type El valor de msg_id del registro sin procesar se asigna a metadata.product_event_type.
new_action security_result.action_details Se usa con conn_action para formar el valor de security_result.action_details (p.ej., "ProxyReplace: IP protocol - HTTPS-Client.DPI-Off").
op network.http.method El valor de op del registro sin procesar se asigna a network.http.method.
path target.url El valor de path del registro sin procesar se asigna a target.url.
pid Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
policy_name intermediary.resource.name El valor de policy_name del registro sin procesar se asigna a intermediary.resource.name.
policy_name security_result.rule_name El valor de policy_name del registro sin procesar se asigna a security_result.rule_name.
policyname_label.value security_result.rule_labels.value El valor de policy_name del registro sin procesar se asigna a security_result.rule_labels.value, y security_result.rule_labels.key es "PolicyName".
prin_host principal.hostname El valor de prin_host del registro sin procesar se asigna a principal.hostname.
proc_id Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
protocol network.ip_protocol El valor de protocol del registro sin procesar, convertido a mayúsculas, se asigna a network.ip_protocol. Manejo especial para "ICMP EXTERNO", que se asigna a "ICMP".
proxy_act security_result.rule_id El valor de proxy_act del registro sin procesar se asigna a security_result.rule_id.
proxy_act security_result.rule_name El valor de proxy_act del registro sin procesar se asigna a security_result.rule_name.
query_name network.dns.questions.name El valor de query_name del registro sin procesar se asigna a network.dns.questions.name.
query_type network.dns.questions.type El valor de query_type del registro sin procesar se asigna a network.dns.questions.type. Control especial para tipos de consultas numéricas y asignación a tipos de consultas de DNS estándar.
rc Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
reason security_result.summary El valor de reason del registro sin procesar se asigna a security_result.summary.
record_type network.dns.answers.type El valor de record_type del registro sin procesar se asigna al tipo de registro DNS correspondiente en network.dns.answers.type.
redirect_action Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
reputation additional.fields.value.string_value El valor de reputation del registro sin procesar se asigna a additional.fields.value.string_value, y additional.fields.key es "reputation".
response Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
response_code network.dns.response_code El valor de response_code del registro sin procesar se asigna al código de respuesta de DNS correspondiente en network.dns.response_code.
route_type Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
rule_name security_result.rule_name El valor de rule_name del registro sin procesar se asigna a security_result.rule_name.
rcvd_bytes network.received_bytes El valor de rcvd_bytes del registro sin procesar se asigna a network.received_bytes.
sent_bytes network.sent_bytes El valor de sent_bytes del registro sin procesar se asigna a network.sent_bytes.
server_ssl Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
severity Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
sig_vers network.tls.server.certificate.version El valor de sig_vers del registro sin procesar se asigna a network.tls.server.certificate.version.
signature_cat additional.fields.value.string_value El valor de signature_cat del registro sin procesar se asigna a additional.fields.value.string_value, y additional.fields.key es "signature_cat".
signature_id additional.fields.value.string_value El valor de signature_id del registro sin procesar se asigna a additional.fields.value.string_value, y additional.fields.key es "signature_id".
signature_name additional.fields.value.string_value El valor de signature_name del registro sin procesar se asigna a additional.fields.value.string_value, y additional.fields.key es "signature_name".
sni network.tls.client.server_name El valor de sni del registro sin procesar se asigna a network.tls.client.server_name.
src_ctid Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
src_host principal.hostname El valor de src_host del registro sin procesar se asigna a principal.hostname.
src_ip principal.ip El valor de src_ip del registro sin procesar se asigna a principal.ip.
src_ip_nat Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
src_mac principal.mac El valor de src_mac del registro sin procesar se asigna a principal.mac.
src_port principal.port El valor de src_port del registro sin procesar se asigna a principal.port.
src_user principal.user.user_display_name El valor de src_user del registro sin procesar se asigna a principal.user.user_display_name.
src_user_name principal.user.user_display_name El valor de src_user_name del registro sin procesar se asigna a principal.user.user_display_name.
src_vpn_ip principal.ip El valor de src_vpn_ip del registro sin procesar se asigna a principal.ip.
srv_ip Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
srv_port Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
ssl_offload Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
tcp_info Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
time metadata.event_timestamp.seconds, timestamp.seconds El valor de time del registro sin procesar se analiza y se usa para propagar metadata.event_timestamp.seconds y timestamp.seconds.
time1 metadata.event_timestamp.seconds, timestamp.seconds El valor de time1 del registro sin procesar se analiza y se usa para propagar metadata.event_timestamp.seconds y timestamp.seconds.
tls_profile about.labels.value El valor de tls_profile del registro sin procesar se asigna a about.labels.value, y about.labels.key es "tls_profile".
tls_version Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
user_name principal.user.userid, principal.user.user_display_name El valor de user_name del registro sin procesar se asigna a principal.user.userid o principal.user.user_display_name según el contexto.
user_type Sin asignación No se asigna al objeto IDM en los ejemplos de UDM proporcionados.
(N/A) intermediary.resource.type Siempre se establece en “ACCESS_POLICY”.
(N/A) metadata.event_type Se determina según la lógica del analizador basada en msg_id, log_type, event_name y otros campos. Puede ser 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 Siempre se establece en "Fireware".
(N/A) metadata.vendor_name Siempre se establece en "Watchguard".
(N/A) security_result.action Se determina según la lógica del analizador basada en disposition. Puede ser “ALLOW” o “BLOCK”.
(N/A) extensions.auth.type Establece el valor en "AUTHTYPE_UNSPECIFIED" para los eventos de acceso o salida del usuario y en "VPN" para los eventos de red relacionados con las VPN.
(N/A) network.application_protocol Se determina según la lógica del analizador basada en msg_id y event_name. Puede ser “DNS”, “DHCP”, “HTTP” o “HTTPS”.
(N/A) network.dns.questions.type Se establece en 1 para las consultas de registros "A".
(N/A) target.labels.key Establece la acción en "Acción sobre el recurso" cuando action se asigne a target.labels.value.
(N/A) intermediary.labels.key Establece el valor en "Nombre del miembro del firewall" cuando prin_host se asigne a intermediary.labels.value.
(N/A) intermediary.labels.key Se establece en "Puerta de enlace-extremo" cuando endpoint se asigna a intermediary.labels.value.
(N/A) principal.labels.key Establece en "Puerta de enlace" cuando gateway esté asignado a principal.labels.value.
(N/A) target.labels.key Establece en "Puerta de enlace" cuando gateway esté asignado a target.labels.value.
(N/A) principal.labels.key Se establece en "state" cuando status se asigna a principal.labels.value.
(N/A) target.labels.key Establece el valor en "Estado de la puerta de enlace" cuando status esté asignado a target.labels.value.
(N/A) additional.fields.key Establece el valor en "signature_name", "signature_cat", "signature_id" o "reputation" cuando los valores correspondientes se asignen desde el registro sin procesar.

Cambios

2023-12-03

  • Se modificó un patrón de Grok para analizar campos nuevos.
  • Se modificaron algunos patrones de Grok para analizar patrones nuevos de "identified_log".
  • Se agregó un nuevo patrón de Grok para analizar "identified_log" con el valor "msg_id" como "1600-0066".

2023-11-27

  • Se asignó "signature_name" a "additional.fields" para los registros que tienen "msg_id" igual a "3000-0150".
  • Se asignaron "signature_id" y "signature_cat" a "additional.fields".

2023-11-24

  • Se modificaron algunos patrones de Grok para analizar campos nuevos.
  • Se asignó "firewallname" a "event.idm.read_only_udm.intermediary.hostname".
  • Se asignó "firewall_id" a "event.idm.read_only_udm.intermediary.asset_id".
  • Se asignó "prin_host" a "event.idm.read_only_udm.intermediary.labels".

2023-11-10

  • Se quitó el código redundante.
  • Se asignó "signature_name" a "additional.fields".

2023-09-28

  • Corrección de errores:
  • Se modificó el filtro "fecha" para admitir los siguientes formatos: "yyyy-MM-dd HH:mm:ss", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601" y "yyyy-MM-ddTHH:mm:ss".

2023-05-25

  • Corrección de errores:
  • Se cambió la asignación del campo "src_vpn_ip" de "principal.ip" a "target.ip" para el evento "Received DPD message from target host through gateway".

2023-05-04

  • Mejora: Se agregaron patrones de Grok para controlar registros sin analizar con los eventos "dnsmasq", "dhcpd", "iked" y "admd".

2023-01-20

  • Mejora: Se agregó grok para controlar los registros sin analizar.
  • Se asignó "dst_port" a target.port.
  • Se asignó "src_port" a principal.port.
  • Se asignó "rcvd_bytes" a network.received_bytes.
  • Se asignó "geo_src" a principal.location.country_or_region.
  • Se asignó "geo_dst" a target.location.country_or_region.
  • Se asignó "prin_host" a "principal.hostname".
  • Se agregó la verificación condicional para “dhcp_type”, “intermediary_host” y “protocol”
  • Para "msg_id" igual a "1600-0066"
  • Se agregó el patrón Grok para "msg_id" igual a "1600-0066".
  • Se asignó "description" a "metadeta.description".
  • Para "msg_id" igual a "2DFF-0000"
  • Se asignó "proxy_act" a "security_result.rule_name".

2022-12-17

  • Mejora: Se asignó el nombre del firewall a "principal.asset_id" para los registros que contienen Member1.
  • Se modificó "event_type" de "SERVICE_MODIFICATION" a "NETWORK_CONNECTION".
  • Se asignó "src_user" a "principal.user.email_addresses" si es un correo electrónico; de lo contrario, se asignó a "principal.user.user_display_name".

2022-12-16

  • Mejora:
  • Se agregó grok para controlar el registro sin analizar con event_name 'firewall'.
  • Se redujo el tipo GENERIC_EVENT.

2022-11-16

  • Mejora: Se asignó el campo "reason" a "security_result.action_details".
  • Se agregó grok para controlar el registro sin analizar con event_name 'firewall'.
  • Se agregaron bloques condicionales adicionales para analizar registros con event_name "loggerd", "sigd", "sessiond", "admd", "iked".

2022-11-07

  • Corrección de errores:
  • La ruta de acceso asignada que se proporciona en el encabezado HTTP de "target.file.full_path" a "target.url" en su lugar

2022-06-17

  • Mejora: Se analizaron registros con eventos relacionados con "firewall", "http-proxy" y "https-proxy".