Coletar registros de identidade privilegiada do BeyondTrust
Neste documento, explicamos 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 campos-chave, 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 contexto adicional, 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 da 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 do 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 é definida como 514 (UDP).
- Formato: selecione RFC 5424.
- Clique em Salvar.
Tabela de mapeamento da UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| cs1 | additional.fields[0].key | Mapeado diretamente do campo de registro bruto cs1Label. |
| cs1Label | additional.fields[0].value.string_value | Mapeado diretamente do campo de registro bruto cs1. |
| cs3 | additional.fields[1].value.string_value | Mapeado diretamente do campo de registro bruto cs3Label. |
| cs3Label | additional.fields[1].key | Mapeado diretamente do campo de registro bruto cs3. |
| cs4 | additional.fields[2].value.string_value | Mapeado diretamente do campo de registro bruto cs4Label. |
| cs4Label | additional.fields[2].key | Mapeado diretamente do campo de registro bruto cs4. |
| dados | metadata.description | Para mensagens CEF, o campo msg (extraído de data) é mapeado para metadata.description. Para mensagens não 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 de registro bruto dhost. |
| dntdom | target.administrative_domain | Mapeado diretamente do campo de registro bruto dntdom. |
| duser | target.user.user_display_name | Mapeado diretamente do campo de registro bruto duser. |
| 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 de registro bruto shost. |
| 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 de registro bruto sntdom. |
| 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 de registro bruto suser. 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.