Coletar registros do WatchGuard Fireware
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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- Faça o download do arquivo de autenticação de transferência.
Receber o ID de cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie e salve o ID do cliente na seção Detalhes da organização.
Instalar o agente do BindPlane
- 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
. - 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
. - 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
- Acesse a máquina em que o BindPlane está instalado.
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
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
- Faça login na interface do Watchguard.
- Selecione Sistema > Registros.
- Clique na guia Servidor Syslog.
- Marque a caixa de seleção Enviar mensagens de registro para estes servidores syslog.
- Clique em Adicionar.
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.
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".