Recopila registros de WatchGuard Fireware
Descripción general
Este analizador extrae los registros de WatchGuard Fireware en formato JSON o de clave-valor (KV) y los transforma en UDM. Maneja los registros de "Tráfico" y "Evento" de manera diferente, ya que utiliza filtros grok y kv para extraer campos y asignarlos al UDM, con lógica específica para varios valores de msg_id y nombres de eventos, y controla protocolos de red, acciones del usuario, 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 del 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 posterior, o bien un host de Linux con systemd.
- Si ejecutas la herramienta 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 SIEM Settings > Collection Agents.
- 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 del 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 en 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 en 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 que ingiera Syslog y lo envíe a Google SecOps
- Accede a la máquina en la que está instalado Bindplane.
Edita el archivo
config.yamlde 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_labelsReinicia el agente de Bindplane para aplicar los cambios con el siguiente comando:
sudo systemctl bindplane restart
Agrega la configuración del servidor Syslog a Watchguard
- Accede a la IU de Watchguard.
- Selecciona System > Logging.
- Haz clic en la pestaña Servidor Syslog.
- Selecciona la casilla de verificación Send log messages to these syslog servers.
- Haz clic en Agregar.
Especifica valores para los parámetros de entrada en el diálogo Servidor Syslog:
- 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 los detalles del mensaje de registro de tu Firebox.
- 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.
- Instalación 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 la configuración predeterminada: 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 "Action over resource". |
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 asignar | 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 asignar | No se asigna al objeto IDM en los ejemplos de UDM proporcionados. |
elapsed_time |
Sin asignar | 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 asignar | No se asigna al objeto IDM en los ejemplos de UDM proporcionados. |
geo |
Sin asignar | 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 asignar | 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 asignar | No se asigna al objeto IDM en los ejemplos de UDM proporcionados. |
ipsec_policy |
Sin asignar | No se asigna al objeto IDM en los ejemplos de UDM proporcionados. |
ipsec_policy_version |
Sin asignar | No se asigna al objeto IDM en los ejemplos de UDM proporcionados. |
keyword |
Sin asignar | No se asigna al objeto IDM en los ejemplos de UDM proporcionados. |
line |
Sin asignar | 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 asignar | 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 asignar | 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. Se aplica un tratamiento especial a "EXTERNAL ICMP", 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. Manejo especial para los tipos de consultas numéricas y la asignación a los tipos de consultas de DNS estándar. |
rc |
Sin asignar | 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 asignar | 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 asignar | 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 asignar | 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 asignar | No se asigna al objeto IDM en los ejemplos de UDM proporcionados. |
severity |
Sin asignar | 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 asignar | 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 asignar | 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 asignar | No se asigna al objeto IDM en los ejemplos de UDM proporcionados. |
srv_port |
Sin asignar | No se asigna al objeto IDM en los ejemplos de UDM proporcionados. |
ssl_offload |
Sin asignar | No se asigna al objeto IDM en los ejemplos de UDM proporcionados. |
tcp_info |
Sin asignar | 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 completar 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 completar 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 asignar | 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 asignar | 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 |
La lógica del analizador determina este campo en función de 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 "Firmware". |
| (N/A) | metadata.vendor_name |
Siempre se establece en "Watchguard". |
| (N/A) | security_result.action |
Se determina según la lógica del analizador en función de disposition. Puede ser "ALLOW" o "BLOCK". |
| (N/A) | extensions.auth.type |
Se establece en "AUTHTYPE_UNSPECIFIED" para los eventos de acceso o cierre de sesión 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 en función de msg_id y event_name. Puede ser "DNS", "DHCP", "HTTP" o "HTTPS". |
| (N/A) | network.dns.questions.type |
Se establece en 1 para las búsquedas de registros "A". |
| (N/A) | target.labels.key |
Se establece en "Acción sobre el recurso" cuando action se asigna a target.labels.value. |
| (N/A) | intermediary.labels.key |
Se establece en "Nombre de miembro del firewall" cuando prin_host se asigna a intermediary.labels.value. |
| (N/A) | intermediary.labels.key |
Se establece en "Gateway-Endpoint" cuando endpoint se asigna a intermediary.labels.value. |
| (N/A) | principal.labels.key |
Se establece en "Puerta de enlace" cuando gateway se asigna a principal.labels.value. |
| (N/A) | target.labels.key |
Se establece en "Puerta de enlace" cuando gateway se asigna 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 |
Se establece en "Estado de la puerta de enlace" cuando status se asigna a target.labels.value. |
| (N/A) | additional.fields.key |
Se establece en "signature_name", "signature_cat", "signature_id" o "reputation" cuando los valores correspondientes se asignan desde el registro sin procesar. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.