Coletar registros do CyberArk

Compatível com:

Este documento explica como ingerir registros do CyberArk no Google Security Operations usando o agente Bindplane.

O CyberArk Privileged Access Manager (PAM) é uma solução de segurança de acesso privilegiado de nível empresarial que protege, gerencia e monitora contas e credenciais privilegiadas em ambientes locais e na nuvem. Ele oferece proteção de credenciais, isolamento e monitoramento de sessões, detecção de ameaças com a análise de ameaças privilegiadas (PTA, na sigla em inglês) e geração de registros de auditoria abrangente de todas as atividades privilegiadas.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps
  • Windows Server 2016 ou mais recente ou host Linux com systemd
  • Conectividade de rede entre o agente do Bindplane e o servidor do CyberArk Vault
  • Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane.
  • Acesso administrativo ao servidor do CyberArk Vault (acesso à pasta de instalação Server\Conf)
  • CyberArk Vault versão 10.0 ou mais recente

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. Baixe o arquivo de autenticação de ingestão. Salve o arquivo com segurança no sistema em que o agente do 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

Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.

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
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sc query observiq-otel-collector
    

    O status do serviço deve ser EM EXECUÇÃO.

Instalação do Linux

  1. Abra um terminal com privilégios de root 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
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sudo systemctl status observiq-otel-collector
    

    O status do serviço precisa ser active (running).

Outros recursos de instalação

Para mais opções de instalação e solução de problemas, consulte o guia de instalação do agente do Bindplane.

Configurar o agente do Bindplane para ingerir o syslog e enviá-lo ao Google SecOps

Localizar o arquivo de configuração

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Editar o arquivo de configuração

  1. Substitua todo o conteúdo de config.yaml pela seguinte configuração:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/cyberark:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'your-customer-id'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: CYBERARK
            raw_log_field: body
    
    service:
        pipelines:
            logs/cyberark_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/cyberark
    
  2. Substitua os seguintes marcadores de posição:

    • Configuração do receptor:

      • listen_address: endereço IP e porta a serem detectados:

        • 0.0.0.0:514 para detectar em todas as interfaces na porta 514 (requer root no Linux)
        • 0.0.0.0:1514 para detectar uma porta sem privilégios (recomendado para Linux não root)
      • Opções de tipo de receptor:

        • udplog para syslog UDP (padrão para o CyberArk Vault)
        • tcplog para syslog TCP
        • Use tcplog se o CyberArk Vault estiver configurado com SyslogServerProtocol=TCP
    • Configuração do exportador:

      • creds_file_path: caminho completo para o arquivo de autenticação de ingestão do Google SecOps:

        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id: ID do cliente do Google SecOps

      • endpoint: URL do endpoint regional:

        • EUA: malachiteingestion-pa.googleapis.com
        • Europa: europe-malachiteingestion-pa.googleapis.com
        • Ásia: asia-southeast1-malachiteingestion-pa.googleapis.com
        • Consulte a lista completa em Endpoints regionais.

Salve o arquivo de configuração.

Depois de editar, salve o arquivo:

  • Linux: pressione Ctrl+O, Enter e Ctrl+X.
  • Windows: clique em Arquivo > Salvar.

Reinicie o agente do Bindplane para aplicar as mudanças

  • Para reiniciar o agente do Bindplane no Linux:

    1. Execute este comando:

      sudo systemctl restart observiq-otel-collector
      
    2. Verifique se o serviço está sendo executado:

      sudo systemctl status observiq-otel-collector
      
    3. Verifique se há erros nos registros:

      sudo journalctl -u observiq-otel-collector -f
      
  • Para reiniciar o agente do Bindplane em Windows:

    1. Escolha uma das seguintes opções:

      • Prompt de comando ou PowerShell como administrador:

        net stop observiq-otel-collector && net start observiq-otel-collector
        
      • Console de serviços:

        1. Pressione Win+R, digite services.msc e pressione Enter.
        2. Localize o Coletor do OpenTelemetry da observIQ.
        3. Clique com o botão direito do mouse e selecione Reiniciar.
    2. Verifique se o serviço está sendo executado:

      sc query observiq-otel-collector
      
    3. Verifique se há erros nos registros:

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      

