Collecter les journaux Sophos Capsule8

Compatible avec :

Ce document explique comment collecter les journaux Sophos Linux Sensor (anciennement Capsule8) à l'aide de Bindplane. Sophos Capsule8 offre une protection de l'exécution pour les charges de travail Linux, les conteneurs et les environnements Kubernetes. Il détecte les menaces au niveau du noyau à l'aide de la technologie eBPF et y répond. Le parseur extrait et structure d'abord les données de journaux au format JSON. Il mappe ensuite les champs extraits à leurs attributs correspondants dans le modèle de données unifié (UDM) de Chronicle, en se concentrant sur les métadonnées, les résultats de sécurité et les informations principales.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Windows 2016 ou version ultérieure, ou un hôte Linux avec systemd
  • Une machine Windows ou Linux supplémentaire, capable d'exécuter Python en continu
  • Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
  • Accès privilégié à la console d'administration Sophos Central
  • Sophos Linux Sensor (anciennement Capsule8) déployé sur vos systèmes Linux

Configurer Sophos Linux Sensor pour exporter les alertes vers Sophos Central

Avant de configurer l'intégration, vous devez d'abord configurer Sophos Linux Sensor pour qu'il envoie les données d'alerte à Sophos Central.

Conditions préalables à l'intégration de Sophos Central

  1. Sophos Linux Sensor version 5.5.2.22 ou ultérieure.
  2. L'une des licences suivantes :
    • Intercept X Advanced for Server avec XDR
    • Serveur Central Managed Detection and Response Essential
    • Serveur complet Central Managed Detection and Response
  3. L'URL MCS et l'ID de locataire de votre compte Sophos Central.
  4. Jeton d'API valide pour le dépôt de packages SLS.

Trouver l'URL de votre MCS

  1. Connectez-vous à Sophos Central.
  2. Cliquez sur le nom de votre compte> Paramètres d'assistance.
  3. Recherchez la ligne commençant par This account is located pour connaître la région géographique de votre compte Sophos Central.
  4. Utilisez le tableau suivant pour trouver votre URL MCS en fonction de votre région :

    Région URL MCS
    États-Unis (Oregon) mcs2-cloudstation-us-west-2.prod.hydra.sophos.com
    États-Unis (Ohio) mcs2-cloudstation-us-east-2.prod.hydra.sophos.com
    Irlande mcs2-cloudstation-eu-west-1.prod.hydra.sophos.com
    Allemagne mcs2-cloudstation-eu-central-1.prod.hydra.sophos.com
    Canada mcs2.stn100yul.ctr.sophos.com
    Australie mcs2.stn100syd.ctr.sophos.com
    Asie-Pacifique (Tokyo) mcs2.stn100hnd.ctr.sophos.com
    Amérique du Sud (São Paulo) mcs2.stn100gru.ctr.sophos.com

Si votre région ne figure pas dans le tableau, utilisez mcs2.stn100bom.ctr.sophos.com comme URL MCS.

Configurer la sortie des alertes du capteur Sophos pour Linux

  1. Ouvrez /etc/sophos/runtimedetections.yaml dans un éditeur de texte.
  2. Ajoutez les lignes suivantes en remplaçant les valeurs d'espace réservé par les informations Sophos Central réelles :

    send_labs_telemetry: true
    endpoint_telemetry_enabled: true
    cloud_meta: auto
    
    # Set your customer id:
    customer_id: "{tenant-id}"
    
    mcs:
      token: "{LINUX_REPO_API_KEY}"
      url: "{MCS_URL}"
      enabled: true
    
  3. Enregistrez les modifications et quittez.

  4. Redémarrez le capteur :

    systemctl restart sophoslinuxsensor
    

Facultatif : Configurez Sophos Linux Sensor pour envoyer des méta-événements au Data Lake

À partir de la version 5.11.0, SLS permet d'envoyer des données d'événement au Sophos Data Lake.

  1. Ouvrez /etc/sophos/runtimedetections.yaml dans un éditeur de texte.
  2. Ajoutez la configuration suivante :

    investigations:
      reporting_interval: 5s
      zeromq:
        topics:
        - process_events: running_processes_linux_events
          audit_user_msg: user_events_linux
      sinks:
      - backend: mcs
        name: "mcs"
        type: mcs
      flight_recorder:
        enabled: true
        tables:
        - name: "process_events"
          enabled: true
          rows: 1000
          filter:
          - match eventType == "PROCESS_EVENT_TYPE_EXEC"
          - match eventType == "BASELINE_TASK"
          - default ignore
        - name: "audit_user_msg"
          enabled: true
          rows: 1000
          filter:
          - ignore programName == "cron"
          - ignore processPid == 1
          - default match
    
  3. Enregistrez les modifications et quittez.

  4. Redémarrez le capteur :

    systemctl restart sophoslinuxsensor
    

