Recopila registros de WatchGuard Fireware
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
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
- Descarga el archivo de autenticación de transferencia.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
- 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
. - 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
. - 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
- Accede a la máquina en la que está instalado BindPlane.
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
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
- Accede a la IU de Watchguard.
- Selecciona Sistema > Registros.
- Haz clic en la pestaña Syslog Server.
- Selecciona la casilla de verificación Enviar mensajes de registro a estos servidores de syslog.
- Haz clic en Agregar.
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.
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".