Coletar registros do PAM do CyberArk

Compatível com:

Esse código de analisador primeiro extrai campos das mensagens do syslog do CyberArk Privileged Access Manager (PAM) usando expressões regulares. Em seguida, ele mapeia os campos extraídos para um modelo de dados unificado (UDM), enriquecendo os dados com mais contexto e padronizando o tipo de evento com base em critérios específicos.

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.

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.

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

  1. Para a instalação do Windows, execute o seguinte script:
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. Para a instalação do Linux, execute o seguinte script:
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. Outras opções de instalação podem ser encontradas neste guia de instalação.

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

  1. Acesse a máquina em que o BindPlane está instalado.
  2. Edite o arquivo config.yaml da seguinte forma:

    receivers:
        tcplog:
            # Replace the below port <54525> and IP <0.0.0.0> with your specific values
            listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: Cyberark_PAM
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Reinicie o agente do BindPlane para aplicar as mudanças:

    sudo systemctl restart bindplane
    

Configurar a exportação de syslog para o CyberArk Vault

  1. Faça login no servidor do Vault.
  2. Abra o arquivo de configuração dbparm.ini, localizado em: C:\Program Files (x86)\CyberArk\Vault\Server\dbparm.ini.
  3. Adicione ou modifique os seguintes parâmetros:

    SyslogServer=<syslog_server_ip>
    SyslogPort=<syslog_server_port>
    SyslogProtocol=<TCP or UDP>
    SyslogFormat=Syslog
    
  4. Salve o arquivo dbparm.ini.

  5. Reinicie o servidor do Vault:

    net stop CyberArkVault
    net start CyberArkVault
    

Configurar a exportação de Syslog no PVWA

  1. Faça login no servidor PVWA.
  2. Abra o arquivo Web.config, localizado em: C:\inetpub\wwwroot\PasswordVault\
  3. Adicione ou modifique as seguintes chaves:

    <add key="SyslogServer" value="<syslog_server_ip>" />
    <add key="SyslogPort" value="<syslog_server_port>" />
    <add key="SyslogProtocol" value="<TCP or UDP>" />
    <add key="SyslogFormat" value="Syslog" />
    
  4. Salve as alterações no arquivo Web.config.

  5. Reinicie o serviço do IIS:

    iisreset
    

