Recopila registros de Check Point Harmony

Versión del analizador: 3.0

Compatible con:

En este documento, se explica cómo transferir registros de Check Point Harmony Email and Collaboration (HEC) a Google Security Operations con Bindplane. Este código del analizador extrae pares clave-valor de los mensajes de syslog de Check Point Harmony y los asigna a un modelo de datos unificado (UDM). Primero, normaliza el formato del mensaje y, luego, analiza y asigna campos de forma iterativa a categorías de UDM, como principal, target, network y security_result, lo que enriquece los datos para el análisis de seguridad.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Windows 2016 o versiones posteriores, o un host de Linux con systemd
  • Si se ejecuta detrás de un proxy, los puertos del firewall están abiertos
  • Acceso con privilegios a Check Point Harmony HEC (Infinity Portal)

Obtén credenciales de Google SecOps para el agente de Bindplane

Para autenticar el agente de Bindplane en Google SecOps, elige uno de los siguientes métodos:

  • Implementaciones nuevas: Usa la API de Chronicle (opción 1).
  • Implementaciones heredadas: Sigue usando el archivo de autenticación de transferencia (opción 2) hasta que se descontinúe la API de Ingestion el 20 de julio de 2027.
  1. Accede a la consola deGoogle Cloud y selecciona el proyecto de Google Cloud que está vinculado a tu instancia de Google SecOps.
  2. Ve a IAM y administración > Cuentas de servicio.
  3. Haga clic en Crear cuenta de servicio.
  4. Proporciona los siguientes detalles de configuración:
    • Nombre de la cuenta de servicio: Ingresa un nombre para la cuenta (por ejemplo, bindplane-ingest).
    • Descripción de la cuenta de servicio: Ingresa una descripción (por ejemplo, Bindplane agent log ingestion).
  5. Haz clic en Crear y continuar.
  6. En la sección Otorga a esta cuenta de servicio acceso al proyecto, haz clic en Seleccionar un rol y, luego, en Editor de Chronicle.
  7. Haz clic en Continuar y, luego, en Listo.
  8. Haz clic en la cuenta de servicio que creaste y, luego, ve a la pestaña Claves.
  9. Haz clic en Agregar clave > Crear clave nueva.
  10. Selecciona JSON y haz clic en Crear. El archivo de claves se descargará en tu computadora.
  11. Guarda el archivo de claves como ingestion-auth.json en el directorio del recopilador de Bindplane (/opt/observiq-otel-collector/ingestion-auth.json en Linux o C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json en Windows) o actualiza creds_file_path en config.yaml para que coincida con la ruta de acceso en la que lo guardas.
  12. Ve a IAM y administración > Configuración y copia el Número de proyecto. Lo necesitarás para la configuración del exportador.

Opción 2: Descarga el archivo de autenticación de transferencia (heredado)

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia.
  4. Guarda el archivo de forma segura en el sistema en el que se instalará el agente de Bindplane.

Obtén el ID de cliente de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instala el agente de Bindplane

Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.

Instalación en Windows

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el comando siguiente:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación en Linux

  1. Abre una terminal con privilegios de raíz o sudo.
  2. Ejecuta el comando siguiente:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalación adicionales

Para conocer opciones de instalación adicionales, consulta la guía de instalación.

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:
    • Ubica el archivo config.yaml. Por lo general, se encuentra en el directorio /opt/observiq-otel-collector/ en Linux o en el directorio de instalación en Windows.
    • Abre el archivo con un editor de texto (por ejemplo, nano, vi o el Bloc de notas).
  2. Edita el archivo config.yaml de la siguiente manera:

    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
    
    • Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
    • Reemplaza <LOCATION> por la región de tu instancia de Google SecOps (por ejemplo, us, europe o asia-southeast1). El exportador antepone chronicle.googleapis.com con este valor.
    • Reemplaza <PROJECT_NUMBER> por el número de proyecto de IAM y administración > Configuración.
    • Reemplaza <customer_id> por el ID de cliente real.
    • Actualiza /path/to/ingestion-authentication-file.json a la ruta de acceso en la que se guardó el archivo de claves de la cuenta de servicio (opción 1) en la sección Obtén credenciales de Google SecOps para el agente de Bindplane.

