Coletar registros do Delinea Secret Server

Compatível com:

Este documento explica como coletar registros do servidor secreto do Delinea (anteriormente Thycotic). O analisador transforma registros brutos em um formato estruturado que segue o UDM do Google Security Operations. Primeiro, ele extrai campos importantes, como carimbos de data/hora, tipos de evento e informações do usuário. Em seguida, usa a lógica condicional com base no tipo de evento específico para mapear os dados nos campos apropriados do UDM, enriquecendo os dados para análise no Google SecOps.

Antes de começar

  • Verifique se você tem uma instância do Google Security Operations.
  • Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com systemd.
  • Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
  • Verifique se você tem acesso privilegiado ao Delinea.

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança no sistema em que o BindPlane será instalado.

Receber o ID de cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do BindPlane

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este 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 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

Configurar o agente BindPlane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:

    • Localize o arquivo config.yaml. Normalmente, ele está 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, vi ou Notepad).
  2. Edite o arquivo config.yaml da seguinte forma:

    receivers:
      udplog:
        # Replace with your specific IP and port
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Path to the ingestion authentication file
        creds: '/path/to/your/ingestion-auth.json'
        # Your Chronicle customer ID
        customer_id: 'your_customer_id'
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
          log_type: SYSLOG
          namespace: thycotic
          raw_log_field: body
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID real do cliente.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber o arquivo de autenticação de ingestão do Google SecOps.

Reinicie o agente BindPlane para aplicar as mudanças.

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

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente BindPlane no Windows, use o console Services ou digite o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o Delinea Secret Server para enviar registros usando o Syslog

  1. Faça login no Delinea Secret Server com credenciais de administrador.
  2. Acesse Administrador > Configuração.
  3. Clique em Editar.
  4. Marque a caixa de seleção Ativar o registro do Syslog/CEF e especifique os seguintes detalhes:
    • Servidor syslog/CEF: insira o endereço IP do BindPlane.
    • Protocolo Syslog/CEF: selecione UDP ou TCP (dependendo da configuração do Bindplane).
    • Porta CEF/Syslog: digite o número da porta em que o BindPlane está configurado para detectar.
  5. Clique em Salvar.

Mapeamento do UDM

