Collecter les journaux Check Point Harmony

Version de l'analyseur : 3.0

Compatible avec :

Ce document explique comment ingérer les journaux Check Point Harmony Email and Collaboration (HEC) dans Google Security Operations à l'aide de Bindplane. Ce code d'analyseur extrait les paires clé-valeur des messages syslog Check Point Harmony et les mappe à un modèle de données unifié (UDM). Il normalise d'abord le format du message, puis analyse et mappe de manière itérative les champs aux catégories UDM telles que principal, target, network et security_result, en enrichissant les données pour l'analyse de sécurité.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Instance Google SecOps
  • Windows 2016 ou version ultérieure, ou un hôte Linux avec systemd
  • Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
  • Accès privilégié à Check Point Harmony HEC (Infinity Portal)

Obtenir des identifiants Google SecOps pour l'agent BindPlane

Pour authentifier l'agent Bindplane auprès de Google SecOps, choisissez l'une des méthodes suivantes :

  • Nouveaux déploiements : utilisez l'API Chronicle (option 1).
  • Déploiements existants : continuez à utiliser le fichier d'authentification pour l'ingestion (option 2) jusqu'à l'arrêt de l'API Ingestion le 20 juillet 2027.
  1. Connectez-vous à la consoleGoogle Cloud et sélectionnez le projet Google Cloud associé à votre instance Google SecOps.
  2. Accédez à IAM et administration > Comptes de service.
  3. Cliquez sur Créer un compte de service.
  4. Fournissez les informations de configuration suivantes :
    • Nom du compte de service : saisissez un nom pour le compte (par exemple, bindplane-ingest).
    • Description du compte de service : saisissez une description (par exemple, Bindplane agent log ingestion).
  5. Cliquez sur Créer et continuer.
  6. Dans la section Autoriser ce compte de service à accéder au projet, cliquez sur Sélectionner un rôle, puis sélectionnez Éditeur Chronicle.
  7. Cliquez sur Continue (Continuer), puis sur Done (OK).
  8. Cliquez sur le compte de service que vous avez créé, puis accédez à l'onglet Clés.
  9. Cliquez sur Ajouter une clé > Créer une clé.
  10. Sélectionnez JSON, puis cliquez sur Créer. Le fichier de clé est téléchargé sur votre ordinateur.
  11. Enregistrez le fichier de clé sous le nom ingestion-auth.json dans le répertoire du collecteur BindPlane (/opt/observiq-otel-collector/ingestion-auth.json sous Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json sous Windows), ou mettez à jour creds_file_path dans config.yaml pour qu'il corresponde au chemin d'accès où vous l'enregistrez.
  12. Accédez à IAM et administration > Paramètres, puis copiez le numéro du projet. Vous en aurez besoin pour la configuration de l'exportateur.

Option 2 : Télécharger le fichier d'authentification d'ingestion (ancien)

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion.
  4. Enregistrez le fichier de manière sécurisée sur le système sur lequel l'agent Bindplane sera installé.

Obtenir l'ID client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM > Profil.
  3. Copiez et enregistrez le numéro client dans la section Informations sur l'organisation.

Installer l'agent BindPlane

Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

Installation de Windows

  1. Ouvrez l'invite de commande ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

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

Installation sous Linux

  1. Ouvrez un terminal avec des privilèges root ou sudo.
  2. Exécutez la commande suivante :

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

Ressources d'installation supplémentaires

Pour connaître les autres options d'installation, consultez le guide d'installation.

Configurer l'agent Bindplane pour ingérer les journaux Syslog et les envoyer à Google SecOps

  1. Accédez au fichier de configuration :
    • Trouvez le fichier config.yaml. En général, il se trouve dans le répertoire /opt/observiq-otel-collector/ sous Linux ou dans le répertoire d'installation sous Windows.
    • Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple, nano, vi ou Bloc-notes).
  2. Modifiez le fichier config.yaml comme suit :

    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
    
    • Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
    • Remplacez <LOCATION> par la région de votre instance Google SecOps (par exemple, us, europe ou asia-southeast1). L'exportateur préfixe chronicle.googleapis.com avec cette valeur.
    • Remplacez <PROJECT_NUMBER> par le numéro de projet indiqué dans IAM et administration > Paramètres.
    • Remplacez <customer_id> par le numéro client réel.
    • Remplacez /path/to/ingestion-authentication-file.json par le chemin d'accès où le fichier de clé du compte de service (option 1) a été enregistré dans la section Obtenir les identifiants Google SecOps pour l'agent BindPlane.

