Coletar registros do Check Point Harmony
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 de mensagens 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 da 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 executando por trás de um proxy, as portas do firewall estarão abertas.
- Acesso privilegiado ao Check Point Harmony HEC (Infinity Portal)
Receber o arquivo de autenticação de ingestão do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- 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 do cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- 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 sistema operacional Windows ou Linux de acordo com as instruções a seguir.
Instalação do Windows
- Abra o Prompt de Comando ou o PowerShell como administrador.
Execute este comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de root ou sudo.
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
- Acesse o arquivo de configuração:
- 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. - Abra o arquivo usando um editor de texto (por exemplo,
nano,viou Bloco de Notas).
- Localize o arquivo
Edite o arquivo
config.yamlda 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: '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
<customer_id>pelo ID do cliente real. - Atualize
/path/to/ingestion-authentication-file.jsonpara 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 em Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agentPara 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 Syslog para o HEC do Check Point Harmony
- Faça login na interface da Web do Infinity Portal > Harmony Email & Collaboration.
- Acesse Configurações > Monitoramento > SIEM.
- Clique em Adicionar servidor SIEM.
- 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.
- Clique em Salvar.
Tabela de mapeamento da UDM
| Campo de registro | Mapeamento do 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". | |
| description | 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 for composto apenas por 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 a chave = 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. |
| veredicto | security_result.detection_fields.value | Mapeado diretamente com a chave = verdict. |
| version | 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 está 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 outros campos, como "service" e "service_id". | |
| security_result.severity | Mapeado como LOW, MEDIUM, HIGH ou CRITICAL com base no valor do campo "severity". | |
| metadata.event_type | Esse campo é 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. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.