Campo de registro Mapeamento de UDM Lógica
Account_Domain event1.idm.read_only_udm.principal.domain O valor é extraído do campo "Account_Domain" no campo "msg" do registro bruto.
Por usuário event1.idm.read_only_udm.principal.user.userid O valor é retirado do campo "Por usuário" no campo "msg" do registro bruto.
ID do contêiner event1.idm.read_only_udm.principal.asset.asset_id O valor é extraído do campo "ID do contêiner" no campo "msg" do registro bruto e tem o prefixo "container_id:".
Nome do contêiner event1.idm.read_only_udm.principal.resource.name O valor é extraído do campo "Nome do contêiner" no campo "msg" do registro bruto.
cs2 event1.idm.read_only_udm.additional.fields[].value.string_value O valor é extraído do campo "cs2" no campo "msg" do registro bruto.
cs3 event1.idm.read_only_udm.target.file.full_path O valor é extraído do campo "cs3" no campo "msg" do registro bruto.
cs4 event1.idm.read_only_udm.principal.user.user_display_name O valor é extraído do campo "cs4" no campo "msg" do registro bruto.
Detalhes event1.idm.read_only_udm.additional.fields[].value.string_value O valor é extraído do campo "Detalhes" no campo "msg" do registro bruto.
fname event1.idm.read_only_udm.target.file.full_path O valor é retirado do campo "fname" no campo "msg" do registro bruto.
Host event1.idm.read_only_udm.principal.hostname, event1.idm.read_only_udm.principal.asset.hostname O valor é retirado do campo "Host" no campo "msg" do registro bruto.
Nome do item event1.idm.read_only_udm.target.user.userid O valor é extraído do campo "Item Name" no campo "msg" do registro bruto.
event1.idm.read_only_udm.additional.fields[].key O valor é fixado em "fname".
event1.idm.read_only_udm.additional.fields[].key O valor é fixado em "Grupo ou usuário".
event1.idm.read_only_udm.additional.fields[].key O valor é fixado em "Detalhes".
event1.idm.read_only_udm.additional.fields[].key O valor é codificado como "type_id".
event1.idm.read_only_udm.extensions.auth.type O valor é codificado como "MACHINE".
event1.idm.read_only_udm.metadata.description O valor é retirado do campo "thycotic_event", que é extraído do registro bruto usando um padrão grok.
event1.idm.read_only_udm.metadata.event_timestamp.seconds O valor é derivado do campo "rt", se presente, ou do campo "ts". Os dois campos são extraídos do registro bruto usando padrões grok.
event1.idm.read_only_udm.metadata.event_type O valor é determinado com base no campo "thycotic_event" e em outras condições. Por exemplo, se "thycotic_event" for "USER - LOGIN", o tipo de evento será definido como "USER_LOGIN".
event1.idm.read_only_udm.metadata.log_type O valor é fixado em "THYCOTIC".
event1.idm.read_only_udm.metadata.product_event_type O valor é retirado do campo "thycotic_event", que é extraído do registro bruto usando um padrão grok.
event1.idm.read_only_udm.metadata.product_log_id O valor é retirado do campo "action_id", que é extraído do registro bruto usando um padrão grok.
event1.idm.read_only_udm.metadata.product_name O valor é retirado do campo "device_product", que é extraído do registro bruto usando um padrão grok. Se o campo estiver vazio, o valor será codificado como "Servidor secreto".
event1.idm.read_only_udm.metadata.product_version O valor é retirado do campo "device_version", que é extraído do registro bruto usando um padrão grok.
event1.idm.read_only_udm.metadata.vendor_name O valor é codificado como "Thycotic".
event1.idm.read_only_udm.network.ip_protocol O valor será definido como "TCP" se o campo "input.type" for "tcp".
event1.idm.read_only_udm.observer.application O valor é retirado do campo "agent.type", se presente. Caso contrário, ele é codificado como "Secret Server".
event1.idm.read_only_udm.observer.asset_id O valor é definido como "ID do agente:" concatenado com o campo "agent.id".
event1.idm.read_only_udm.observer.hostname O valor é retirado do campo "agent.hostname", se presente, ou do campo "server".
event1.idm.read_only_udm.observer.platform_version O valor é extraído do campo "agent.version".
event1.idm.read_only_udm.observer.user.userid O valor é retirado do campo "agent.name".
event1.idm.read_only_udm.principal.asset.asset_id O valor é definido como "ID:" concatenado com o campo "host.id".
event1.idm.read_only_udm.principal.asset.hardware.cpu_platform O valor é extraído do campo "host.architecture".
event1.idm.read_only_udm.principal.asset.hostname O valor é retirado do campo "server", se presente, ou do campo "host.hostname".
event1.idm.read_only_udm.principal.asset.ip O valor é retirado do campo "src", se presente, ou do campo "src_ip".
event1.idm.read_only_udm.principal.hostname O valor é retirado do campo "host.hostname", se presente, ou do campo "server".
event1.idm.read_only_udm.principal.ip O valor é retirado do campo "src", se presente, ou do campo "src_ip" ou "host.ip".
event1.idm.read_only_udm.principal.mac O valor é extraído do campo "host.mac".
event1.idm.read_only_udm.principal.platform O valor é definido como "LINUX" se o campo "host_os_platform" for "centos". Caso contrário, ele será definido como o valor em maiúsculas do campo "host_os_platform".
event1.idm.read_only_udm.principal.platform_patch_level O valor é extraído do campo "host.os.kernel".
event1.idm.read_only_udm.principal.platform_version O valor é retirado do campo "host.os.version".
event1.idm.read_only_udm.principal.port O valor é retirado do campo "src_port", que é extraído do campo "log.source.address" usando um padrão grok.
event1.idm.read_only_udm.principal.user.user_display_name O valor é extraído do campo "cs4" no campo "msg" do registro bruto.
event1.idm.read_only_udm.principal.user.userid O valor é extraído do campo "suser" no campo "msg" do registro bruto ou do campo "Por usuário" se "thycotic_event" for "USER - LOGIN", "USER - LOGOUT", "USER - LOGINFAILURE" ou "USER - EDIT".
event1.idm.read_only_udm.security_result.action O valor é retirado do campo "Ação" no campo "msg" do registro bruto. Também pode ser definido como "ALLOW" ou "BLOCK" com base no valor de "thycotic_event".
event1.idm.read_only_udm.security_result.description O valor é retirado do campo "temp_message", que contém a parte restante do campo "msg" após a extração de outros campos.
event1.idm.read_only_udm.security_result.severity O valor é determinado com base no campo "syslog_severity". Por exemplo, se "syslog_severity" contiver "error" ou "warning", a gravidade será definida como "HIGH". Se "thycotic_event" for "System Log", a gravidade será definida como "INFORMATIONAL".
event1.idm.read_only_udm.security_result.severity_details O valor é retirado do campo "syslog_severity".
event1.idm.read_only_udm.target.file.full_path O valor é construído concatenando os campos "cs3" e "fname" com um separador "/" se ambos os campos estiverem presentes. Se apenas um campo estiver presente, o valor será retirado dele.
event1.idm.read_only_udm.target.resource.product_object_id O valor é extraído do campo "type_id".
event1.idm.read_only_udm.target.user.userid O valor é extraído do campo "item_name" no campo "msg" do registro bruto ou do campo "Item Name" se "thycotic_event" for "USER - LOGIN", "USER - LOGOUT", "USER - LOGINFAILURE" ou "USER - EDIT".
events.timestamp.seconds O valor é derivado do campo "rt", se presente, ou do campo "ts". Os dois campos são extraídos do registro bruto usando padrões grok.
rt event1.idm.read_only_udm.metadata.event_timestamp.seconds O valor é retirado do campo "rt" no campo "msg" do registro bruto e é usado para definir o carimbo de data/hora do evento.
src event1.idm.read_only_udm.principal.asset.ip, event1.idm.read_only_udm.principal.ip O valor é extraído do campo "src" no campo "msg" do registro bruto.
src_ip event1.idm.read_only_udm.principal.asset.ip, event1.idm.read_only_udm.principal.ip O valor é retirado do campo "src_ip", que é extraído do campo "log.source.address" usando um padrão grok.

Alterações

2024-06-04

  • Melhoria na análise de registros não analisados.
  • Os campos "Host" e "Server" foram mapeados para campos do UDM relacionados ao nome do host.
  • Mapeou "Container_Id" e "Container_name" para campos do UDM relacionados a nomes de recursos e ativos.

2023-09-22

  • A lógica de análise foi ajustada para lidar melhor com registros não analisados.
  • Adição de tratamento de erros para os campos "rt" e "ts".

2023-06-12

  • Atualização da lógica de análise para oferecer suporte a um novo formato de registro.
  • Os campos "fname", "cs2" e "details" foram mapeados para campos do UDM para mais informações e resumo dos resultados de segurança.

2022-08-01

  • Foi adicionado suporte para análise de registros no formato JSON.
  • Mapeamos vários campos dos registros JSON para os campos correspondentes do UDM, incluindo campos relacionados a informações de dispositivo e agente, endereços IP, detalhes do host, informações da plataforma e gravidade da segurança.
  • Adição de análise para registros com o tipo "SECRET - SECRETPASSWORDCHANGEFAILURE".

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