Coletar registros de identidade privilegiada do BeyondTrust
Este documento explica como ingerir registros de identidade privilegiada do BeyondTrust no
Google Security Operations usando o Bindplane. O analisador extrai registros do BeyondTrust Remote Support, processando mensagens syslog formatadas em CEF e não CEF. Ele analisa os campos principais, mapeia-os para o modelo de dados unificado (UDM) e determina o tipo de evento com base em campos extraídos, como dst, src, suid e sEventID, enriquecendo os dados com mais contexto, como detalhes do usuário, endereços IP e resultados de segurança.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Instância do Google SecOps
- Windows 2016 ou mais recente ou um host Linux com
systemd - Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
- Acesso privilegiado ao dispositivo de acesso remoto privilegiado do BeyondTrust.
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
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 o 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: '/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 ingestion_labels: log_type: 'BEYONDTRUST_PI' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labelsSubstitua a porta e o endereço IP conforme necessário na sua infraestrutura.
Substitua
<customer_id>pelo 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 Syslog no BeyondTrust Privileged Identity
- Faça login no Beyondtrust Privileged Appliance.
- Acesse Appliance > Segurança > Administração do appliance.
- Acesse a seção Syslog.
- Informe os seguintes detalhes de configuração:
- Nome do host: insira o endereço IP do agente do Bindplane.
- Porta: a porta padrão é 514 (UDP).
- Formato: selecione RFC 5424.
- Clique em Salvar.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| cs1 | additional.fields[0].key | Mapeado diretamente do campo cs1Label do registro bruto. |
| cs1Label | additional.fields[0].value.string_value | Mapeado diretamente do campo cs1 do registro bruto. |
| cs3 | additional.fields[1].value.string_value | Mapeado diretamente do campo cs3Label do registro bruto. |
| cs3Label | additional.fields[1].key | Mapeado diretamente do campo cs3 do registro bruto. |
| cs4 | additional.fields[2].value.string_value | Mapeado diretamente do campo cs4Label do registro bruto. |
| cs4Label | additional.fields[2].key | Mapeado diretamente do campo cs4 do registro bruto. |
| dados | metadata.description | Para mensagens CEF, o campo msg (extraído de data) é mapeado para metadata.description. Para mensagens que não são do CEF, o campo sMessage (ou partes dele, dependendo do formato específico da mensagem) é mapeado para metadata.description. |
| dhost | target.hostname | Mapeado diretamente do campo dhost do registro bruto. |
| dntdom | target.administrative_domain | Mapeado diretamente do campo dntdom do registro bruto. |
| duser | target.user.user_display_name | Mapeado diretamente do campo duser do registro bruto. |
| msg | metadata.description | Mapeado diretamente do campo de registro bruto msg em mensagens CEF. |
| rt | metadata.event_timestamp.seconds | O carimbo de data/hora da época é extraído do campo rt nas mensagens CEF. |
| sEventType | metadata.product_event_type | Mapeado diretamente do campo de registro bruto sEventType em mensagens não CEF. |
| shost | principal.ip | Mapeado diretamente do campo shost do registro bruto. |
| sIpAddress | principal.ip | Mapeado diretamente do campo de registro bruto sIpAddress em mensagens não CEF. |
| sLoginName | principal.user.userid | Extraído do campo sLoginName usando uma expressão regular para separar o domínio e o ID do usuário. |
| sMessage | security_result.description | Mapeado diretamente do campo de registro bruto sMessage em mensagens não CEF ou partes extraídas dele são usadas para security_result.description. |
| sntdom | principal.administrative_domain | Mapeado diretamente do campo sntdom do registro bruto. |
| sOriginatingAccount | principal.user.userid | Extraído do campo sOriginatingAccount usando uma expressão regular para separar o domínio e o ID do usuário. |
| sOriginatingApplicationComponent | principal.application | Usado em combinação com sOriginatingApplicationName para preencher principal.application. |
| sOriginatingApplicationName | principal.application | Usado em combinação com sOriginatingApplicationComponent para preencher principal.application. |
| sOriginatingSystem | principal.hostname | Mapeado diretamente do campo de registro bruto sOriginatingSystem em mensagens não CEF. |
| suser | principal.user.user_display_name | Mapeado diretamente do campo suser do registro bruto. Determinado pela lógica do analisador com base na presença e nos valores de outros campos, como dst, src, shost e suid. Os valores possíveis são NETWORK_CONNECTION, STATUS_UPDATE, USER_UNCATEGORIZED e GENERIC_EVENT. Defina como "BEYONDTRUST_PI". Defina como "BeyondTrust Remote Support". Extraído do cabeçalho CEF em mensagens CEF. Defina como "BeyondTrust". Definido como "ALLOW" ou "BLOCK" com base nos campos status, reason ou sMessage. Defina como LOW. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.