Configurar a exportação de Syslog no PTA

  1. Acesse o servidor PTA usando SSH.
  2. Abra o arquivo application.properties, localizado em: /opt/cta/config/application.properties
  3. Adicione ou modifique as seguintes linhas:

    syslog.server.ip=<syslog_server_ip>
    syslog.server.port=<syslog_server_port>
    syslog.protocol=<TCP or UDP>
    
  4. Salve o arquivo application.properties.

  5. Reinicie o serviço PTA para aplicar as mudanças:

    sudo service pta restart
    

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
ato metadata.description Mapeado diretamente do campo act.
cn1 additional.fields.value.string_value Mapeado diretamente do campo cn1 quando cn1Label não está vazio.
cn1Label additional.fields.key Mapeado diretamente do campo cn1Label quando cn1 não está vazio.
cn2 additional.fields.value.string_value Mapeado diretamente do campo cn2 quando cn2Label não está vazio.
cn2Label additional.fields.key Mapeado diretamente do campo cn2Label quando cn2 não está vazio.
cs1 additional.fields.value.string_value Mapeado diretamente do campo cs1 quando cs1Label não está vazio.
cs1Label additional.fields.key Mapeado diretamente do campo cs1Label quando cs1 não está vazio.
cs2 additional.fields.value.string_value Mapeado diretamente do campo cs2 quando cs2Label não está vazio.
cs2Label additional.fields.key Mapeado diretamente do campo cs2Label quando cs2 não está vazio.
cs3 additional.fields.value.string_value Mapeado diretamente do campo cs3 quando cs3Label não está vazio.
cs3Label additional.fields.key Mapeado diretamente do campo cs3Label quando cs3 não está vazio.
cs4 additional.fields.value.string_value Mapeado diretamente do campo cs4 quando cs4Label não está vazio.
cs4Label additional.fields.key Mapeado diretamente do campo cs4Label quando cs4 não está vazio.
cs5 additional.fields.value.string_value Mapeado diretamente do campo cs5 quando cs5Label não está vazio.
cs5Label additional.fields.key Mapeado diretamente do campo cs5Label quando cs5 não está vazio.
dhost target.hostname Mapeado do campo dhost se não for um endereço IP. Se dhost estiver vazio, ele será mapeado de shost (IP ou nome do host).
dhost target.asset.hostname Mapeado do campo dhost se não for um endereço IP. Se dhost estiver vazio, ele será mapeado de shost (IP ou nome do host).
dhost target.ip Mapeado do campo dhost se for um endereço IP.
dhost target.asset.ip Mapeado do campo dhost se for um endereço IP.
duser target.user.userid Mapeado diretamente do campo duser.
dvc intermediary.ip Mapeado do campo dvc se for um endereço IP.
externalId metadata.product_log_id Mapeado diretamente do campo externalId.
fname target.file.full_path Mapeado diretamente do campo fname.
nome metadata.event_type Usado para determinar o event_type com base na combinação dos campos name, shost e dhost. Valores possíveis: USER_CHANGE_PASSWORD, FILE_READ, USER_LOGIN, FILE_OPEN, FILE_DELETION. Se nenhuma correspondência for encontrada e has_principal for verdadeiro e has_target for falso, event_type será definido como STATUS_UPDATE. Caso contrário, o padrão será GENERIC_EVENT.
prin_hostname principal.hostname Mapeado diretamente do campo prin_hostname. Se estiver vazio, será mapeado de shost se shost não for um endereço IP.
prin_hostname principal.asset.hostname Mapeado diretamente do campo prin_hostname. Se estiver vazio, será mapeado de shost se shost não for um endereço IP.
prin_ip principal.ip Mapeado diretamente do campo prin_ip. Se estiver vazio, ele será mapeado de shost se shost for um endereço IP.
prin_ip principal.asset.ip Mapeado diretamente do campo prin_ip. Se estiver vazio, ele será mapeado de shost se shost for um endereço IP.
produto metadata.product_name Mapeado diretamente do campo product. O padrão é "PAM" se não estiver presente no registro.
reason security_result.description Mapeado diretamente do campo reason.
gravidade, security_result.severity Mapeado do campo severity com base na seguinte lógica: 1-3: INFORMATIVO, 4: ERRO, 5: CRÍTICO.
shost principal.hostname Mapeado para prin_hostname se prin_hostname estiver vazio e shost não for um endereço IP.
shost principal.asset.hostname Mapeado para prin_hostname se prin_hostname estiver vazio e shost não for um endereço IP.
shost principal.ip Mapeado para prin_ip se prin_ip estiver vazio e shost for um endereço IP.
shost principal.asset.ip Mapeado para prin_ip se prin_ip estiver vazio e shost for um endereço IP.
shost target.hostname Mapeado para target.hostname se dhost estiver vazio e shost não for um endereço IP.
shost target.asset.hostname Mapeado para target.hostname se dhost estiver vazio e shost não for um endereço IP.
shost target.ip Mapeado para target.ip se dhost estiver vazio e shost for um endereço IP.
shost target.asset.ip Mapeado para target.ip se dhost estiver vazio e shost for um endereço IP.
status additional.fields.value.string_value Mapeado diretamente do campo status.
suser principal.user.userid Mapeado do campo suser. Se duser estiver vazio, ele será considerado o ID do usuário de destino.
tempo metadata.event_timestamp.seconds Mapeado diretamente do campo time após a conversão para o formato de carimbo de data/hora.
tempo metadata.event_timestamp.nanos Mapeado diretamente do campo time após a conversão para o formato de carimbo de data/hora.
fornecedor metadata.vendor_name Mapeado diretamente do campo vendor. O padrão é "CYBERARK" se não estiver presente no registro.
version metadata.product_version Mapeado diretamente do campo version.
metadata.log_type Fixado em "CYBERARK_PAM".
extensions.auth.mechanism Defina como "USERNAME_PASSWORD" se event_type for "USER_LOGIN".

Alterações

2024-05-05

  • Parser recém-criado.