Obtenir le fichier d'authentification d'ingestion Google SecOps

  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. 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

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

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

  1. Accédez au fichier de configuration :

    1. Trouvez 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.
    2. 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: 'SOPHOS_CAPSULE8'
        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 où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification de 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
    

Configurer l'accès à l'API Sophos Central

  1. Connectez-vous à Sophos Central Admin.
  2. Sélectionnez Paramètres généraux > Gestion des jetons d'API.
  3. Cliquez sur Ajouter un jeton pour en créer un.
  4. Saisissez un nom de jeton, puis cliquez sur Enregistrer. Le récapitulatif du jeton d'API s'affiche pour le jeton fourni.
  5. Dans la section Récapitulatif du jeton API, cliquez sur Copier pour copier l'URL et les en-têtes d'accès à l'API.

Installer Python sur une autre machine

  1. Ouvrez le navigateur Web et accédez au site Web Python.
  2. Cliquez sur Télécharger Python pour votre système d'exploitation.
  3. Installez Python :

    • Sous Windows :
      1. Lancez le programme d'installation.
      2. Cochez la case Add Python to PATH (Ajouter Python au PATH).
      3. Cliquez sur Installer maintenant.
    • Sous Mac :

      1. Python est peut-être déjà installé. Si ce n'est pas le cas, vous pouvez installer la dernière version à l'aide du terminal.
      2. Ouvrez Terminal et saisissez la commande suivante :

        python --version
        

Télécharger le script d'intégration Sophos

  1. Accédez à la page GitHub du dépôt GitHub d'intégration SIEM Sophos Central.
  2. Cliquez sur le bouton vert Code > Télécharger le fichier ZIP.
  3. Extrayez le fichier ZIP.

Configurer le script

  1. Ouvrez le fichier config.ini dans le répertoire où vous avez extrait l'archive ZIP.
  2. Modifiez le fichier de configuration :
    • Jeton d'API : saisissez la clé API copiée précédemment depuis Sophos Central.
    • Détails du serveur Syslog : saisissez les détails de votre serveur Syslog.
    • Hôte : saisissez l'adresse IP de l'agent BindPlane.
    • Port : saisissez le numéro de port de l'agent BindPlane.
    • Protocole : saisissez UDP (vous pouvez également utiliser TCP ou TLS selon votre configuration).
  3. Enregistrez le fichier.

Exécuter le script

  1. Accédez au dossier de script.

    • Sous Windows :

      1. Appuyez sur la touche Windows et saisissez cmd.
      2. Cliquez sur Invite de commandes.
      3. Accédez au dossier du script :
      cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
    • Sous macOS :

      1. Accédez à Applications > Utilitaires.
      2. Ouvrez l'application Terminal.
      3. Accédez au dossier du script :
      cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
  2. Exécutez le script :

    • Saisissez la commande suivante pour démarrer le script :

      python siem.py
      

Automatisez l'exécution continue du script sur Windows (à l'aide du Planificateur de tâches) :

  1. Ouvrez le Planificateur de tâches en saisissant Planificateur de tâches dans le menu Démarrer.
  2. Cliquez sur Créer une tâche.
  3. Dans l'onglet Général :
    • Nommez votre tâche (par exemple, Sophos AV Log Export).
  4. Dans l'onglet Déclencheurs :
    • Cliquez sur Nouveau et définissez la tâche sur Tous les jours ou Au démarrage (selon votre préférence).
  5. Dans l'onglet Actions :
    • Cliquez sur Nouveau, puis sélectionnez Démarrer un programme.
    • Recherchez l'exécutable python.exe (généralement situé dans C:/Python/XX/python.exe).
    • Dans le champ Ajouter des arguments, saisissez le chemin d'accès au script (par exemple, C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integrationsiem.py).
  6. Cliquez sur OK pour enregistrer la tâche.