Exportador de la API de transferencia heredada

  • Si usas el archivo de autenticación de transferencia de la opción 2, reemplaza el bloque exporters por el siguiente. Establece creds_file_path en la ruta de acceso al archivo de autenticación de la transferencia y, si tu instancia se encuentra fuera de EE.UU., reemplaza malachiteingestion-pa.googleapis.com por tu extremo regional (por ejemplo, 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:
    

Reinicia el agente de Bindplane para aplicar los cambios.

  • Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar el agente de Bindplane en Windows, puedes usar la consola de Servicios o ingresar el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configura Syslog para Check Point Harmony HEC

  1. Accede a la IU web de Infinity Portal > Harmony Email & Collaboration.
  2. Ve a Configuración > Supervisión > SIEM.
  3. Haz clic en Agregar servidor SIEM.
  4. Proporciona los siguientes detalles de configuración:
    • Host: Ingresa la dirección IP del agente de Bindplane.
    • Puerto: Ingresa el número de puerto del agente de Bindplane.
    • Protocolo: Selecciona UDP.
    • Token (opcional): Ingresa una etiqueta opcional para los registros.
  5. Haz clic en Guardar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
acción security_result.action_details Asignación directa.
security_result.action Se asigna a ALLOW, BLOCK, ALLOW_WITH_MODIFICATION o QUARANTINE según el valor del campo de acción.
additional_info additional.fields.value.string_value Asignado directamente con la clave = additional_info.
analyzed_on security_result.detection_fields.value Asignado directamente con la clave = analyzed_on.
client_name additional.fields.value.string_value Asignado directamente con la clave = client_name.
client_version intermediary.platform_version Se asigna directamente.
confidence_level security_result.detection_fields.value Se asigna directamente con la clave = confidence_level.
security_result.confidence Se asigna a UNKNOWN_CONFIDENCE, LOW_CONFIDENCE, MEDIUM_CONFIDENCE o HIGH_CONFIDENCE según el valor del campo confidence_level.
descripción security_result.description Asignación directa.
DST target.ip Asignación directa.
dst_dns_name security_result.detection_fields.value Se asigna directamente con la clave = dst_dns_name.
dst_machine_name security_result.detection_fields.value Se asigna directamente con la clave = dst_machine_name.
target.asset.hostname Asignación directa.
target.hostname Se asigna directamente.
dst_user_dn security_result.detection_fields.value Se asigna directamente con la clave = dst_user_dn.
dst_user_name target.user.userid Se asigna directamente.
ep_rule_id security_result.rule_id Se asigna directamente si rule_uid está vacío.
errores security_result.summary Asignación directa.
event_type metadata.product_event_type Asignación directa.
file_md5 target.process.file.md5 Se asigna directamente si el valor es un hash MD5 válido y no todos los caracteres son ceros.
target.file.md5 Se asigna directamente si el valor es un hash MD5 válido y no todos los caracteres son ceros.
file_name target.process.file.full_path Asignación directa.
file_sha1 target.process.file.sha1 Se asigna directamente si el valor es un hash SHA-1 válido y no todos son ceros.
target.file.sha1 Se asigna directamente si el valor es un hash SHA-1 válido y no son todos ceros.
file_sha256 target.process.file.sha256 Se asigna directamente si el valor es un hash SHA256 válido y no todos los caracteres son ceros.
target.file.sha256 Se asigna directamente si el valor es un hash SHA256 válido y no todos los caracteres son ceros.
file_size target.file.size Asignación directa.
file_type target.file.file_type Se asigna a FILE_TYPE_ZIP, FILE_TYPE_DOS_EXE, FILE_TYPE_PDF o FILE_TYPE_XLSX según el valor del campo file_type.
flags additional.fields.value.string_value Se asigna directamente con la clave = flags.
fw_subproduct additional.fields.value.string_value Se asigna directamente con la clave = fw_subproduct si el producto está vacío.
metadata.product_name Se asigna directamente si el producto está vacío.
host_type security_result.detection_fields.value Se asigna directamente con la clave = host_type.
ifdir network.direction Se asigna directamente después de convertir a mayúsculas.
ifname security_result.detection_fields.value Asignado directamente con la clave = ifname.
installed_products security_result.detection_fields.value Asignado directamente con la clave = installed_products.
is_scanned security_result.detection_fields.value Asignado directamente con la clave = is_scanned.
layer_name security_result.detection_fields.value Se asigna directamente con la clave = layer_name.
security_result.rule_set_display_name Asignación directa.
layer_uuid security_result.detection_fields.value Asignado directamente con la clave = layer_uuid.
security_result.rule_set Se asigna directamente.
loguid metadata.product_log_id Se asigna directamente.
machine_guid principal.asset.attribute.labels.value Asignado directamente con la clave = machine_guid.
malware_action security_result.detection_fields.value Asignado directamente con la clave = malware_action.
malware_family security_result.detection_fields.value Se asigna directamente con la clave = malware_family.
media_authorized security_result.detection_fields.value Asignado directamente con la clave = media_authorized.
media_class_id security_result.detection_fields.value Se asigna directamente con la clave = media_class_id.
media_description security_result.detection_fields.value Asignado directamente con la clave = media_description.
media_encrypted security_result.detection_fields.value Se asigna directamente con la clave = media_encrypted.
media_manufacturer security_result.detection_fields.value Se asigna directamente con la clave = media_manufacturer.
media_type security_result.detection_fields.value Asignado directamente con la clave = media_type.
métodos security_result.detection_fields.value Asignado directamente con la clave = methods.
originsicname security_result.detection_fields.value Se asigna directamente con la clave = originsicname.
origin intermediary.ip Asignación directa.
os_version principal.asset.platform_software.platform_patch_level Se asigna directamente.
outzone security_result.detection_fields.value Asignado directamente con la clave = outzone.
parent_rule security_result.detection_fields.value Asignado directamente con la clave = parent_rule.
peer_gateway intermediary.ip Asignación directa.
policy_guid security_result.detection_fields.value Asignado directamente con la clave = policy_guid.
policy_name security_result.detection_fields.value Asignado directamente con la clave = policy_name.
policy_number security_result.detection_fields.value Asignado directamente con la clave = policy_number.
policy_type security_result.detection_fields.value Asignado directamente con la clave = policy_type.
producto additional.fields.value.string_value Se asigna directamente con la clave = product.
metadata.product_name Asignación directa.
product_family additional.fields.value.string_value Asignado directamente con la clave = product_family.
program_name additional.fields.value.string_value Se asigna directamente con la clave = program_name.
protection_name security_result.detection_fields.value Se asigna directamente con la clave = protection_name.
protection_type security_result.detection_fields.value Se asigna directamente con la clave = protection_type.
reading_data_access security_result.detection_fields.value Se asigna directamente con la clave = reading_data_access.
rule_action security_result.detection_fields.value Se asigna directamente con la clave = rule_action.
rule_name security_result.rule_name Se asigna directamente.
rule_uid security_result.rule_id Se asigna directamente si ep_rule_id está vacío.
s_port principal.port Se asigna directamente.
esquema security_result.detection_fields.value Asignado directamente con la clave = scheme.
sequencenum additional.fields.value.string_value Se asigna directamente con la clave = sequencenum.
servicio target.port Asignación directa.
service_id security_result.detection_fields.value Asignado directamente con la clave = service_id.
session_uid network.session_id Asignación directa.
src principal.ip Asignación directa.
src_dns_name security_result.detection_fields.value Se asigna directamente con la clave = src_dns_name.
src_machine_name security_result.detection_fields.value Se asigna directamente con la clave = src_machine_name.
principal.asset.hostname Asignación directa.
principal.hostname Se asigna directamente.
src_user_dn security_result.detection_fields.value Se asigna directamente con la clave = src_user_dn.
src_user_name principal.user.userid Se asigna directamente.
principal.user.email_addresses La dirección de correo electrónico se extrae del campo src_user_name si existe y tiene el formato userid (email).
te_verdict_determined_by security_result.detection_fields.value Se asigna directamente con la clave = te_verdict_determined_by.
timestamp metadata.event_timestamp Asignación directa.
trusted_domain security_result.detection_fields.value Se asigna directamente con la clave = trusted_domain.
usuario principal.user.userid Se asigna directamente si src_user_name está vacío.
principal.user.email_addresses La dirección de correo electrónico se extrae del campo del usuario si existe y tiene el formato userid (email).
user_name principal.user.email_addresses Se asigna directamente si el valor es una dirección de correo electrónico válida.
user_sid principal.user.windows_sid Se asigna directamente.
veredicto security_result.detection_fields.value Se asigna directamente con la clave = verdict.
versión additional.fields.value.string_value Se asigna directamente con la clave = version.
vpn_feature_name security_result.detection_fields.value Se asigna directamente con la clave = vpn_feature_name.
web_client_type security_result.detection_fields.value Se asigna directamente con la clave = 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 Se asigna a WINDOWS, MAC o LINUX según el valor del campo os_name.
network.ip_protocol Se asigna a TCP, UDP, ICMP, IP6IN4 o GRE según el valor del campo proto y otros campos, como service y service_id.
security_result.severity Se asigna a LOW, MEDIUM, HIGH o CRITICAL según el valor del campo de gravedad.
metadata.event_type Este campo se establece en NETWORK_CONNECTION si están presentes tanto la principal como el destino, en STATUS_UNCATEGORIZED si solo está presente la principal y en GENERIC_EVENT en los demás casos.
label event.idm.read_only_udm.network.email.to Asignado desde el registro de cambios
entityLink event.idm.read_only_udm.metadata.url_back_to_product Se asignó desde el registro de cambios
actionType event.idm.read_only_udm.security_result.action_details Se asignó desde el registro de cambios
eventId event.idm.read_only_udm.metadata.product_log_id Se asignó desde el registro de cambios
eventCreated event.idm.read_only_udm.metadata.event_timestamp Se asignó desde el registro de cambios
type event.idm.read_only_udm.metadata.product_event_type Se asignó desde el registro de cambios
act.createTime event.idm.read_only_udm.additional.fields Se asignó desde el registro de cambios
act.relatedEntityId event.idm.read_only_udm.additional.fields Se asignó desde el registro de cambios
customerId event.idm.read_only_udm.additional.fields Se asignó desde el registro de cambios
saas event.idm.read_only_udm.additional.fields Se asignó desde el registro de cambios
state event.idm.read_only_udm.additional.fields Se asignó desde el registro de cambios
entityId event.idm.read_only_udm.additional.fields Se asignó desde el registro de cambios
connectivity_state event.idm.read_only_udm.additional.fields Se asignó desde el registro de cambios
actions.actionType event.idm.read_only_udm.security_result.action Se asignó desde el registro de cambios
senderAddress event.idm.read_only_udm.network.email.from Se asignó desde el registro de cambios

Registro de cambios

Consulta el registro de cambios de este analizador

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.