Coletar registros CEF do Imperva

Compatível com:

Este documento explica como ingerir registros CEF da Imperva no Google Security Operations usando o Bindplane. O analisador extrai os registros no formato CEF das mensagens syslog, convertendo-os para o formato UDM. Ele processa vários formatos de registros, extrai pares de chave-valor do payload, realiza transformações e enriquecimentos de dados e mapeia os campos extraídos para os campos correspondentes do UDM, incluindo informações de rede, detalhes do usuário, geolocalização e resultados de segurança.

Antes de começar

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

  • Uma instância do Google SecOps
  • Um host Windows 2016 ou mais recente ou Linux com systemd
  • 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 Bindplane.
  • Acesso privilegiado ao console ou appliance de gerenciamento do Imperva

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 de forma segura 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

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
    

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
    

Outros recursos de instalação

Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:

    1. Localize o arquivo config.yaml. Normalmente, ele fica no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo config.yaml da seguinte forma:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'IMPERVA_CEF'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
    • Substitua <customer_id> pelo ID do cliente real.
    • Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber arquivo de autenticação de ingestão do Google SecOps.

Reinicie o agente do Bindplane para aplicar as mudanças

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

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o gateway WAF da Imperva (SecureSphere) para enviar CEF por syslog

  1. No console do MX, crie um conjunto de ações:

    • Navegue até Políticas > Conjuntos de ações.
    • Clique em Novo e dê um nome a ele (por exemplo, Google SecOps CEF).
  2. Adicione a interface de ação do syslog CEF:

    • Em Interfaces de ação disponíveis, abra Registro do sistema e adicione uma ou mais das seguintes opções, conforme necessário:
      • Registrar eventos de segurança no registro do sistema (syslog) usando o padrão CEF
      • Registrar eventos de segurança de rede no registro do sistema (syslog) usando o padrão CEF
      • Registrar eventos do sistema no registro do sistema (syslog) usando o padrão CEF
      • Registrar um evento de segurança personalizado no registro do sistema (syslog) usando o padrão CEF
  3. Configure os parâmetros da interface de ação:

    • Host syslog: insira o endereço IP do agente do Bindplane. Para usar uma porta não padrão, adicione :PORT (o padrão é 514 se você não especificar uma). Exemplo: 10.0.0.10:514.
    • Facilidade / Nível de registro: defina de acordo com os requisitos da política.
    • Mensagem: deixe os padrões do fornecedor para CEF, a menos que você tenha um mapeamento personalizado.
  4. Anexe o conjunto de ações às políticas:

    • Para eventos de Segurança / Segurança de rede: abra as políticas relevantes e defina Ação seguida como seu conjunto de ações.
    • Para Eventos do sistema: crie ou verifique uma política de Eventos do sistema e defina Ação seguida como seu conjunto de ações para que esses eventos também sejam enviados por CEF.
  5. Opcional: configure destinos específicos do gateway:

    • Se grupos de gateways diferentes precisarem enviar para servidores syslog diferentes, configure cada Grupo de gateways > Registrador externo e ative Usar configuração de gateway, se existir na política.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
act security_result.action Derivada. Se act for "allowed", "alert", começar com "REQ_PASSED" ou "REQ_CACHED", action será "ALLOW". Se act for "deny", "blocked", começar com "REQ_BLOCKED" ou "REQ_CHALLENGE", action será "BLOCK". Se act corresponder à regex (?i)REQ_BAD, action será "FAIL". Caso contrário, action será "UNKNOWN_ACTION". Em seguida, security_result.action é definido como o valor de action.
act security_result.action_details Derivada. Com base no valor de act, uma descrição detalhada é gerada. Exemplos: "REQ_CACHED_FRESH: a resposta foi retornada do cache do data center", "REQ_BLOCKED: a solicitação foi bloqueada".
app network.application_protocol Mapeado diretamente após a conversão para letras maiúsculas.
cs1 security_result.detection_fields.value Mapeado condicionalmente se cs1 não estiver vazio ou for "NA". security_result.detection_fields.key é definido como o valor de cs1Label.
cs1Label security_result.detection_fields.key Mapeado condicionalmente se cs1 não estiver vazio ou for "NA". security_result.detection_fields.value é definido como o valor de cs1.
cs2 security_result.detection_fields.value Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como o valor de cs2Label.
cs2Label security_result.detection_fields.key Mapeado condicionalmente se cs2 não estiver vazio. security_result.detection_fields.value é definido como o valor de cs2.
cs3 security_result.detection_fields.value Mapeado condicionalmente se não estiver vazio ou for "-". security_result.detection_fields.key é definido como o valor de cs3Label.
cs3Label security_result.detection_fields.key Mapeado condicionalmente se cs3 não estiver vazio ou for "-". security_result.detection_fields.value é definido como o valor de cs3.
cs4 security_result.detection_fields.value Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como o valor de cs4Label.
cs4Label security_result.detection_fields.key Mapeado condicionalmente se cs4 não estiver vazio. security_result.detection_fields.value é definido como o valor de cs4.
cs5 security_result.detection_fields.value Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como o valor de cs5Label.
cs5Label security_result.detection_fields.key Mapeado condicionalmente se cs5 não estiver vazio. security_result.detection_fields.value é definido como o valor de cs5.
cs6 security_result.detection_fields.value Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como o valor de cs6Label.
cs6Label security_result.detection_fields.key Mapeado condicionalmente se cs6 não estiver vazio. security_result.detection_fields.value é definido como o valor de cs6.
cs7 principal.location.region_latitude Mapeado condicionalmente se cs7Label for "latitude".
cs8 principal.location.region_longitude Mapeado condicionalmente se cs8Label for "longitude".
cn1 security_result.detection_fields.value Mapeado condicionalmente se não estiver vazio e cn1Label não estiver vazio. security_result.detection_fields.key é definido como o valor de cn1Label.
cn1Label security_result.detection_fields.key Mapeado condicionalmente se cn1 e cn1Label não estiverem vazios. security_result.detection_fields.value é definido como o valor de cn1.
fileType security_result.detection_fields.value Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como "fileType".
filePermission security_result.detection_fields.value Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como "filePermission".
request target.url Mapeado diretamente.
requestClientApplication network.http.user_agent Mapeado condicionalmente se não estiver vazio. Substitui o valor mapeado do campo user_agent extraído dos pares de chave-valor requestContext ou requestClientApplication no payload CEF.
requestMethod network.http.method Mapeado diretamente.
siteid security_result.detection_fields.value Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key está definido como "siteid".
sourceServiceName target.hostname Mapeado diretamente. Substitui o valor de dhost, se presente.
src principal.ip Mapeado diretamente.
start metadata.event_timestamp.seconds Extraído usando um padrão grok e convertido em um carimbo de data/hora. Usado como substituto para deviceReceiptTime se ele não estiver presente. Se deviceReceiptTime e start estiverem vazios, o carimbo de data/hora do registro será usado.
suid principal.user.userid Mapeado condicionalmente se não estiver vazio.
N/A metadata.event_type Fixado no código como "NETWORK_HTTP".
N/A metadata.log_type Mapeado diretamente do campo log_type de nível superior.
N/A metadata.product_event_type Mapeado de csv.event_id se não estiver vazio.
N/A metadata.product_name Codificado como "Firewall de aplicativos da Web".
N/A metadata.vendor_name Fixado no código como "Imperva".

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