Recolha registos do CyberArk PAM

Compatível com:

Este código de análise extrai primeiro campos de mensagens syslog do CyberArk Privileged Access Manager (PAM) através de expressões regulares. Em seguida, mapeia os campos extraídos para um modelo de dados unificado (UDM), enriquecendo os dados com contexto adicional e normalizando o tipo de evento com base em critérios específicos.

Antes de começar

  • Certifique-se de que tem uma instância do Google Security Operations.
  • Certifique-se de que está a usar o Windows 2016 ou posterior, ou um anfitrião Linux com systemd.
  • Se estiver a executar o serviço através de um proxy, certifique-se de que as portas da firewall estão abertas.

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. Transfira o ficheiro de autenticação de carregamento.

Obtenha o ID de cliente do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale 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. Pode encontrar opções de instalação adicionais neste guia de instalação.

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda à máquina onde o agente Bindplane está instalado.
  2. Edite o ficheiro 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 alterações:

    sudo systemctl restart bindplane
    

Configure a exportação de Syslog para o CyberArk Vault

  1. Inicie sessão no servidor do Vault.
  2. Abra o ficheiro 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. Guarde o ficheiro dbparm.ini.

  5. Reinicie o servidor do Vault:

    net stop CyberArkVault
    net start CyberArkVault
    

Configure a exportação de Syslog no PVWA

  1. Inicie sessão no servidor PVWA.
  2. Abra o ficheiro Web.config, localizado em: C:\inetpub\wwwroot\PasswordVault\
  3. Adicione ou modifique as seguintes teclas:

    <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. Guarde as alterações ao ficheiro Web.config.

  5. Reinicie o serviço IIS:

    iisreset
    

Configure a exportação de Syslog no PTA

  1. Aceda ao servidor PTA através de SSH.
  2. Abra o ficheiro 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. Guarde o ficheiro application.properties.

  5. Reinicie o serviço PTA para aplicar as alterações:

    sudo service pta restart
    

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
agir metadata.description Mapeado diretamente a partir do campo act.
cn1 additional.fields.value.string_value Mapeado diretamente a partir do campo cn1 quando cn1Label não está vazio.
cn1Label additional.fields.key Mapeado diretamente a partir do campo cn1Label quando cn1 não está vazio.
cn2 additional.fields.value.string_value Mapeado diretamente a partir do campo cn2 quando cn2Label não está vazio.
cn2Label additional.fields.key Mapeado diretamente a partir do campo cn2Label quando cn2 não está vazio.
cs1 additional.fields.value.string_value Mapeado diretamente a partir do campo cs1 quando cs1Label não está vazio.
cs1Label additional.fields.key Mapeado diretamente a partir do campo cs1Label quando cs1 não está vazio.
cs2 additional.fields.value.string_value Mapeado diretamente a partir do campo cs2 quando cs2Label não está vazio.
cs2Label additional.fields.key Mapeado diretamente a partir do campo cs2Label quando cs2 não está vazio.
cs3 additional.fields.value.string_value Mapeado diretamente a partir do campo cs3 quando cs3Label não está vazio.
cs3Label additional.fields.key Mapeado diretamente a partir do campo cs3Label quando cs3 não está vazio.
cs4 additional.fields.value.string_value Mapeado diretamente a partir do campo cs4 quando cs4Label não está vazio.
cs4Label additional.fields.key Mapeado diretamente a partir do campo cs4Label quando cs4 não está vazio.
cs5 additional.fields.value.string_value Mapeado diretamente a partir do campo cs5 quando cs5Label não está vazio.
cs5Label additional.fields.key Mapeado diretamente a partir do campo cs5Label quando cs5 não está vazio.
dhost target.hostname Mapeado a partir do campo dhost se não for um endereço IP. Se dhost estiver vazio, é mapeado a partir de shost (IP ou nome de anfitrião).
dhost target.asset.hostname Mapeado a partir do campo dhost se não for um endereço IP. Se dhost estiver vazio, é mapeado a partir de shost (IP ou nome de anfitrião).
dhost target.ip Mapeado a partir do campo dhost se for um endereço IP.
dhost target.asset.ip Mapeado a partir do campo dhost se for um endereço IP.
duser target.user.userid Mapeado diretamente a partir do campo duser.
dvc intermediary.ip Mapeado a partir do campo dvc se for um endereço IP.
externalId metadata.product_log_id Mapeado diretamente a partir do campo externalId.
fname target.file.full_path Mapeado diretamente a partir 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 e FILE_DELETION. Se não for encontrada nenhuma correspondência, e has_principal for verdadeiro e has_target for falso, event_type é definido como STATUS_UPDATE. Caso contrário, é predefinido como GENERIC_EVENT.
prin_hostname principal.hostname Mapeado diretamente a partir do campo prin_hostname. Se estiver vazio, é mapeado a partir de shost se shost não for um endereço IP.
prin_hostname principal.asset.hostname Mapeado diretamente a partir do campo prin_hostname. Se estiver vazio, é mapeado a partir de shost se shost não for um endereço IP.
prin_ip principal.ip Mapeado diretamente a partir do campo prin_ip. Se estiver vazio, é mapeado a partir de shost se shost for um endereço IP.
prin_ip principal.asset.ip Mapeado diretamente a partir do campo prin_ip. Se estiver vazio, é mapeado a partir de shost se shost for um endereço IP.
produto metadata.product_name Mapeado diretamente a partir do campo product. A predefinição é "PAM" se não estiver presente no registo.
motivo security_result.description Mapeado diretamente a partir do campo reason.
gravidade security_result.severity Mapeado a partir do campo severity com base na seguinte lógica: 1 a 3: INFORMATIONAL, 4: ERROR, 5: CRITICAL.
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.
estado additional.fields.value.string_value Mapeado diretamente a partir do campo status.
suser principal.user.userid Mapeado a partir do campo suser. Se duser estiver vazio, é considerado o ID do utilizador de destino.
tempo metadata.event_timestamp.seconds Mapeado diretamente a partir do campo time após a conversão para o formato de data/hora.
tempo metadata.event_timestamp.nanos Mapeado diretamente a partir do campo time após a conversão para o formato de data/hora.
fornecedor metadata.vendor_name Mapeado diretamente a partir do campo vendor. A predefinição é "CYBERARK" se não estiver presente no registo.
versão metadata.product_version Mapeado diretamente a partir do campo version.
metadata.log_type Codificado de forma rígida para "CYBERARK_PAM".
extensions.auth.mechanism Definido como "USERNAME_PASSWORD" se event_type for "USER_LOGIN".

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