Coletar registros de acesso do IBM Security Verify

Compatível com:

Este documento descreve como coletar registros do IBM Security Verify Access. O analisador extrai campos comuns, como carimbos de data/hora, nomes de host e descrições, usando padrões Grok. Em seguida, ele usa a análise de XML para informações detalhadas do evento incorporadas no campo de descrição, mapeando os dados extraídos para o modelo de dados unificado (UDM, na sigla em inglês) para a representação de eventos de segurança padronizados.

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 administrativo ao IBM Security Verify Access (ISVA).

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 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: ibm_security_verify
            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 de cliente real.

  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 transferência do Google SecOps.

Reinicie o agente BindPlane para aplicar as mudanças.

  • No Linux, para reiniciar o agente BindPlane, execute o seguinte comando:

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

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Personalizar o formato do registro

  1. Para editar o arquivo de configuração WebSEAL, use a interface de gerenciamento local (LMI) do dispositivo.
  2. Na LMI, acesse Gerenciamento de proxy reverso.
  3. Clique em Gerenciar > Configuração > Editar arquivo de configuração. Você pode usar o editor para editar diretamente o arquivo de configuração WebSEAL.
  4. Acesse logging[stanza], procure syntax requests = {yes|no} e clique em Sim.
  5. Acesse o parâmetro gmt-time e edite-o da seguinte forma: gmt-time = yes.
  6. Substitua o request-log-format pelo seguinte:

    request-log-format = ibmsva: %h %l "%u" %t "%r" %s %b %T %j %{X-Forwarded-For}i %a %A %H %p %m %U %v %d %q
    
  7. Confira a explicação a seguir de cada diretiva:

    • ibmsva: Identifica registros do dispositivo SVA
    • %h: host remoto
    • %l: nome de logon remoto
    • %u: usuário remoto
    • %t: hora e data no formato CLF
    • %r: primeira linha da solicitação
    • %s: status da resposta
    • %b: bytes na resposta (excluindo cabeçalhos HTTP)
    • %T: tempo para atender a solicitação (segundos)
    • %j: nome da junção
    • %X-Forwarded-For: Endereço IP encaminhado
    • %a: endereço IP remoto
    • %A: endereço IP local
    • %H: protocolo de solicitação
    • %p: porta
    • %m: método de solicitação (GET, POST, HEAD)
    • %U: URL solicitado
    • %v: nome do servidor
    • %d: identificador da transação
    • %q: string de consulta

Configurar o encaminhamento de syslog no ISVA

  1. Faça login na interface de gerenciamento local da ISVA.
  2. Acesse Monitor > Registros > Encaminhamento remoto de Syslog.
  3. Clique em Adicionar.
  4. Especifique os detalhes do servidor syslog remoto.
    • Servidor: o endereço IP ou o nome do host do servidor syslog (Bindplane).
    • Porta: a porta em que o servidor syslog está detectando solicitações (Bindplane).
    • Protocolo: selecione UDP ou TCP (dependendo da configuração do syslog/Bindplane).
    • Formato: selecione Syslog.
  5. Clique em Salvar.

Como configurar as origens de registro para um servidor de registro remoto

  1. Selecione o servidor syslog remoto para enviar os registros.
  2. Clique em Origens.
  3. Clique em Adicionar.
  4. Especifique os detalhes da origem do registro e clique em OK.

    • Nome: selecione WebSEAL.
    • Nome da instância: selecione a instância WebSEAL.
    • Arquivo de registro: nome do arquivo de registro de origem.
    • Opcional: Tag: a tag a ser adicionada às entradas de registro enviadas.
    • Unidade: todas as mensagens são enviadas com o código de unidade especificado (lista de códigos disponíveis).
    • Gravidade: a gravidade das entradas de registro enviadas.
      • Todas as mensagens serão enviadas com o nível de gravidade especificado.
  5. Clique em Salvar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
