Coletar registros do WatchGuard Fireware

Compatível com:

Visão geral

Esse analisador extrai os registros do WatchGuard Fireware no formato JSON ou chave-valor (KV), transformando-os em UDM. Ele processa os registros de "Tráfego" e "Evento" de maneira diferente, usando filtros grok e kv para extrair campos e mapeá-los para a UDM, com lógica específica para vários valores e nomes de eventos msg_id, processando protocolos de rede, ações do usuário, resultados de segurança e outros detalhes relevantes. Ele também processa um segundo grupo de entradas de syslog, extraindo informações semelhantes e mapeando-as para o formato UDM.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Verifique se você tem acesso privilegiado ao Watchguard.
  • Verifique se você tem um host do Windows 2012 SP2 ou posterior ou um host do Linux com systemd.
  • Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Faça o download do arquivo de autenticação de transferência.

Receber o ID de cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do BindPlane

  1. Para a instalação do Windows, execute o seguinte script: msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet.
  2. Para a instalação no Linux, execute o seguinte script: sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh.
  3. Outras opções de instalação podem ser encontradas neste guia de instalação.

Configurar o agente BindPlane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse a máquina em que o BindPlane está instalado.
  2. Edite o arquivo config.yaml da seguinte forma:

    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. Reinicie o BindPlane Agent para aplicar as mudanças usando o seguinte comando: sudo systemctl bindplane restart

Adicionar a configuração do servidor Syslog ao Watchguard

  1. Faça login na interface do Watchguard.
  2. Selecione Sistema > Registros.
  3. Clique na guia Servidor Syslog.
  4. Marque a caixa de seleção Enviar mensagens de registro para estes servidores syslog.
  5. Clique em Adicionar.
  6. Especifique valores para os parâmetros de entrada na caixa de diálogo Syslog Server:

    • Endereço IP: digite o endereço IP do servidor.
    • Porta: mude a porta padrão do servidor syslog (514) e digite uma porta diferente para o servidor.
    • Formato do registro: selecione Syslog no menu suspenso.
    • Opcional: Descrição: digite uma descrição para o servidor (por exemplo, Exportação do Google SecOps).
    • Opcional: Carimbo de data/hora: selecione a caixa de seleção para incluir a data e a hora em que o evento ocorre no Firebox nos detalhes da mensagem de registro.
    • Opcional: O número de série do dispositivo, selecione a caixa de seleção para incluir o número de série do Firebox nos detalhes da mensagem de registro.
    • Facilidade de syslog: para cada tipo de mensagem de registro, selecione uma prioridade no menu suspenso. Por exemplo, para mensagens de syslog de alta prioridade, como alarmes, selecione Local0.
    • Opcional: Restaurar padrões: para restaurar as configurações padrão.
  7. Clique em Salvar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