Ancien exportateur d'API d'ingestion

  • Si vous utilisez le fichier d'authentification d'ingestion de l'option 2, remplacez le bloc exporters par le code suivant. Définissez creds_file_path sur le chemin d'accès au fichier d'authentification de l'ingestion. Si votre instance se trouve en dehors des États-Unis, remplacez malachiteingestion-pa.googleapis.com par votre point de terminaison régional (par exemple, 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:
    

Redémarrez l'agent Bindplane pour appliquer les modifications.

  • Pour redémarrer l'agent BindPlane sous Linux, exécutez la commande suivante :

    sudo systemctl restart bindplane-agent
    
  • Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurer Syslog pour Check Point Harmony HEC

  1. Connectez-vous à l'interface utilisateur Web Infinity Portal > Harmony Email & Collaboration.
  2. Accédez à Paramètres > Surveillance > SIEM.
  3. Cliquez sur Add SIEM Server (Ajouter un serveur SIEM).
  4. Fournissez les informations de configuration suivantes :
    • Hôte : saisissez l'adresse IP de l'agent BindPlane.
    • Port : saisissez le numéro de port de l'agent BindPlane.
    • Protocole : sélectionnez UDP.
    • (Facultatif) Jeton : saisissez une balise facultative pour les journaux.
  5. Cliquez sur Enregistrer.

Table de mappage UDM

Champ de journal Mappage UDM Logique
action security_result.action_details Mappage direct.
security_result.action Mappé sur ALLOW, BLOCK, ALLOW_WITH_MODIFICATION ou QUARANTINE en fonction de la valeur du champ "action".
additional_info additional.fields.value.string_value Mappé directement avec la clé = additional_info.
analyzed_on security_result.detection_fields.value Directement associé à la clé = analyzed_on.
client_name additional.fields.value.string_value Mappé directement avec la clé = client_name.
client_version intermediary.platform_version Mappage direct.
confidence_level security_result.detection_fields.value Mappé directement avec la clé = confidence_level.
security_result.confidence Mappé sur UNKNOWN_CONFIDENCE, LOW_CONFIDENCE, MEDIUM_CONFIDENCE ou HIGH_CONFIDENCE en fonction de la valeur du champ confidence_level.
description security_result.description Mappé directement.
dst target.ip Mappé directement.
dst_dns_name security_result.detection_fields.value Mappé directement avec la clé = dst_dns_name.
dst_machine_name security_result.detection_fields.value Mappé directement avec la clé = dst_machine_name.
target.asset.hostname Mappage direct.
target.hostname Mappage direct.
dst_user_dn security_result.detection_fields.value Mappé directement avec la clé = dst_user_dn.
dst_user_name target.user.userid Mappé directement.
ep_rule_id security_result.rule_id Mappé directement si rule_uid est vide.
erreurs security_result.summary Mappé directement.
event_type metadata.product_event_type Mappé directement.
file_md5 target.process.file.md5 Mappé directement si la valeur est un hachage MD5 valide et ne contient pas que des zéros.
target.file.md5 Mappé directement si la valeur est un hachage MD5 valide et ne contient pas que des zéros.
file_name target.process.file.full_path Mappage direct.
file_sha1 target.process.file.sha1 Mappé directement si la valeur est un hachage SHA-1 valide et ne contient pas que des zéros.
target.file.sha1 Mappé directement si la valeur est un hachage SHA-1 valide et ne contient pas que des zéros.
file_sha256 target.process.file.sha256 Mappé directement si la valeur est un hachage SHA256 valide et ne contient pas que des zéros.
target.file.sha256 Mappé directement si la valeur est un hachage SHA256 valide et ne contient pas que des zéros.
file_size target.file.size Mappé directement.
file_type target.file.file_type Mappé sur FILE_TYPE_ZIP, FILE_TYPE_DOS_EXE, FILE_TYPE_PDF ou FILE_TYPE_XLSX en fonction de la valeur du champ file_type.
flags additional.fields.value.string_value Directement associé à la clé = flags.
fw_subproduct additional.fields.value.string_value Mappé directement avec la clé = fw_subproduct si le produit est vide.
metadata.product_name Mappé directement si le produit est vide.
host_type security_result.detection_fields.value Mappé directement avec la clé = host_type.
ifdir network.direction Mappé directement après la conversion en majuscules.
ifname security_result.detection_fields.value Mappé directement avec la clé = ifname.
installed_products security_result.detection_fields.value Directement associé à la clé = installed_products.
is_scanned security_result.detection_fields.value Directement associé à la clé = is_scanned.
layer_name security_result.detection_fields.value Mappé directement avec la clé = layer_name.
security_result.rule_set_display_name Mappage direct.
layer_uuid security_result.detection_fields.value Directement associé à la clé = layer_uuid.
security_result.rule_set Mappage direct.
loguid metadata.product_log_id Mappé directement.
machine_guid principal.asset.attribute.labels.value Mappé directement avec la clé = machine_guid.
malware_action security_result.detection_fields.value Directement associé à la clé = malware_action.
malware_family security_result.detection_fields.value Mappé directement avec la clé = malware_family.
media_authorized security_result.detection_fields.value Directement associé à la clé = media_authorized.
media_class_id security_result.detection_fields.value Mappé directement avec la clé = media_class_id.
media_description security_result.detection_fields.value Directement associé à la clé = media_description.
media_encrypted security_result.detection_fields.value Mappé directement avec la clé = media_encrypted.
media_manufacturer security_result.detection_fields.value Mappé directement avec la clé = media_manufacturer.
media_type security_result.detection_fields.value Directement associé à la clé = media_type.
méthodes security_result.detection_fields.value Directement associé à la clé = methods.
originsicname security_result.detection_fields.value Mappé directement avec la clé = originsicname.
origin intermediary.ip Mappage direct.
os_version principal.asset.platform_software.platform_patch_level Mappage direct.
outzone security_result.detection_fields.value Directement associé à la clé = outzone.
parent_rule security_result.detection_fields.value Directement associé à la clé = parent_rule.
peer_gateway intermediary.ip Mappage direct.
policy_guid security_result.detection_fields.value Mappé directement avec la clé = policy_guid.
policy_name security_result.detection_fields.value Mappé directement avec la clé = policy_name.
policy_number security_result.detection_fields.value Mappé directement avec la clé = policy_number.
policy_type security_result.detection_fields.value Mappé directement avec la clé = policy_type.
produit additional.fields.value.string_value Mappé directement avec la clé = product.
metadata.product_name Mappage direct.
product_family additional.fields.value.string_value Mappé directement avec la clé = product_family.
program_name additional.fields.value.string_value Mappé directement avec la clé = program_name.
protection_name security_result.detection_fields.value Mappé directement avec la clé = protection_name.
protection_type security_result.detection_fields.value Mappé directement avec la clé = protection_type.
reading_data_access security_result.detection_fields.value Mappé directement avec la clé = reading_data_access.
rule_action security_result.detection_fields.value Mappé directement avec la clé = rule_action.
rule_name security_result.rule_name Mappage direct.
rule_uid security_result.rule_id Mappé directement si ep_rule_id est vide.
s_port principal.port Mappé directement.
scheme security_result.detection_fields.value Mappé directement avec la clé = scheme.
sequencenum additional.fields.value.string_value Mappé directement avec la clé = sequencenum.
service target.port Mappage direct.
service_id security_result.detection_fields.value Mappé directement avec la clé = service_id.
session_uid network.session_id Mappage direct.
src principal.ip Mappé directement.
src_dns_name security_result.detection_fields.value Mappé directement avec la clé = src_dns_name.
src_machine_name security_result.detection_fields.value Mappé directement avec la clé = src_machine_name.
principal.asset.hostname Mappage direct.
principal.hostname Mappage direct.
src_user_dn security_result.detection_fields.value Directement associé à la clé = src_user_dn.
src_user_name principal.user.userid Mappé directement.
principal.user.email_addresses L'adresse e-mail est extraite du champ src_user_name si elle existe et est au format userid (email).
te_verdict_determined_by security_result.detection_fields.value Directement associé à la clé = te_verdict_determined_by.
code temporel metadata.event_timestamp Mappage direct.
trusted_domain security_result.detection_fields.value Directement associé à la clé = trusted_domain.
utilisateur principal.user.userid Mappé directement si src_user_name est vide.
principal.user.email_addresses L'adresse e-mail est extraite du champ "Utilisateur" si elle existe et est au format userid (email).
user_name principal.user.email_addresses Mappé directement si la valeur est une adresse e-mail valide.
user_sid principal.user.windows_sid Mappage direct.
verdict security_result.detection_fields.value Mappé directement avec la clé = verdict.
version additional.fields.value.string_value Mappé directement avec la clé = version.
vpn_feature_name security_result.detection_fields.value Directement associé à la clé = vpn_feature_name.
web_client_type security_result.detection_fields.value Mappé directement avec la clé = web_client_type.
metadata.log_type Ce champ est codé en dur sur CHECKPOINT_HARMONY.
metadata.vendor_name Ce champ est codé en dur sur CHECKPOINT_HARMONY.
principal.asset.platform_software.platform Mappé sur WINDOWS, MAC ou LINUX en fonction de la valeur du champ os_name.
network.ip_protocol Mappé sur TCP, UDP, ICMP, IP6IN4 ou GRE en fonction de la valeur du champ "proto" et d'autres champs tels que "service" et "service_id".
security_result.severity Mappé sur LOW, MEDIUM, HIGH ou CRITICAL en fonction de la valeur du champ de gravité.
metadata.event_type Ce champ est défini sur NETWORK_CONNECTION si le compte principal et la cible sont présents, sur STATUS_UNCATEGORIZED si seul le compte principal est présent et sur GENERIC_EVENT dans les autres cas.
label event.idm.read_only_udm.network.email.to Mappé à partir du journal des modifications
entityLink event.idm.read_only_udm.metadata.url_back_to_product Mappé à partir du journal des modifications
actionType event.idm.read_only_udm.security_result.action_details Mappé à partir du journal des modifications
eventId event.idm.read_only_udm.metadata.product_log_id Mappé à partir du journal des modifications
eventCreated event.idm.read_only_udm.metadata.event_timestamp Mappé à partir du journal des modifications
type event.idm.read_only_udm.metadata.product_event_type Mappé à partir du journal des modifications
act.createTime event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
act.relatedEntityId event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
customerId event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
saas event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
state event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
entityId event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
connectivity_state event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
actions.actionType event.idm.read_only_udm.security_result.action Mappé à partir du journal des modifications
senderAddress event.idm.read_only_udm.network.email.from Mappé à partir du journal des modifications

Journal des modifications

Afficher le journal des modifications de cet analyseur

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.