Coletar registros do Check Point Harmony

Versão do analisador:3.0

Compatível com:

Neste documento, explicamos como ingerir registros do Check Point Harmony Email and Collaboration (HEC) no Google Security Operations usando o Bindplane. Esse código de analisador extrai pares de chave-valor das mensagens de syslog do Check Point Harmony e os mapeia para um modelo de dados unificado (UDM). Primeiro, ele normaliza o formato da mensagem e, em seguida, analisa e mapeia iterativamente os campos para categorias do UDM, como principal, target, network e security_result, enriquecendo os dados para análise de segurança.

Antes de começar

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

  • Instância do Google SecOps
  • Windows 2016 ou mais recente ou um host Linux com systemd
  • Se estiver em execução atrás de um proxy, as portas do firewall estão abertas
  • Acesso privilegiado ao HEC do Check Point Harmony (Infinity Portal)

Receber credenciais do Google SecOps para o agente do BindPlane

Para autenticar o agente do Bindplane no Google SecOps, escolha um dos seguintes métodos:

  • Novas implantações: use a API Chronicle (opção 1).
  • Implantações legadas: continue usando o arquivo de autenticação de ingestão (opção 2) até que a API Ingestion seja desativada em 20 de julho de 2027.
  1. Faça login no console doGoogle Cloud e selecione o projeto do Google Cloud vinculado à sua instância do Google SecOps.
  2. Acesse IAM e administrador > Contas de serviço.
  3. Clique em Criar conta de serviço.
  4. Informe os seguintes detalhes de configuração:
    • Nome da conta de serviço: insira um nome para a conta (por exemplo, bindplane-ingest).
    • Descrição da conta de serviço: insira uma descrição (por exemplo, Bindplane agent log ingestion).
  5. Clique em Criar e continuar.
  6. Na seção Conceder a essa conta de serviço acesso ao projeto, clique em Selecionar uma função e escolha Editor do Chronicle.
  7. Clique em Continuar e depois em Concluído.
  8. Clique na conta de serviço que você criou e acesse a guia Chaves.
  9. Clique em Adicionar chave > Criar nova chave.
  10. Selecione JSON e clique em Criar. O download do arquivo de chave é feito no seu computador.
  11. Salve o arquivo de chave como ingestion-auth.json no diretório do coletor do BindPlane (/opt/observiq-otel-collector/ingestion-auth.json no Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json no Windows) ou atualize creds_file_path em config.yaml para corresponder ao caminho em que você o salvou.
  12. Acesse IAM e administrador > Configurações e copie o Número do projeto. Você vai precisar dele para a configuração do exportador.

Opção 2: fazer o download do arquivo de autenticação de ingestão (legado)

  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 ingestão.
  4. 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 de cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instale o agente do Bindplane no 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 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

Para mais opções de instalação, consulte o guia de instalação.

Configurar o agente do 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 /opt/observiq-otel-collector/ no Linux ou no diretório de instalação no Windows.
    • 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:
            protocol: https
            # Region of your instance, for example us, europe, asia-southeast1
            location: <LOCATION>
            # Project number of the Google Cloud project linked to the instance
            project: '<PROJECT_NUMBER>'
            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: chronicle.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'CHECKPOINT_HARMONY'
            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 <LOCATION> pela região da sua instância do Google SecOps (por exemplo, us, europe ou asia-southeast1). O exportador prefixa chronicle.googleapis.com com esse valor.
    • Substitua <PROJECT_NUMBER> pelo número do projeto em IAM e administrador > Configurações.
    • Substitua <customer_id> pelo ID de cliente real.
    • Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de chave da conta de serviço (Opção 1) foi salvo na seção Receber credenciais do Google SecOps para o agente do Bindplane.

Exportador da API de ingestão legada

  • Se você usar o arquivo de autenticação de ingestão da Opção 2, substitua o bloco exporters pelo seguinte. Defina creds_file_path como o caminho para o arquivo de autenticação de ingestão e, se a instância estiver fora dos EUA, substitua malachiteingestion-pa.googleapis.com pelo endpoint regional (por exemplo, europe-malachiteingestion-pa.googleapis.com).

    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: 'CHECKPOINT_HARMONY'
            raw_log_field: body
            ingestion_labels:
    

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 em Windows, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o Syslog para o HEC do Check Point Harmony

  1. Faça login na interface da Web do Infinity Portal > Harmony Email & Collaboration.
  2. Acesse Configurações > Monitoramento > SIEM.
  3. Clique em Adicionar servidor SIEM.
  4. Informe os seguintes detalhes de configuração:
    • Host: insira o endereço IP do agente do Bindplane.
    • Porta: insira o número da porta do agente do Bindplane.
    • Protocolo: selecione UDP.
    • (Opcional) Token: insira uma tag opcional nos registros.
  5. Clique em Salvar.

Tabela de mapeamento de UDM

