Recolha registos do comutador Ubiquiti Unifi

Suportado em:

Este documento explica como carregar registos do comutador Ubiquiti Unifi para o Google Security Operations através do Bindplane. O analisador extrai campos das mensagens syslog através de padrões grok, convertendo os dados de registo não processados num formato estruturado em conformidade com o modelo de dados unificado (UDM). Processa vários formatos de registos, extrai informações importantes, como indicações de tempo, nomes de anfitriões, descrições e detalhes da rede, e enriquece os dados com contexto adicional antes de os unir ao evento UDM final.

Antes de começar

Certifique-se de que cumpre os seguintes pré-requisitos:

  • Uma instância do Google SecOps
  • Um anfitrião Windows 2016 ou posterior, ou Linux com systemd
  • Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas de acordo com os requisitos do agente BindPlane
  • Acesso privilegiado à IU do controlador da Ubiquiti

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.

Obtenha o ID de cliente do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.

Instalação de janelas

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. Execute o seguinte comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalação adicionais

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:

    1. Localize o ficheiro config.yaml. Normalmente, encontra-se no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    2. Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. Edite o ficheiro config.yaml da seguinte forma:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'UBIQUITI_SWITCH'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    

Reinicie o agente do Bindplane para aplicar as alterações

  • Para reiniciar o agente Bindplane no Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure o comutador Ubiquiti para enviar o Syslog do plano de controlo

  1. Inicie sessão na IU do Unifi Controller.
  2. Abra a Unifi Network.
  3. Aceda a Definições > Plano de controlo > separador Integrações.
  4. Encontre a secção Registo de atividade (Syslog).
  5. Ative a opção Servidor SIEM.
  6. Forneça os seguintes detalhes de configuração:
    • Clique em Editar categorias e adicione as categorias de registo necessárias.
    • Endereço do servidor: introduza o endereço IP do agente Bindplane.
    • Porta: introduza o número da porta do agente Bindplane (o UDP é obrigatório).
  7. Clique em Aplicar alterações.

Configure o comutador Ubquiti para enviar Syslog do CyberSecure

  1. Inicie sessão na IU do Unifi Controller.
  2. Abra a Unifi Network.
  3. Aceda a Definições > CyberSecure > separador Registo de tráfego.
  4. Encontre a secção Registo de atividade (Syslog).
  5. Ative a opção Servidor SIEM.
  6. Forneça os seguintes detalhes de configuração:
    • Clique em Editar categorias e adicione as categorias de registo necessárias.
    • Endereço do servidor: introduza o endereço IP do agente Bindplane.
    • Porta: introduza o número da porta do agente Bindplane (o UDP é obrigatório).
    • Desative os Registos de depuração.
  7. Clique em Aplicar alterações.

Tabela de mapeamento da UDM