Configurar o encaminhamento de syslog do CyberArk

O CyberArk Vault envia eventos de auditoria em CEF (Common Event Format) via syslog. O servidor do Vault converte registros de auditoria XML em mensagens CEF usando um arquivo tradutor XSL e os encaminha para o agente do Bindplane.

Configurar o servidor do Vault para enviar syslog

  1. Faça login na máquina host do servidor do Vault do CyberArk com privilégios de administrador.
  2. Navegue até a pasta de instalação do servidor do Vault do CyberArk (por exemplo, `C:\Program Files (x86)\PrivateArk\Server\Conf`).
  3. Abra o arquivo DBParm.ini em um editor de texto.
  4. Copie a seção [SYSLOG] do arquivo DBParm.sample.ini (localizado na mesma pasta) e cole na parte de baixo de DBParm.ini.
  5. Configure os seguintes parâmetros do syslog na seção [SYSLOG]:

    [SYSLOG]
    SyslogServerIP=<BINDPLANE_AGENT_IP>
    SyslogServerPort=514
    SyslogServerProtocol=UDP
    UseLegacySyslogFormat=No
    SyslogTranslatorFile=Syslog\Arcsight.sample.xsl
    SyslogMessageCodeFilter=0-999
    
  6. Substitua os seguintes valores:

    • SyslogServerIP: insira o endereço IP do host do agente Bindplane (por exemplo, 192.168.1.100).
    • SyslogServerPort: digite a porta correspondente ao agente do Bindplane listen_address (por exemplo, 514).
    • SyslogServerProtocol: selecione o protocolo:

      • UDP para syslog UDP (padrão)
      • TCP para syslog TCP
    • SyslogTranslatorFile: insira o arquivo de tradução XSL para o formato CEF:

      • Syslog\Arcsight.sample.xsl para saída CEF padrão (recomendado)
    • SyslogMessageCodeFilter: insira os códigos de mensagem a serem encaminhados:

      • 0-999 para encaminhar todos os eventos
      • Especifique códigos ou intervalos individuais (por exemplo, 1,2,3,5-10,30) para filtrar eventos específicos.
    • UseLegacySyslogFormat: defina como No para o formato RFC 5424.

  7. Salve o arquivo DBParm.ini.

  8. Reinicie o serviço PrivateArk Server:

    1. Abra os Serviços do Windows (services.msc).
    2. Localize o serviço CyberArk Vault Disaster Recovery e pare-o (se estiver em execução).
    3. Localize o serviço PrivateArk Server.
    4. Clique com o botão direito do mouse e selecione Reiniciar.
    5. Inicie o serviço CyberArk Vault Disaster Recovery novamente (se aplicável).

Encaminhar syslog para vários destinos

  • Para encaminhar eventos do syslog do Vault para o agente do Bindplane e outros destinos (por exemplo, PTA), especifique vários endereços IP e arquivos de tradução separados por vírgulas:

    SyslogServerIP=<BINDPLANE_AGENT_IP>,<PTA_SERVER_IP>
    SyslogTranslatorFile=Syslog\Arcsight.sample.xsl,Syslog\PTA.xsl
    

Configurar o encaminhamento de syslog do Privileged Threat Analytics (PTA, na sigla em inglês) (opcional)

Se você também quiser encaminhar alertas de segurança do PTA para o Google SecOps, configure a integração do SIEM do PTA:

  1. Faça login no console do PVWA (acesso à Web do cofre de senhas).
  2. Acesse Administração > Opções de configuração > Análise de ameaças privilegiada.
  3. Na seção SIEM, configure o seguinte:
    • IP do servidor Syslog: insira o endereço IP do host do agente Bindplane.
    • Porta do servidor Syslog: insira a porta correspondente à configuração do agente do Bindplane (por exemplo, 514).
    • Protocolo: selecione UDP ou TCP para corresponder ao receptor do agente do Bindplane.
    • Formato: selecione CEF.
  4. Clique em Salvar.