Campo de registro Mapeamento de UDM Lógica
ação security_result.action_details Mapeado diretamente.
security_result.action Mapeado para ALLOW, BLOCK, ALLOW_WITH_MODIFICATION ou QUARANTINE com base no valor do campo "action".
additional_info additional.fields.value.string_value Mapeado diretamente com a chave = additional_info.
analyzed_on security_result.detection_fields.value Mapeado diretamente com a chave = analyzed_on.
client_name additional.fields.value.string_value Mapeado diretamente com a chave = client_name.
client_version intermediary.platform_version Mapeado diretamente.
confidence_level security_result.detection_fields.value Mapeado diretamente com a chave = confidence_level.
security_result.confidence Mapeado para UNKNOWN_CONFIDENCE, LOW_CONFIDENCE, MEDIUM_CONFIDENCE ou HIGH_CONFIDENCE com base no valor do campo confidence_level.
descrição security_result.description Mapeado diretamente.
dst target.ip Mapeado diretamente.
dst_dns_name security_result.detection_fields.value Mapeado diretamente com a chave = dst_dns_name.
dst_machine_name security_result.detection_fields.value Mapeado diretamente com a chave = dst_machine_name.
target.asset.hostname Mapeado diretamente.
target.hostname Mapeado diretamente.
dst_user_dn security_result.detection_fields.value Mapeado diretamente com a chave = dst_user_dn.
dst_user_name target.user.userid Mapeado diretamente.
ep_rule_id security_result.rule_id Mapeado diretamente se "rule_uid" estiver vazio.
erros security_result.summary Mapeado diretamente.
event_type metadata.product_event_type Mapeado diretamente.
file_md5 target.process.file.md5 Mapeado diretamente se o valor for um hash MD5 válido e não tiver apenas zeros.
target.file.md5 Mapeado diretamente se o valor for um hash MD5 válido e não for composto apenas por zeros.
file_name target.process.file.full_path Mapeado diretamente.
file_sha1 target.process.file.sha1 Mapeado diretamente se o valor for um hash SHA-1 válido e não for composto apenas por zeros.
target.file.sha1 Mapeado diretamente se o valor for um hash SHA-1 válido e não for composto apenas por zeros.
file_sha256 target.process.file.sha256 Mapeado diretamente se o valor for um hash SHA256 válido e não for composto apenas por zeros.
target.file.sha256 Mapeado diretamente se o valor for um hash SHA256 válido e não for composto apenas por zeros.
file_size target.file.size Mapeado diretamente.
file_type target.file.file_type Mapeado para FILE_TYPE_ZIP, FILE_TYPE_DOS_EXE, FILE_TYPE_PDF ou FILE_TYPE_XLSX com base no valor do campo "file_type".
flags additional.fields.value.string_value Mapeado diretamente com a chave = flags.
fw_subproduct additional.fields.value.string_value Mapeado diretamente com key = fw_subproduct se o produto estiver vazio.
metadata.product_name Mapeado diretamente se o produto estiver vazio.
host_type security_result.detection_fields.value Mapeado diretamente com a chave = host_type.
ifdir network.direction Mapeado diretamente após a conversão para maiúsculas.
ifname security_result.detection_fields.value Mapeado diretamente com a chave = ifname.
installed_products security_result.detection_fields.value Mapeado diretamente com a chave = installed_products.
is_scanned security_result.detection_fields.value Mapeado diretamente com a chave = is_scanned.
layer_name security_result.detection_fields.value Mapeado diretamente com a chave = layer_name.
security_result.rule_set_display_name Mapeado diretamente.
layer_uuid security_result.detection_fields.value Mapeado diretamente com a chave = layer_uuid.
security_result.rule_set Mapeado diretamente.
loguid metadata.product_log_id Mapeado diretamente.
machine_guid principal.asset.attribute.labels.value Mapeado diretamente com a chave = machine_guid.
malware_action security_result.detection_fields.value Mapeado diretamente com a chave = malware_action.
malware_family security_result.detection_fields.value Mapeado diretamente com a chave = malware_family.
media_authorized security_result.detection_fields.value Mapeado diretamente com a chave = media_authorized.
media_class_id security_result.detection_fields.value Mapeado diretamente com a chave = media_class_id.
media_description security_result.detection_fields.value Mapeado diretamente com a chave = media_description.
media_encrypted security_result.detection_fields.value Mapeado diretamente com a chave = media_encrypted.
media_manufacturer security_result.detection_fields.value Mapeado diretamente com a chave = media_manufacturer.
media_type security_result.detection_fields.value Mapeado diretamente com a chave = media_type.
métodos security_result.detection_fields.value Mapeado diretamente com a chave = methods.
originsicname security_result.detection_fields.value Mapeado diretamente com a chave = originsicname.
origem intermediary.ip Mapeado diretamente.
os_version principal.asset.platform_software.platform_patch_level Mapeado diretamente.
outzone security_result.detection_fields.value Mapeado diretamente com a chave = outzone.
parent_rule security_result.detection_fields.value Mapeado diretamente com a chave = parent_rule.
peer_gateway intermediary.ip Mapeado diretamente.
policy_guid security_result.detection_fields.value Mapeado diretamente com a chave = policy_guid.
policy_name security_result.detection_fields.value Mapeado diretamente com a chave = policy_name.
policy_number security_result.detection_fields.value Mapeado diretamente com a chave = policy_number.
policy_type security_result.detection_fields.value Mapeado diretamente com a chave = policy_type.
produto additional.fields.value.string_value Mapeado diretamente com a chave = product.
metadata.product_name Mapeado diretamente.
product_family additional.fields.value.string_value Mapeado diretamente com a chave = product_family.
program_name additional.fields.value.string_value Mapeado diretamente com a chave = program_name.
protection_name security_result.detection_fields.value Mapeado diretamente com a chave = protection_name.
protection_type security_result.detection_fields.value Mapeado diretamente com a chave = protection_type.
reading_data_access security_result.detection_fields.value Mapeado diretamente com a chave = reading_data_access.
rule_action security_result.detection_fields.value Mapeado diretamente com a chave = rule_action.
rule_name security_result.rule_name Mapeado diretamente.
rule_uid security_result.rule_id Mapeado diretamente se "ep_rule_id" estiver vazio.
s_port principal.port Mapeado diretamente.
esquema security_result.detection_fields.value Mapeado diretamente com a chave = scheme.
sequencenum additional.fields.value.string_value Mapeado diretamente com key = sequencenum.
serviço target.port Mapeado diretamente.
service_id security_result.detection_fields.value Mapeado diretamente com a chave = service_id.
session_uid network.session_id Mapeado diretamente.
src principal.ip Mapeado diretamente.
src_dns_name security_result.detection_fields.value Mapeado diretamente com a chave = src_dns_name.
src_machine_name security_result.detection_fields.value Mapeado diretamente com a chave = src_machine_name.
principal.asset.hostname Mapeado diretamente.
principal.hostname Mapeado diretamente.
src_user_dn security_result.detection_fields.value Mapeado diretamente com a chave = src_user_dn.
src_user_name principal.user.userid Mapeado diretamente.
principal.user.email_addresses O endereço de e-mail é extraído do campo src_user_name, se ele existir e estiver no formato userid (email).
te_verdict_determined_by security_result.detection_fields.value Mapeado diretamente com a chave = te_verdict_determined_by.
timestamp metadata.event_timestamp Mapeado diretamente.
trusted_domain security_result.detection_fields.value Mapeado diretamente com a chave = trusted_domain.
usuário principal.user.userid Mapeado diretamente se src_user_name estiver vazio.
principal.user.email_addresses O endereço de e-mail é extraído do campo "Usuário", se ele existir e estiver no formato userid (email).
user_name principal.user.email_addresses Mapeado diretamente se o valor for um endereço de e-mail válido.
user_sid principal.user.windows_sid Mapeado diretamente.
veredito security_result.detection_fields.value Mapeado diretamente com a chave = verdict.
versão additional.fields.value.string_value Mapeado diretamente com a chave = version.
vpn_feature_name security_result.detection_fields.value Mapeado diretamente com a chave = vpn_feature_name.
web_client_type security_result.detection_fields.value Mapeado diretamente com a chave = web_client_type.
metadata.log_type Esse campo é fixado no código como CHECKPOINT_HARMONY.
metadata.vendor_name Esse campo está fixado no código como CHECKPOINT_HARMONY.
principal.asset.platform_software.platform Mapeado para WINDOWS, MAC ou LINUX com base no valor do campo "os_name".
network.ip_protocol Mapeado para TCP, UDP, ICMP, IP6IN4 ou GRE com base no valor do campo proto e em outros campos, como service e service_id.
security_result.severity Mapeado para LOW, MEDIUM, HIGH ou CRITICAL com base no valor do campo de gravidade.
metadata.event_type Esse campo será definido como NETWORK_CONNECTION se o principal e o destino estiverem presentes, STATUS_UNCATEGORIZED se apenas o principal estiver presente e GENERIC_EVENT caso contrário.
label event.idm.read_only_udm.network.email.to Mapeado do registro de mudanças
entityLink event.idm.read_only_udm.metadata.url_back_to_product Mapeado do registro de alterações
actionType event.idm.read_only_udm.security_result.action_details Mapeado do registro de alterações
eventId event.idm.read_only_udm.metadata.product_log_id Mapeado do registro de alterações
eventCreated event.idm.read_only_udm.metadata.event_timestamp Mapeado do registro de alterações
type event.idm.read_only_udm.metadata.product_event_type Mapeado do registro de alterações
act.createTime event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
act.relatedEntityId event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
customerId event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
saas event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
state event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
entityId event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
connectivity_state event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
actions.actionType event.idm.read_only_udm.security_result.action Mapeado do registro de alterações
senderAddress event.idm.read_only_udm.network.email.from Mapeado do registro de alterações

Registro de alterações

Confira o registro de alterações deste analisador

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