Campo de registo Mapeamento do UDM Lógica
anomalies security_result.detection_fields[].key: "anomalies"
security_result.detection_fields[].value: valor anomalies do registo
Mapeado diretamente a partir do campo anomalies no registo não processado.
application observer.application Mapeado diretamente a partir do campo application no registo não processado.
assoc_status security_result.detection_fields[].key: "assoc_status"
security_result.detection_fields[].value: valor assoc_status do registo
Mapeado diretamente a partir do campo assoc_status no registo não processado.
asset_details observer.asset.product_object_id: extraído através do padrão grok %{GREEDYDATA:asset_id},%{GREEDYDATA:asset_version}
asset_software.version: extraído através do padrão grok %{GREEDYDATA:asset_id},%{GREEDYDATA:asset_version}
O campo asset_details é analisado através de um padrão grok para extrair o asset_id e o asset_version.
asset_id observer.asset.product_object_id Mapeado diretamente a partir do campo asset_id extraído de asset_details.
asset_version observer.asset.software.version Mapeado diretamente a partir do campo asset_version extraído de asset_details.
bssid principal.mac Mapeado diretamente a partir do campo bssid no registo não processado.
description metadata.description Mapeado diretamente a partir do campo description no registo não processado.
device metadata.product_name Mapeado diretamente a partir do campo device no registo não processado. Se device não estiver presente, é usado o valor "UBIQUITI_SWITCH".
dns_resp_seen security_result.detection_fields[].key: "dns_resp_seen"
security_result.detection_fields[].value: valor dns_resp_seen do registo
Mapeado diretamente a partir do campo dns_resp_seen no registo não processado.
DST target.ip Mapeado diretamente a partir do campo DST no registo não processado.
DPT principal.port Mapeado diretamente a partir do campo DPT no registo não processado após a conversão para um número inteiro.
event_type security_result.detection_fields[].key: "event_type"
security_result.detection_fields[].value: valor event_type do registo
Mapeado diretamente a partir do campo event_type no registo não processado.
host principal.hostname Mapeado diretamente a partir do campo host no registo não processado.
ID additional.fields[].key: "ID"
additional.fields[].value.string_value: valor ID do registo
Mapeado diretamente a partir do campo ID no registo não processado.
IN additional.fields[].key: "IN"
additional.fields[].value.string_value: valor IN do registo
Mapeado diretamente a partir do campo IN no registo não processado.
interface additional.fields[].key: "interface"
additional.fields[].value.string_value: valor interface do registo
Mapeado diretamente a partir do campo interface no registo não processado.
LEN additional.fields[].key: "LEN"
additional.fields[].value.string_value: valor LEN do registo
Mapeado diretamente a partir do campo LEN no registo não processado.
mac principal.mac Mapeado diretamente a partir do campo mac no registo não processado.
metadata.event_type metadata.event_type Derivado da lógica do analisador. Definido como "STATUS_SHUTDOWN" se state for "Down", "STATUS_STARTUP" se state for "Up", "STATUS_UPDATE" se kv_msg e DST estiverem presentes ou principal_present for verdadeiro e "GENERIC_EVENT" caso contrário.
metadata.log_type metadata.log_type: "UBIQUITI_SWITCH" Valor constante definido pelo analisador.
metadata.vendor_name metadata.vendor_name: "UBIQUITI" Valor constante definido pelo analisador.
principal_ip principal.ip Mapeado diretamente a partir do campo principal_ip no registo não processado.
process_id observer.process.pid Mapeado diretamente a partir do campo process_id no registo não processado.
product_event_type metadata.product_event_type Mapeado diretamente a partir do campo product_event_type no registo não processado.
PROTO network.ip_protocol Mapeado diretamente a partir do campo PROTO no registo não processado. Se PROTO for "ICMPv6", o valor é alterado para "ICMP".
query_1 target.administrative_domain Mapeado diretamente a partir do campo query_1 no registo não processado.
query_server_1 target.ip Mapeado diretamente a partir do campo query_server_1 no registo não processado.
radio security_result.detection_fields[].key: "radio"
security_result.detection_fields[].value: valor radio do registo
Mapeado diretamente a partir do campo radio no registo não processado.
satisfaction_now security_result.detection_fields[].key: "satisfaction_now"
security_result.detection_fields[].value: valor satisfaction_now do registo
Mapeado diretamente a partir do campo satisfaction_now no registo não processado.
source_port principal.port Mapeado diretamente a partir do campo source_port no registo não processado após a conversão para um número inteiro.
SPT target.port Mapeado diretamente a partir do campo SPT no registo não processado após a conversão para um número inteiro.
SRC principal.ip, principal.hostname Mapeado diretamente a partir do campo SRC no registo não processado.
sta principal.mac Mapeado diretamente a partir do campo sta no registo não processado.
state additional.fields[].key: "state"
additional.fields[].value.string_value: valor state do registo
Mapeado diretamente a partir do campo state no registo não processado.
timestamp metadata.event_timestamp Mapeado diretamente a partir do campo timestamp no registo não processado após a análise pelo filtro de data.
TTL additional.fields[].key: "TTL"
additional.fields[].value.string_value: valor TTL do registo
Mapeado diretamente a partir do campo TTL no registo não processado.
vap metadata.ingestion_labels[].key: "Vap"
metadata.ingestion_labels[].value: valor vap do registo
Mapeado diretamente a partir do campo vap no registo não processado.
version metadata.product_version Mapeado diretamente a partir do campo version no registo não processado.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.