action security_result.action_details O valor de action do registro bruto é atribuído a security_result.action_details.
action target.labels.value O valor de action do registro bruto é atribuído a target.labels.value, com target.labels.key sendo "Ação sobre o recurso".
arg target.file.full_path O valor de arg do registro bruto é atribuído a target.file.full_path.
app_cat_id about.labels.value O valor de app_cat_id do registro bruto é atribuído a about.labels.value, com about.labels.key sendo "app_cat_id".
app_cat_name target.application Usado em combinação com app_name para formar o valor de target.application (por exemplo, "Google - Web services").
app_id about.labels.value O valor de app_id do registro bruto é atribuído a about.labels.value, com about.labels.key sendo "app_id".
app_name target.application Usado em combinação com app_cat_name para formar o valor de target.application (por exemplo, "Google - Web services").
cats security_result.category_details O valor de cats do registro bruto é atribuído a security_result.category_details.
cert_issuer network.tls.server.certificate.issuer O valor de cert_issuer do registro bruto é atribuído a network.tls.server.certificate.issuer.
cert_subject network.tls.server.certificate.subject O valor de cert_subject do registro bruto é atribuído a network.tls.server.certificate.subject.
cn network.tls.server.certificate.subject O valor de cn do registro bruto é atribuído a network.tls.server.certificate.subject.
conn_action security_result.action_details O valor de conn_action do registro bruto é atribuído a security_result.action_details.
content_type Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
description metadata.description O valor de description derivado do registro bruto é atribuído a metadata.description.
dhcp_type network.dhcp.type O valor de dhcp_type do registro bruto é mapeado para o tipo DHCP correspondente em network.dhcp.type (por exemplo, "REQUEST", "ACK").
dst_host target.hostname O valor de dst_host do registro bruto é atribuído a target.hostname.
dst_ip target.ip O valor de dst_ip do registro bruto é atribuído a target.ip.
dst_mac target.mac O valor de dst_mac do registro bruto é atribuído a target.mac.
dst_port target.port O valor de dst_port do registro bruto é atribuído a target.port.
dst_user target.user.user_display_name O valor de dst_user do registro bruto é atribuído a target.user.user_display_name.
dstname target.administrative_domain O valor de dstname do registro bruto é atribuído a target.administrative_domain.
duration Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
elapsed_time Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
endpoint intermediary.labels.value O valor de endpoint do registro bruto é atribuído a intermediary.labels.value, com intermediary.labels.key sendo "Gateway-Endpoint".
event_name principal.application O valor de event_name do registro bruto é atribuído a principal.application.
firewall_id intermediary.asset_id O valor de firewall_id do registro bruto é precedido por "ID do firewall : " e atribuído a intermediary.asset_id.
firewall_name principal.asset_id O valor de firewall_name do registro bruto é precedido por "Firewall: " e atribuído a principal.asset_id.
firewallname intermediary.hostname O valor de firewallname do registro bruto é atribuído a intermediary.hostname.
firewallname principal.hostname O valor de firewallname do registro bruto é atribuído a principal.hostname.
fqdn_dst_match Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
geo Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
geo_dst target.location.country_or_region O valor de geo_dst do registro bruto é atribuído a target.location.country_or_region.
geo_src principal.location.country_or_region O valor de geo_src do registro bruto é atribuído a principal.location.country_or_region.
host Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
ike_policy security_result.rule_id O valor de ike_policy do registro bruto é atribuído a security_result.rule_id.
ike_policy_version security_result.rule_version O valor de ike_policy_version do registro bruto é atribuído a security_result.rule_version.
intermediary_host intermediary.hostname O valor de intermediary_host do registro bruto é atribuído a intermediary.hostname.
ipaddress Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
ipsec_policy Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
ipsec_policy_version Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
keyword Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
line Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
log_message metadata.description O valor de log_message do registro bruto é atribuído a metadata.description quando outras descrições mais específicas não estão disponíveis.
log_reason security_result.summary O valor de log_reason do registro bruto é atribuído a security_result.summary.
log_type metadata.log_type O valor de log_type do registro bruto é atribuído a metadata.log_type. Sempre defina como "WATCHGUARD".
msg security_result.summary O valor de msg do registro bruto é atribuído a security_result.summary.
msg_id metadata.product_event_type O valor de msg_id do registro bruto é atribuído a metadata.product_event_type.
new_action security_result.action_details Usado com conn_action para formar o valor de security_result.action_details (por exemplo, "ProxyReplace: IP protocol - HTTPS-Client.DPI-Off").
op network.http.method O valor de op do registro bruto é atribuído a network.http.method.
path target.url O valor de path do registro bruto é atribuído a target.url.
pid Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
policy_name intermediary.resource.name O valor de policy_name do registro bruto é atribuído a intermediary.resource.name.
policy_name security_result.rule_name O valor de policy_name do registro bruto é atribuído a security_result.rule_name.
policyname_label.value security_result.rule_labels.value O valor de policy_name do registro bruto é atribuído a security_result.rule_labels.value, com security_result.rule_labels.key sendo "PolicyName".
prin_host principal.hostname O valor de prin_host do registro bruto é atribuído a principal.hostname.
proc_id Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
protocol network.ip_protocol O valor de protocol do registro bruto, convertido em maiúsculas, é atribuído a network.ip_protocol. Processamento especial para "ICMP EXTERNO", que é mapeado para "ICMP".
proxy_act security_result.rule_id O valor de proxy_act do registro bruto é atribuído a security_result.rule_id.
proxy_act security_result.rule_name O valor de proxy_act do registro bruto é atribuído a security_result.rule_name.
query_name network.dns.questions.name O valor de query_name do registro bruto é atribuído a network.dns.questions.name.
query_type network.dns.questions.type O valor de query_type do registro bruto é atribuído a network.dns.questions.type. Processamento especial para tipos de consulta numérica e mapeamento para tipos de consulta DNS padrão.
rc Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
reason security_result.summary O valor de reason do registro bruto é atribuído a security_result.summary.
record_type network.dns.answers.type O valor de record_type do registro bruto é mapeado para o tipo de registro DNS correspondente em network.dns.answers.type.
redirect_action Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
reputation additional.fields.value.string_value O valor de reputation do registro bruto é atribuído a additional.fields.value.string_value, com additional.fields.key sendo "reputação".
response Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
response_code network.dns.response_code O valor de response_code do registro bruto é mapeado para o código de resposta DNS correspondente em network.dns.response_code.
route_type Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
rule_name security_result.rule_name O valor de rule_name do registro bruto é atribuído a security_result.rule_name.
rcvd_bytes network.received_bytes O valor de rcvd_bytes do registro bruto é atribuído a network.received_bytes.
sent_bytes network.sent_bytes O valor de sent_bytes do registro bruto é atribuído a network.sent_bytes.
server_ssl Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
severity Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
sig_vers network.tls.server.certificate.version O valor de sig_vers do registro bruto é atribuído a network.tls.server.certificate.version.
signature_cat additional.fields.value.string_value O valor de signature_cat do registro bruto é atribuído a additional.fields.value.string_value, com additional.fields.key sendo "signature_cat".
signature_id additional.fields.value.string_value O valor de signature_id do registro bruto é atribuído a additional.fields.value.string_value, com additional.fields.key sendo "signature_id".
signature_name additional.fields.value.string_value O valor de signature_name do registro bruto é atribuído a additional.fields.value.string_value, com additional.fields.key sendo "signature_name".
sni network.tls.client.server_name O valor de sni do registro bruto é atribuído a network.tls.client.server_name.
src_ctid Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
src_host principal.hostname O valor de src_host do registro bruto é atribuído a principal.hostname.
src_ip principal.ip O valor de src_ip do registro bruto é atribuído a principal.ip.
src_ip_nat Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
src_mac principal.mac O valor de src_mac do registro bruto é atribuído a principal.mac.
src_port principal.port O valor de src_port do registro bruto é atribuído a principal.port.
src_user principal.user.user_display_name O valor de src_user do registro bruto é atribuído a principal.user.user_display_name.
src_user_name principal.user.user_display_name O valor de src_user_name do registro bruto é atribuído a principal.user.user_display_name.
src_vpn_ip principal.ip O valor de src_vpn_ip do registro bruto é atribuído a principal.ip.
srv_ip Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
srv_port Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
ssl_offload Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
tcp_info Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
time metadata.event_timestamp.seconds, timestamp.seconds O valor de time do registro bruto é analisado e usado para preencher metadata.event_timestamp.seconds e timestamp.seconds.
time1 metadata.event_timestamp.seconds, timestamp.seconds O valor de time1 do registro bruto é analisado e usado para preencher metadata.event_timestamp.seconds e timestamp.seconds.
tls_profile about.labels.value O valor de tls_profile do registro bruto é atribuído a about.labels.value, com about.labels.key sendo "tls_profile".
tls_version Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
user_name principal.user.userid, principal.user.user_display_name O valor de user_name do registro bruto é atribuído a principal.user.userid ou principal.user.user_display_name, dependendo do contexto.
user_type Não mapeados Não mapeado para o objeto IDM nos exemplos de UDM fornecidos.
(N/A) intermediary.resource.type Sempre defina como "ACCESS_POLICY".
(N/A) metadata.event_type Determinado pela lógica do analisador com base em msg_id, log_type, event_name e outros campos. Pode 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 ou USER_UNCATEGORIZED.
(N/A) metadata.product_name Sempre definido como "Fireware".
(N/A) metadata.vendor_name Sempre definido como "Watchguard".
(N/A) security_result.action Determinado pela lógica do analisador com base em disposition. Pode ser "PERMITIR" ou "BLOQUEAR".
(N/A) extensions.auth.type Defina como "AUTHTYPE_UNSPECIFIED" para eventos de login/saída do usuário e "VPN" para eventos de rede relacionados a VPNs.
(N/A) network.application_protocol Determinado pela lógica do analisador com base em msg_id e event_name. Pode ser "DNS", "DHCP", "HTTP" ou "HTTPS".
(N/A) network.dns.questions.type Defina como 1 para consultas de registro "A".
(N/A) target.labels.key Defina como "Ação no recurso" quando action for mapeado para target.labels.value.
(N/A) intermediary.labels.key Defina como "Nome do membro do firewall" quando prin_host for mapeado para intermediary.labels.value.
(N/A) intermediary.labels.key Defina como "Gateway-Endpoint" quando endpoint for mapeado para intermediary.labels.value.
(N/A) principal.labels.key Defina como "Gateway" quando gateway for mapeado para principal.labels.value.
(N/A) target.labels.key Defina como "Gateway" quando gateway for mapeado para target.labels.value.
(N/A) principal.labels.key Defina como "state" quando status for mapeado para principal.labels.value.
(N/A) target.labels.key Defina como "Status do gateway" quando status for mapeado para target.labels.value.
(N/A) additional.fields.key Defina como "signature_name", "signature_cat", "signature_id" ou "reputation" quando os valores correspondentes forem mapeados do registro bruto.

