Collecter les journaux CEF ArcSight

Compatible avec :

Ce document explique comment ingérer des journaux ArcSight CEF (Common Event Format) dans Google Security Operations à l'aide de Bindplane. L'analyseur transforme les données brutes au format UDM (Unified Data Model) structuré. Il extrait les champs de l'en-tête et des extensions CEF, les mappe aux champs UDM et applique une logique spécifique pour catégoriser les événements tels que les connexions utilisateur, les connexions réseau et les accès aux ressources en fonction des informations extraites.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Instance Google SecOps
  • Un hôte 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.
  • ArcSight SmartConnector 8.4 (ou version ultérieure) installé sur un hôte ayant accès au réseau de l'agent Bindplane
  • Accès privilégié au portail OpenText

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel 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 de 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 fenêtres

  1. Ouvrez l'invite de commandes 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 de Linux

  1. Ouvrez un terminal avec les droits 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 plus d'options d'installation, consultez le guide d'installation.

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

  1. Accédez au fichier de configuration :
    • Recherchez le fichier config.yaml. En règle générale, il se trouve dans le répertoire /etc/bindplane-agent/ 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 le 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:
            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: 'ARCSIGHT_CEF'
            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 <customer_id> par le numéro client réel.
    • Mettez à jour /path/to/ingestion-authentication-file.json avec le chemin d'accès à l'emplacement où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.

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
    

Télécharger ArcSight SmartConnector

  1. Connectez-vous au portail d'assistance OpenText.
  2. Recherchez et téléchargez le dernier ArcSight SmartConnector pour Linux.
  3. Exemple de nom de fichier : ArcSight-Connector-Linux64-8.4.0.8499.0.bin.

Installer ArcSight SmartConnector

  1. Importez le fichier .bin sur le serveur SmartConnector :

    scp ArcSight-Connector-Linux64-8.4.0.8499.0.bin user@your-smartconnector-host:/tmp
    
  2. Connectez-vous au serveur SmartConnector à l'aide de SSH et exécutez la commande suivante :

    cd /tmp
    chmod +x ArcSight-Connector-Linux64-8.4.0.8499.0.bin
    ./ArcSight-Connector-Linux64-8.4.0.8499.0.bin
    
  3. Suivez le programme d'installation interactif :

    • Sélectionnez le répertoire d'installation (par exemple, /opt/arcsight/connectors/current).
    • Acceptez la licence.
    • Sélectionnez Installer le connecteur lorsque vous y êtes invité.

Configurer ArcSight SmartConnector pour envoyer le format CEF à Syslog

  1. Dans l'hôte SmartConnector, lancez l'assistant de destination :

    cd /opt/arcsight/connectors/current/bin
    ./arcsight connectors
    
  2. Dans l'assistant, procédez comme suit :

    • Sélectionnez Ajouter une destination.
    • Sélectionnez CEF Syslog.
  3. Fournissez les informations de configuration suivantes :

    • Hôte/Adresse IP : saisissez l'adresse IP de l'agent Bindplane.
    • Port : saisissez le numéro de port de votre agent Bindplane.
    • Protocole : sélectionnez UDP.
  4. Terminez la configuration et redémarrez le connecteur :

    ./arcsight agents
    
  5. Vérifiez la connectivité (par exemple, recherchez Successfully connected to syslog: X.X.X.X:514).

    tail -f /opt/arcsight/connectors/current/logs/agent.log
    

Table de mappage UDM