Automatisez l'exécution continue du script sur Mac (à l'aide de tâches Cron) :

  1. Ouvrez le terminal.
  2. Saisissez crontab -e et appuyez sur Entrée.
  3. Ajoutez une ligne à la fin du fichier :

    * * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
    
  4. Cliquez sur Enregistrer et quittez l'éditeur.

Table de mappage UDM

Champ de journal Mappage UDM Logique
catégories read_only_udm.security_result.category_details Chaque élément du tableau des catégories est ajouté en tant que catégorie_details distinct.
commentaires read_only_udm.security_result.description Mappé directement à partir du champ "Commentaires".
confiance read_only_udm.security_result.severity_details Mappé directement à partir du champ de confiance.
description read_only_udm.security_result.summary Mappé directement à partir du champ de description.
incident_id read_only_udm.security_result.rule_id Directement mappé à partir du champ "incident_id".
traçabilité principal.process.parent_process... Le tableau de lignée est utilisé pour remplir une chaîne de processus parents, jusqu'à 15 niveaux de profondeur. Chaque élément du tableau de lignée représente un processus de la chaîne, l'index 0 étant le parent immédiat et les indices plus élevés représentant les ancêtres plus éloignés. Les champs "pid" et "name" de chaque élément de lignée sont mappés aux champs correspondants dans l'UDM.
location.container_id principal.labels.value Directement mappé à partir du champ location.container_id. La clé correspondante est définie sur "container_id".
location.container_labels.maintainer principal.labels.value Mappé directement à partir du champ "location.container_labels.maintainer". La clé correspondante est définie sur "maintainer" (responsable).
location.container_name principal.labels.value Directement mappé à partir du champ location.container_name. La clé correspondante est définie sur "container_name".
location.image_id principal.labels.value Mappé directement à partir du champ location.image_id. La clé correspondante est définie sur "image_id".
location.image_name principal.labels.value Directement mappé à partir du champ location.image_name. La clé correspondante est définie sur "image_name".
location.kubernetes_namespace principal.labels.value Directement mappé à partir du champ location.kubernetes_namespace. La clé correspondante est définie sur "kubernetes_namespace".
location.kubernetes_pod principal.labels.value Mappé directement à partir du champ "location.kubernetes_pod". La clé correspondante est définie sur "kubernetes_pod".
matched_rule read_only_udm.security_result.rule_name Mappé directement à partir du champ "matched_rule".
metadata.gcp_instance_hostname principal.hostname Directement mappé à partir du champ metadata.gcp_instance_hostname.
metadata.gcp_instance_zone principal.cloud.availability_zone La zone de disponibilité est extraite du champ metadata.gcp_instance_zone à l'aide d'une expression régulière.
metadata.gcp_project_id principal.cloud.project.name Mappé directement à partir du champ metadata.gcp_project_id.
metadata.gcp_project_numeric_id principal.cloud.project.id Mappé directement à partir du champ metadata.gcp_project_numeric_id.
metadata.network_interface_eth0_addr_0 principal.ip L'adresse IP est extraite du champ metadata.network_interface_eth0_addr_0 à l'aide d'une expression régulière.
metadata.network_interface_eth0_hardware_addr principal.mac Directement mappé à partir du champ metadata.network_interface_eth0_hardware_addr.
policy_type read_only_udm.metadata.product_event_type Mappé directement à partir du champ "policy_type".
process_info.args principal.labels.value Chaque élément du tableau process_info.args est ajouté en tant que libellé distinct. La clé est définie sur "process_info.arg[index]", où "index" correspond à la position de l'argument dans le tableau.
process_info.name principal.process.file.full_path Mappé directement à partir du champ process_info.name.
process_info.pid principal.process.pid Mappé directement à partir du champ process_info.pid.
process_info.ppid principal.process.parent_process.pid Mappé directement à partir du champ process_info.ppid.
priorité read_only_udm.security_result.severity Mappé directement à partir du champ de priorité, converti en majuscules.
timestamp read_only_udm.metadata.event_timestamp Mappé directement à partir du champ d'horodatage.
uuid read_only_udm.metadata.product_log_id Mappé directement à partir du champ "uuid".
N/A read_only_udm.metadata.log_type Définissez-le sur la valeur constante "SOPHOS_CAPSULE8".
N/A read_only_udm.metadata.event_type Définissez-le sur la valeur constante "SCAN_HOST".
N/A read_only_udm.metadata.vendor_name Définissez-le sur la valeur constante "Sophos".
N/A read_only_udm.metadata.product_name Définissez-le sur la valeur constante "Capsule8".

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