Alterações

2023-12-03

  • Modificação de um padrão Grok para analisar novos campos.
  • Alguns padrões Grok foram modificados para analisar novos padrões de "identified_log".
  • Um novo padrão Grok foi adicionado para analisar "identified_log" com o valor "msg_id" como "1600-0066".

2023-11-27

  • Mapeamos "signature_name" para "additional.fields" em registros com "msg_id" igual a "3000-0150".
  • Mapeamos "signature_id" e "signature_cat" para "additional.fields".

2023-11-24

  • Alguns padrões Grok foram modificados para analisar novos campos.
  • "firewallname" foi mapeado para "event.idm.read_only_udm.intermediary.hostname".
  • "firewall_id" foi mapeado para "event.idm.read_only_udm.intermediary.asset_id".
  • "prin_host" foi associado a "event.idm.read_only_udm.intermediary.labels".

2023-11-10

  • O código redundante foi removido.
  • Mapeamos "signature_name" para "additional.fields".

2023-09-28

  • Correção de bugs:
  • O filtro "data" foi modificado para oferecer suporte aos seguintes formatos: "aaaa-MM-dd HH:mm:ss", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601", "aaaa-MM-ddTHH:mm:ss".

2023-05-25

  • Correção de bugs:
  • O mapeamento do campo "src_vpn_ip" foi alterado de "principal.ip" para "target.ip" no evento "Mensagem DPD recebida do host de destino pelo gateway".