ação read_only_udm.security_result.action_details Extraídos do campo XML "/event/originator/action" quando o campo "description" contém "event".
app read_only_udm.target.application Extraídos usando o padrão grok do campo "message".
auth_details read_only_udm.security_result.detection_fields.value Extraídos do campo XML "/event/accessor/principal/@auth" quando o campo "description" contém "event". A chave está definida como "Auth".
authntype read_only_udm.security_result.detection_fields.value Extraídos do campo XML "/event/authntype" quando o campo "description" contém "event". A chave está definida como "Authntype".
dados read_only_udm.metadata.description Se o campo "data" não estiver vazio, o valor dele vai substituir o valor atual de "read_only_udm.metadata.description".
description read_only_udm.metadata.description Extraídos usando o padrão grok do campo "message". Se o campo "description" contiver "event", ele será analisado como XML para extrair outros campos.
event_id read_only_udm.metadata.product_log_id Extraídos do campo XML "/event/originator/event_id" quando o campo "description" contém "event".
nome do host read_only_udm.principal.hostname, read_only_udm.principal.asset.hostname Extraídos usando o padrão grok do campo "message".
id read_only_udm.metadata.product_log_id Extraídos usando o padrão grok do campo "message".
local read_only_udm.principal.location.name Extraídos do campo XML "/event/originator/location" quando o campo "description" contém "event".
resultado read_only_udm.security_result.detection_fields.value Extraídos do campo XML "/event/outcome" quando o campo "description" contém "event". A chave está definida como "Resultado".
outcome_reason read_only_udm.security_result.summary Extraídos do campo XML "/event/outcome/@reason" quando o campo "description" contém "event". Também é usado para determinar o valor de "read_only_udm.security_result.action": defina como "BLOCK" se "outcome_reason" contiver "fail" (sem distinção entre maiúsculas e minúsculas). Caso contrário, defina como "ALLOW".
outcome_status read_only_udm.security_result.detection_fields.value Extraídos do campo XML "/event/outcome/@status" quando o campo "description" contém "event". A chave está definida como "Status do resultado".
originator_blade read_only_udm.security_result.detection_fields.value Extraídos do campo XML "/event/originator/@blade" quando o campo "description" contém "event". A chave está definida como "Originator Blade".
originator_component read_only_udm.security_result.detection_fields.value Extraídos do campo XML "/event/originator/component" quando o campo "description" contém "event". A chave é definida como "Componente de origem".
originator_instance read_only_udm.security_result.detection_fields.value Extraídos do campo XML "/event/originator/@instance" quando o campo "description" contém "event". A chave está definida como "Originator Instance".
session_id read_only_udm.network.session_id Extraídos do campo XML "/event/accessor/session_id" quando o campo "description" contém "event".
target_url read_only_udm.target.url Extraídos do campo XML "/event/target/url" quando o campo "description" contém "event".
thread_id read_only_udm.security_result.detection_fields.value Extraídos usando o padrão grok do campo "message". A chave é definida como "ID da linha de execução".
timestamp read_only_udm.metadata.event_timestamp Extraídos usando o padrão grok do campo "message". Formatado usando o filtro "data" com base na presença e no formato do campo "fuso horário".
time_stamp read_only_udm.metadata.event_timestamp Extraídos do campo XML "/event/date" quando o campo "description" contém "event". Formatado usando o filtro "data".
timezone Usado em conjunto com o campo "carimbo de data/hora" para formatar o campo "read_only_udm.metadata.event_timestamp" usando o filtro "data".
url read_only_udm.target.url Extraídos usando o padrão grok do campo "message".
usuário read_only_udm.principal.user.userid Extraídos do campo XML "/event/accessor/principal" quando o campo "description" contém "event".
user_location read_only_udm.principal.ip, read_only_udm.principal.asset.ip Extraídos do campo XML "/event/accessor/user_location" quando o campo "description" contém "event". Se "user_location_type" contiver "ip" (sem distinção entre maiúsculas e minúsculas), ele será analisado como um endereço IP e mapeado para "read_only_udm.principal.ip" e "read_only_udm.principal.asset.ip".
user_location_type Usado para determinar se "user_location" precisa ser analisado como um endereço IP.
N/A read_only_udm.metadata.vendor_name Defina como "IBM_SECURITY_VERIFY".
N/A read_only_udm.metadata.product_name Defina como "IBM_SECURITY_VERIFY".
N/A read_only_udm.metadata.event_type Inicialmente definido como "STATUS_UPDATE". Mudado para "USER_LOGIN" se os campos "user" e "hostname" forem extraídos.
N/A read_only_udm.extensions.auth.type Defina como "SSO" se os campos "user" e "hostname" forem extraídos.
N/A read_only_udm.network.application_protocol Defina como "HTTP" se o campo "message" contiver "HttpServletRequest".
N/A read_only_udm.metadata.log_type Definido como "IBM_SECURITY_VERIFY", extraído dos metadados do registro.

Alterações

2024-05-13

  • O analisador foi atualizado para oferecer suporte a registros no formato XML.

2023-01-25

  • Parser recém-criado.