Recolha registos do comutador Ubiquiti Unifi
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
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- 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
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- 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
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte 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 raiz ou sudo.
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
- Para ver opções de instalação adicionais, consulte este guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
Aceda ao ficheiro de configuração:
- 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. - Abra o ficheiro com um editor de texto (por exemplo,
nano,viou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
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 de cliente real. - Atualize
/path/to/ingestion-authentication-file.jsonpara o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
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-agentPara 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
- Inicie sessão na IU do Unifi Controller.
- Abra a Unifi Network.
- Aceda a Definições > Plano de controlo > separador Integrações.
- Encontre a secção Registo de atividade (Syslog).
- Ative a opção Servidor SIEM.
- 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).
- Clique em Aplicar alterações.
Configure o comutador Ubquiti para enviar Syslog do CyberSecure
- Inicie sessão na IU do Unifi Controller.
- Abra a Unifi Network.
- Aceda a Definições > CyberSecure > separador Registo de tráfego.
- Encontre a secção Registo de atividade (Syslog).
- Ative a opção Servidor SIEM.
- 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.
- 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.