2023-05-04

  • Melhoria: foram adicionados padrões Grok para processar registros não analisados com o evento "dnsmasq", "dhcpd", "iked" e "admd".

2023-01-20

  • Melhoria: foi adicionado o grok para processar registros não analisados.
  • "dst_port" foi mapeado para target.port.
  • "src_port" foi mapeado para principal.port.
  • "rcvd_bytes" foi mapeado para network.received_bytes.
  • "geo_src" foi mapeado para principal.location.country_or_region.
  • "geo_dst" foi mapeado para target.location.country_or_region.
  • "prin_host" foi associado a "principal.hostname".
  • Adição de uma verificação condicional para "dhcp_type", "intermediary_host" e "protocol".
  • Para "msg_id" igual a "1600-0066"
  • O padrão grok para "msg_id" igual a "1600-0066" foi adicionado.
  • "description" foi mapeado para "metadeta.description".
  • Para "msg_id" igual a "2DFF-0000"
  • Mapeamos "proxy_act" para "security_result.rule_name".

2022-12-17

  • Melhoria: o nome do firewall foi mapeado para "principal.asset_id" para os registros que contêm "Member1".
  • "event_type" foi modificado de "SERVICE_MODIFICATION" para "NETWORK_CONNECTION".
  • Mapeou "src_user" para "principal.user.email_addresses" se for um e-mail. Caso contrário, ele será mapeado para "principal.user.user_display_name".

2022-12-16

  • Melhoria:
  • O grok foi adicionado para processar registros não analisados com event_name 'firewall'.
  • Reduzimos o tipo GENERIC_EVENT.

2022-11-16

  • Melhoria: o campo "reason" foi associado a "security_result.action_details".
  • O grok foi adicionado para processar registros não analisados com event_name 'firewall'.
  • Foram adicionados blocos condicionais para analisar logs com event_name 'loggerd', 'sigd', 'sessiond', 'admd', 'iked'.

2022-11-07

  • Correção de bugs:
  • Caminho mapeado fornecido no cabeçalho HTTP de "target.file.full_path" para "target.url".

2022-06-17

  • Melhoria: logs analisados com eventos relacionados a "firewall", "http-proxy" e "https-proxy".