Recolha registos do Check Point Harmony
Este documento explica como carregar registos do Check Point Harmony Email and Collaboration (HEC) para o Google Security Operations através do Bindplane. Este código do analisador
extrai pares de chave-valor de mensagens syslog do Check Point Harmony e mapeia-os
para um modelo de dados unificado (UDM). Primeiro, 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
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Windows 2016 ou posterior, ou um anfitrião Linux com
systemd - Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
- Acesso privilegiado ao Check Point Harmony HEC (Infinity Portal)
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte 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 raiz ou sudo.
Execute o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
Para ver opções de instalação adicionais, consulte o guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
- Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml. Normalmente, encontra-se no diretório/etc/bindplane-agent/no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano,viou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
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 de cliente real. - Atualize
/path/to/ingestion-authentication-file.jsonpara o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agentPara reiniciar o agente Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog para o Check Point Harmony HEC
- Inicie sessão no Infinity Portal > IU Web do Harmony Email & Collaboration.
- Aceda a Definições > Monitorização > SIEM.
- Clique em Adicionar servidor SIEM.
- Indique os seguintes detalhes de configuração:
- Anfitrião: introduza o endereço IP do agente do Bindplane.
- Porta: introduza o número da porta do agente do Bindplane.
- Protocolo: selecione UDP.
- (Opcional) Token: introduza uma etiqueta opcional nos registos.
- Clique em Guardar.
Tabela de mapeamento do UDM
| Campo de registo | 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 de ação. | |
| 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 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 a chave = 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 email é extraído do campo src_user_name, se 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. |
| utilizador | principal.user.userid | Mapeado diretamente se src_user_name estiver vazio. |
| principal.user.email_addresses | O endereço de email é extraído do campo do utilizador, se existir e estiver no formato userid (email). |
|
| user_name | principal.user.email_addresses | Mapeado diretamente se o valor for um endereço de email válido. |
| user_sid | principal.user.windows_sid | Mapeado diretamente. |
| veredicto | 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 | Este campo está codificado como CHECKPOINT_HARMONY. |
|
| metadata.vendor_name | Este campo está codificado 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 noutros campos, como service e service_id. | |
| security_result.severity | Mapeado para BAIXO, MÉDIO, ELEVADO ou CRÍTICO com base no valor do campo de gravidade. | |
| metadata.event_type | Este campo está 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 da Google SecOps.