Coletar registros do switch Ubiquiti Unifi
Este documento explica como ingerir registros de switches Ubiquiti Unifi no Google Security Operations usando o Bindplane. O analisador extrai campos das mensagens do syslog usando padrões grok, convertendo os dados de registro brutos em um formato estruturado de acordo com o modelo de dados unificado (UDM). Ele processa vários formatos de registros, extrai informações importantes, como carimbos de data/hora, nomes de host, descrições e detalhes da rede, e enriquece os dados com contexto adicional antes de mesclá-los ao evento final da UDM.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Um host Windows 2016 ou mais recente ou Linux com
systemd - Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente BindPlane.
- Acesso privilegiado à interface do controlador Ubiquiti
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.
- Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura no sistema em que o Bindplane será instalado.
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
Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.
Instalação do Windows
- Abra o Prompt de Comando ou o PowerShell como administrador.
Execute este comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de root ou sudo.
Execute este comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Outros recursos de instalação
- Para mais opções de instalação, consulte este guia de instalação.
Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml. Normalmente, ele fica no diretório/etc/bindplane-agent/no Linux ou no diretório de instalação no Windows. - Abra o arquivo usando um editor de texto (por exemplo,
nano,viou Bloco de Notas).
- Localize o arquivo
Edite o arquivo
config.yamlda 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- Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
- Substitua
<CUSTOMER_IDpelo ID do cliente real. - Atualize
/path/to/ingestion-authentication-file.jsonpara o caminho em que o arquivo de autenticação foi salvo na seção Receber arquivo de autenticação de ingestão do Google SecOps.
Reinicie o agente do Bindplane para aplicar as mudanças
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agentPara reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o switch Ubiquiti para enviar o Syslog do plano de controle
- Faça login na interface do Unifi Controller.
- Abra Unifi Network.
- Acesse Configurações > Plano de controle > guia "Integrações".
- Encontre a seção Registro de atividades (Syslog).
- Ative a opção Servidor SIEM.
- Informe os seguintes detalhes de configuração:
- Clique em Editar categorias e adicione as categorias de registro necessárias.
- Endereço do servidor: insira o endereço IP do agente do Bindplane.
- Porta: insira o número da porta do agente Bindplane (UDP é obrigatório).
- Clique em Aplicar alterações.
Configurar o switch Ubiquiti para enviar o Syslog do CyberSecure
- Faça login na interface do Unifi Controller.
- Abra Unifi Network.
- Acesse Configurações > CyberSecure > guia "Registro de tráfego".
- Encontre a seção Registro de atividades (Syslog).
- Ative a opção Servidor SIEM.
- Informe os seguintes detalhes de configuração:
- Clique em Editar categorias e adicione as categorias de registro necessárias.
- Endereço do servidor: insira o endereço IP do agente do Bindplane.
- Porta: insira o número da porta do agente Bindplane (UDP é obrigatório).
- Desative os Registros de depuração.
- Clique em Aplicar alterações.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
anomalies |
security_result.detection_fields[].key: "anomalies"security_result.detection_fields[].value: valor anomalies do registro |
Mapeado diretamente do campo anomalies no registro bruto. |
application |
observer.application |
Mapeado diretamente do campo application no registro bruto. |
assoc_status |
security_result.detection_fields[].key: "assoc_status"security_result.detection_fields[].value: valor assoc_status do registro |
Mapeado diretamente do campo assoc_status no registro bruto. |
asset_details |
observer.asset.product_object_id: extraído usando o padrão grok %{GREEDYDATA:asset_id},%{GREEDYDATA:asset_version}asset_software.version: extraído usando o padrão grok %{GREEDYDATA:asset_id},%{GREEDYDATA:asset_version} |
O campo asset_details é analisado usando um padrão grok para extrair asset_id e asset_version. |
asset_id |
observer.asset.product_object_id |
Mapeado diretamente do campo asset_id extraído de asset_details. |
asset_version |
observer.asset.software.version |
Mapeado diretamente do campo asset_version extraído de asset_details. |
bssid |
principal.mac |
Mapeado diretamente do campo bssid no registro bruto. |
description |
metadata.description |
Mapeado diretamente do campo description no registro bruto. |
device |
metadata.product_name |
Mapeado diretamente do campo device no registro bruto. Se device não estiver presente, o valor "UBIQUITI_SWITCH" será usado. |
dns_resp_seen |
security_result.detection_fields[].key: "dns_resp_seen"security_result.detection_fields[].value: valor dns_resp_seen do registro |
Mapeado diretamente do campo dns_resp_seen no registro bruto. |
DST |
target.ip |
Mapeado diretamente do campo DST no registro bruto. |
DPT |
principal.port |
Mapeado diretamente do campo DPT no registro bruto 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 registro |
Mapeado diretamente do campo event_type no registro bruto. |
host |
principal.hostname |
Mapeado diretamente do campo host no registro bruto. |
ID |
additional.fields[].key: "ID"additional.fields[].value.string_value: valor ID do registro |
Mapeado diretamente do campo ID no registro bruto. |
IN |
additional.fields[].key: "IN"additional.fields[].value.string_value: valor IN do registro |
Mapeado diretamente do campo IN no registro bruto. |
interface |
additional.fields[].key: "interface"additional.fields[].value.string_value: valor interface do registro |
Mapeado diretamente do campo interface no registro bruto. |
LEN |
additional.fields[].key: "LEN"additional.fields[].value.string_value: valor LEN do registro |
Mapeado diretamente do campo LEN no registro bruto. |
mac |
principal.mac |
Mapeado diretamente do campo mac no registro bruto. |
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 se 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 do campo principal_ip no registro bruto. |
process_id |
observer.process.pid |
Mapeado diretamente do campo process_id no registro bruto. |
product_event_type |
metadata.product_event_type |
Mapeado diretamente do campo product_event_type no registro bruto. |
PROTO |
network.ip_protocol |
Mapeado diretamente do campo PROTO no registro bruto. Se PROTO for "ICMPv6", o valor será alterado para "ICMP". |
query_1 |
target.administrative_domain |
Mapeado diretamente do campo query_1 no registro bruto. |
query_server_1 |
target.ip |
Mapeado diretamente do campo query_server_1 no registro bruto. |
radio |
security_result.detection_fields[].key: "radio"security_result.detection_fields[].value: valor radio do registro |
Mapeado diretamente do campo radio no registro bruto. |
satisfaction_now |
security_result.detection_fields[].key: "satisfaction_now"security_result.detection_fields[].value: valor satisfaction_now do registro |
Mapeado diretamente do campo satisfaction_now no registro bruto. |
source_port |
principal.port |
Mapeado diretamente do campo source_port no registro bruto após a conversão para um número inteiro. |
SPT |
target.port |
Mapeado diretamente do campo SPT no registro bruto após a conversão para um número inteiro. |
SRC |
principal.ip, principal.hostname |
Mapeado diretamente do campo SRC no registro bruto. |
sta |
principal.mac |
Mapeado diretamente do campo sta no registro bruto. |
state |
additional.fields[].key: "state"additional.fields[].value.string_value: valor state do registro |
Mapeado diretamente do campo state no registro bruto. |
timestamp |
metadata.event_timestamp |
Mapeado diretamente do campo timestamp no registro bruto após ser analisado pelo filtro de data. |
TTL |
additional.fields[].key: "TTL"additional.fields[].value.string_value: valor TTL do registro |
Mapeado diretamente do campo TTL no registro bruto. |
vap |
metadata.ingestion_labels[].key: "Vap"metadata.ingestion_labels[].value: valor vap do registro |
Mapeado diretamente do campo vap no registro bruto. |
version |
metadata.product_version |
Mapeado diretamente do campo version no registro bruto. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.