Arquivos de tradutor XSL disponíveis

  • A subpasta Syslog na pasta de instalação do CyberArk Server contém arquivos de tradutor XSL de exemplo:

    Arquivo do tradutor Formato Descrição
    Arcsight.sample.xsl CEF Formato CEF padrão (recomendado para o Google SecOps)
    SplunkCIM.xsl CIM Formato do modelo de informações comum do Splunk
    PTA.xsl Personalizado Formato para encaminhamento ao CyberArk PTA
    XSIAM.xsl CEF Formato do Palo Alto Cortex XSIAM

Verificar o encaminhamento de syslog

  1. Depois de reiniciar o serviço do PrivateArk Server, faça uma ação de teste no Vault (por exemplo, recupere uma senha ou faça login no PVWA).
  2. Verifique os registros do agente do Bindplane para mensagens syslog recebidas:
    • Linux: sudo journalctl -u observiq-otel-collector -f
    • Windows: type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
  3. Verifique se as mensagens formatadas em CEF aparecem nos registros. Por exemplo:

    CEF:0|Cyber-Ark|Vault|10.0|22|CPM password retrieved|5|suser=Administrator src=10.0.0.1 fname=Root\operating system-server1-admin
    

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
RequestId_label additional.fields Mapeado como par de chave-valor
Category_label additional.fields Mapeado como par de chave-valor
ExtraDetails_label additional.fields Mapeado como par de chave-valor
CAPolicy_label additional.fields Mapeado como par de chave-valor
line_number_label additional.fields Mapeado como par de chave-valor
pasvc_action_label additional.fields Mapeado como par de chave-valor
control_socket_label additional.fields Mapeado como par de chave-valor
data_socket_label additional.fields Mapeado como par de chave-valor
timeout_label additional.fields Mapeado como par de chave-valor
vault_name_label additional.fields Mapeado como par de chave-valor
class_name_label additional.fields Mapeado como par de chave-valor
status_label additional.fields Mapeado como par de chave-valor
Publisher_Event additional.fields Mapeado como par de chave-valor
Last_Event additional.fields Mapeado como par de chave-valor
Total_Events additional.fields Mapeado como par de chave-valor
cs1_var additional.fields Mapeado como par de chave-valor
cs3_var additional.fields Mapeado como par de chave-valor
app_var additional.fields Mapeado como par de chave-valor
reason_var additional.fields Mapeado como par de chave-valor
cs5_var additional.fields Mapeado como par de chave-valor
cs4_var additional.fields Mapeado como par de chave-valor
_auth_mechanism extensions.auth.mechanism Mesclado diretamente
dvc intermediary.ip Se o valor corresponder ao padrão de endereço IP
EventName metadata.description Se o processo não corresponder ao padrão exe
agir metadata.description Se fname estiver vazio
EventMessage metadata.description Se "act" estiver vazio
LastEventDate metadata.event_timestamp Convertido usando o formato ISO8601 ou aaaa-MM-ddTHH:mm:ss
_temp_datetime metadata.event_timestamp Convertido usando o formato dd/MM/aaaa HH:mm:ss
datetime metadata.event_timestamp Convertido usando o formato ISO8601 ou MMM d HH:mm:ss
_event_type metadata.event_type Renomeado diretamente
nome metadata.event_type Definido com base nas condições: FILE_CREATION para "Store File", USER_LOGIN para "Logon", NETWORK_CONNECTION se has_principal e has_target, FILE_UNCATEGORIZED se has_target_file_details, PROCESS_UNCATEGORIZED se has_target_process_details, STATUS_UPDATE se has_principal apenas, NETWORK_UNCATEGORIZED se app_error e has_principal e has_target, caso contrário, GENERIC_EVENT
EventType metadata.product_event_type Mapeado diretamente
signature_id, name metadata.product_event_type Concatenado de "signature_id" e "name"
LastEventID metadata.product_log_id Convertido em string
tid metadata.product_log_id Mapeado diretamente
produto metadata.product_name Renomeado diretamente
version metadata.product_version Renomeado diretamente
fornecedor metadata.vendor_name Renomeado diretamente
host observer.hostname Mapeado diretamente
LastEventUserName principal.administrative_domain Extraído usando o padrão grok domain\user
ApplicationType principal.application Mapeado diretamente
shost principal.asset.hostname Se o valor não corresponder ao padrão de endereço IP
shost principal.asset.hostname Substituição se dhost estiver vazio
shost principal.asset.ip Se o valor corresponder ao padrão de endereço IP
src principal.asset.ip Mapeado diretamente
ip_address principal.asset.ip Mapeado diretamente
shost principal.asset.ip Substituição se dhost estiver vazio
shost principal.ip Se o valor corresponder ao padrão de endereço IP, será mesclado
src principal.ip Mesclado diretamente
ip_address principal.ip Mesclado diretamente
Local principal.location.name Mapeado diretamente
LastEventSourceName principal.platform Definido como WINDOWS se o valor corresponder ao padrão do Windows
EventName principal.process.command_line Se o processo corresponder ao padrão exe
LastEventPackageName principal.resource.name Se o valor não for EventName
ApplicationType principal.user.attribute.roles Definido como ADMINISTRATOR se o valor for igual a AdminTask
LastEventUserName principal.user.user_display_name Parte do usuário extraída usando o padrão grok domain\user
user_name principal.user.user_display_name Mapeado diretamente
SourceUser principal.user.userid Mapeado diretamente
suser principal.user.userid Se o evento não for do tipo USER_
usrName principal.user.userid Mapeado diretamente
_action security_result.action Mesclado diretamente
nome security_result.action Definido como BLOCK se o valor começar com "Failure" ou "Failed". Caso contrário, ALLOW.
msg security_result.description Mapeado diretamente
msg, reason security_result.description Concatenado de "msg" e "reason" se a condição de falha
_sec_result_description security_result.description Mapeado diretamente
PolicyName security_result.rule_name Mapeado diretamente
cs2 security_result.rule_name Mapeado diretamente
gravidade, security_result.severity Definido como BAIXO se o valor for <= 5, MÉDIO se o valor for <= 8 e ALTO caso contrário.
sev security_result.severity Mapeado diretamente
sev security_result.severity_details Mapeado diretamente
Motivo security_result.summary Mapeado diretamente
nome security_result.summary Mapeado diretamente
dhost target.asset.hostname Se o valor não corresponder ao padrão de endereço IP
shost target.asset.hostname Substituição se dhost estiver vazio
dhost target.asset.ip Se o valor corresponder ao padrão de endereço IP
GatewayStation target.asset.ip Mapeado diretamente
shost target.asset.ip Substituição se dhost estiver vazio
FileQualifier target.asset_id Com prefixo "ASSET ID:" e convertido em string
Arquivo target.file.full_path Mapeado diretamente
file_path target.file.full_path Mapeado diretamente
LastEventSourceName target.file.full_path Se o valor começar com "C:"
fname target.file.full_path Mapeado diretamente
Hash target.file.sha1 Prefixo "SHA1##" removido e valor convertido para minúsculas, se o tipo for SHA1
GatewayStation target.ip Mesclado diretamente
pid target.process.pid Convertido em string
Seguro target.resource.name Mapeado diretamente
user_name target.user.user_display_name Mapeado diretamente
TargetUser target.user.userid Mapeado diretamente
duser target.user.userid Mapeado diretamente
suser target.user.userid Se o evento for do tipo USER_

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