Champ du journal Mappage UDM Logique
agir security_result.action_details Mappé directement à partir du champ act.
agt principal.ip Mappé directement à partir du champ agt.
agt principal.asset.ip Mappé directement à partir du champ agt.
application network.application_protocol Mappé directement à partir du champ app.
art metadata.event_timestamp.seconds Mappé directement à partir du champ art.
cs2 additional.fields.value.string_value Directement mappé à partir du champ cs2 lorsque cs2Label est défini sur EventlogCategory.
cs2Label additional.fields.key Mappé directement à partir du champ cs2Label lorsque sa valeur est EventlogCategory.
cs3 additional.fields.value.string_value Directement mappé à partir du champ cs3 lorsque cs3Label est défini sur Process ID.
cs3Label additional.fields.key Mappé directement à partir du champ cs3Label lorsque sa valeur est Process ID.
cs5 additional.fields.value.string_value Directement mappé à partir du champ cs5 lorsque cs5Label est défini sur Authentication Package Name.
cs5Label additional.fields.key Mappé directement à partir du champ cs5Label lorsque sa valeur est Authentication Package Name.
cs6 additional.fields.value.string_value Directement mappé à partir du champ cs6 lorsque cs6Label est défini sur Logon GUID.
cs6Label additional.fields.key Mappé directement à partir du champ cs6Label lorsque sa valeur est Logon GUID.
dhost about.hostname Mappé directement à partir du champ dhost.
dhost target.hostname Mappé directement à partir du champ dhost.
dntdom about.administrative_domain Mappé directement à partir du champ dntdom.
dntdom target.administrative_domain Mappé directement à partir du champ dntdom.
dproc about.process.command_line Mappé directement à partir du champ dproc.
dproc target.process.command_line Mappé directement à partir du champ dproc.
dst principal.ip Mappé directement à partir du champ dst.
dst principal.asset.ip Mappé directement à partir du champ dst.
dst target.ip Mappé directement à partir du champ dst.
duid target.user.userid Mappé directement à partir du champ duid.
duser target.user.user_display_name Mappé directement à partir du champ duser.
dvc about.ip Mappé directement à partir du champ dvc.
dvchost about.hostname Mappé directement à partir du champ dvchost.
eventId additional.fields.value.string_value Mappé directement à partir du champ eventId.
externalId metadata.product_log_id Mappé directement à partir du champ externalId.
fname additional.fields.value.string_value Mappé directement à partir du champ fname.
Message metadata.description Mappé directement à partir du champ msg.
proto network.ip_protocol Mappé directement à partir du champ proto. Traduit les noms de protocoles en leurs constantes respectives (par exemple, tcp à TCP).
rt metadata.event_timestamp.seconds Mappé directement à partir du champ rt.
shost about.hostname Mappé directement à partir du champ shost.
shost principal.hostname Mappé directement à partir du champ shost.
src principal.ip Mappé directement à partir du champ src.
src principal.asset.ip Mappé directement à partir du champ src.
src target.ip Mappé directement à partir du champ src.
sproc principal.process.command_line Mappé directement à partir du champ sproc.
spt principal.port Mappé directement à partir du champ spt.
spt target.port Mappé directement à partir du champ spt.
additional.EventRecordID additional.fields.value.string_value Mappé directement à partir du champ ad.EventRecordID.
additional.ThreadID additional.fields.value.string_value Mappé directement à partir du champ ad.ThreadID.
additional.Opcode additional.fields.value.string_value Mappé directement à partir du champ ad.Opcode.
additional.ProcessID additional.fields.value.string_value Mappé directement à partir du champ ad.ProcessID.
additional.TargetDomainName additional.fields.value.string_value Mappé directement à partir du champ ad.TargetDomainName.
additional.Version additional.fields.value.string_value Mappé directement à partir du champ ad.Version.
deviceExternalId about.asset.hardware.serial_number Mappé directement à partir du champ deviceExternalId.
deviceInboundInterface additional.fields.value.string_value Mappé directement à partir du champ deviceInboundInterface.
deviceOutboundInterface additional.fields.value.string_value Mappé directement à partir du champ deviceOutboundInterface.
PanOSConfigVersion security_result.detection_fields.value Mappé directement à partir du champ PanOSConfigVersion.
PanOSContentVersion security_result.detection_fields.value Mappé directement à partir du champ PanOSContentVersion.
PanOSDGHierarchyLevel1 security_result.detection_fields.value Mappé directement à partir du champ PanOSDGHierarchyLevel1.
PanOSDestinationLocation target.location.country_or_region Mappé directement à partir du champ PanOSDestinationLocation.
PanOSRuleUUID metadata.product_log_id Mappé directement à partir du champ PanOSRuleUUID.
PanOSThreatCategory security_result.category_details Mappé directement à partir du champ PanOSThreatCategory.
PanOSThreatID security_result.threat_id Mappé directement à partir du champ PanOSThreatID.
about.asset.asset_id Généré en concaténant Palo Alto Networks., le nom du fournisseur (LF) et le champ deviceExternalId.
extensions.auth.type Définie sur AUTHTYPE_UNSPECIFIED si le champ event_name contient logged on.
metadata.description Si le champ description contient by suivi d'une adresse IP, l'adresse IP est extraite et mappée sur principal.ip et principal.asset.ip.
metadata.event_type Déterminé en fonction d'une série de vérifications conditionnelles sur différents champs, y compris event_name, principal_*, target_* et device_event_class_id. La logique détermine le type d'événement le plus approprié en fonction des informations disponibles.
metadata.log_type Variable définie sur ARCSIGHT_CEF.
metadata.product_event_type Généré en concaténant \[, the device_event_class_id field, \] - et le champ name.
metadata.product_name Définie sur NGFW si le champ product_name est LF.
principal.asset.ip Si le champ description contient by suivi d'une adresse IP, l'adresse IP est extraite et mappée sur principal.ip et principal.asset.ip.
principal.ip Si le champ description contient by suivi d'une adresse IP, l'adresse IP est extraite et mappée sur principal.ip et principal.asset.ip.
security_result.action Définissez sur ALLOW si le champ act est alert, sinon définissez sur BLOCK.
security_result.severity Définissez sur HIGH si le champ sev est supérieur ou égal à 7, sinon définissez sur LOW.

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