Collecter les journaux Sophos Central

Compatible avec:

Ce document explique comment collecter les journaux Sophos Central à l'aide de Bindplane. L'analyseur transforme les journaux JSON en modèle de données unifié (UDM). Il extrait des champs à partir de structures JSON imbriquées, les met en correspondance avec des champs UDM et effectue une catégorisation des événements en fonction du champ type, enrichissant les données avec des détails et des actions spécifiques pour différents types d'événements Sophos Central.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google Security Operations.
  • Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec systemd.
  • Assurez-vous de disposer d'une machine Windows ou Linux supplémentaire, capable d'exécuter Python en continu.
  • Si vous exécutez l'application derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
  • Assurez-vous de disposer d'un accès privilégié au pare-feu Sophos XG.

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 le numéro client Google SecOps

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

Installer l'agent Bindplane

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 de Linux

  1. Ouvrez un terminal avec des 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
    

Autres ressources d'installation

Configurer l'agent Bindplane pour qu'il ingère les journaux Syslog et les envoie à Google SecOps

  1. Accédez au fichier de configuration:

    1. 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.
    2. Ouvrez le fichier à l'aide d'un éditeur de texte (nano, vi ou Bloc-notes, par exemple).
  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: '/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
            ingestion_labels:
                log_type: SYSLOG
                namespace: sophos_central
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Remplacez le port et l'adresse IP dans votre infrastructure si nécessaire.

  4. Remplacez <customer_id> par le numéro client réel.

  5. Remplacez /path/to/ingestion-authentication-file.json par le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification d'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ésumé du jeton d'API pour le jeton fourni s'affiche.
  5. Dans la section Récapitulatif du jeton d'API, cliquez sur Copier pour copier l'URL et les en-têtes d'accès à l'API.

Installer Python sur la machine supplémentaire

  1. Ouvrez le navigateur Web et accédez au site Web de Python.
  2. Cliquez sur Télécharger Python pour votre système d'exploitation (Windows ou Mac).
  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, puis 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 du SIEM Sophos Central.
  2. Cliquez sur le bouton vert Code > Télécharger le fichier ZIP.
  3. Extrayez le fichier ZIP.

Configurer la configuration du script

  1. Recherchez et ouvrez le fichier config.ini dans un éditeur de texte.
  2. Modifiez le fichier de configuration :
    • Jeton d'API: saisissez la clé API que vous avez copiée précédemment dans Sophos Central.
    • Détails du serveur Syslog: saisissez les détails de votre serveur Syslog.
    • Host (Hôte) : saisissez l'adresse IP de Bindplane.
    • Port: saisissez le numéro de port 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 du script.

    • Sous Windows :

      1. Appuyez sur la touche Windows, puis saisissez cmd.
      2. Cliquez sur Invite de commande.
      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:

    • Pour démarrer le script, saisissez la commande suivante:

      python siem.py
      

Automatisez l'exécution continue du script sous 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 General (Général) :
    • Nommez votre tâche (par exemple, Sophos Central Log Export).
  4. Dans l'onglet Déclencheurs :
    • Cliquez sur Nouveau, puis définissez la tâche à exécuter quotidiennement ou au démarrage (selon vos préférences).
  5. Dans l'onglet Actions :
    • Cliquez sur Nouveau, puis sélectionnez Démarrer un programme.
    • Recherchez le fichier exécutable python.exe (généralement situé dans C:\PythonXX\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-Integration\siem.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. Enregistrez et quittez l'éditeur.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
customer_id target.resource.id Mappé directement à partir du champ customer_id.
data.core_remedy_items.items.0.descriptor target.process.file.full_path Mappé directement à partir du champ data.core_remedy_items.items.0.descriptor.
data.source_info.ip principal.ip
principal.asset.ip
Mappé directement à partir du champ data.source_info.ip.
description metadata.description Mappé directement à partir du champ description lorsque metadata.event_type est GENERIC_EVENT.
dhost principal.hostname
principal.asset.hostname
Mappé directement à partir du champ dhost.
duid security_result.detection_fields.value Mappé directement à partir du champ duid.
end metadata.event_timestamp Analysé au format RFC 3339 et mappé sur le champ event_timestamp.
ID du point de terminaison target.asset_id Mappé en tant que Device endpoint Id: {endpoint_id}.
endpoint_type security_result.about.labels.value Mappé directement à partir du champ endpoint_type.
groupe security_result.category_details Mappé directement à partir du champ group.
nom security_result.description
security_result.summary
Mappé directement à partir du champ name. Si les indicateurs is_alert ou is_significant sont définis, ils sont mappés sur security_result.summary.
is_alert Définissez cette valeur sur true pour des valeurs type spécifiques indiquant une alerte. Sinon, la valeur par défaut est false.
is_significant Défini sur true pour des valeurs type spécifiques indiquant un événement important, sinon défini par défaut sur false.
metadata.event_type Déterminé en fonction du champ type et d'une logique supplémentaire dans l'analyseur. Les valeurs possibles sont: FILE_OPEN, SCAN_HOST, SETTING_MODIFICATION, STATUS_HEARTBEAT, SETTING_CREATION, NETWORK_CONNECTION, SCAN_PROCESS, SCAN_UNCATEGORIZED, USER_CREATION, USER_UNCATEGORIZED, STATUS_UPDATE.
metadata.log_type Variable définie sur SOPHOS_CENTRAL.
metadata.product_event_type Mappé directement à partir du champ type.
metadata.product_name Variable définie sur Sophos Central.
metadata.vendor_name Variable définie sur Sophos.
network.direction Défini sur OUTBOUND pour des valeurs type spécifiques indiquant des connexions réseau sortantes.
network.ip_protocol Défini sur TCP pour des valeurs type spécifiques indiquant des connexions réseau TCP.
security_result.action Déterminé en fonction du champ action extrait du champ name à l'aide de modèles grok. Les valeurs possibles sont les suivantes: ALLOW, BLOCK, ALLOW_WITH_MODIFICATION et UNKNOWN_ACTION.
security_result.detection_fields.key Défini sur duid lorsque le champ duid est présent.
security_result.rule_name Extrait du champ name à l'aide de modèles Grok pour des valeurs type spécifiques.
security_result.severity Mappé à partir du champ severity avec le mappage suivant: faible -> LOW, moyen -> MEDIUM, élevé/critique -> HIGH.
target.application Extrait du champ name à l'aide de modèles Grok pour des valeurs type spécifiques.
target.asset.hostname Mappé à partir du champ dhost pour des valeurs type spécifiques.
target.file.full_path Extrait du champ name à l'aide de modèles Grok pour des valeurs type spécifiques, ou mappé directement à partir de data.core_remedy_items.items.0.descriptor ou core_remedy_items.items.0.descriptor.
target.file.size Extrait du champ name à l'aide de modèles Grok et converti en uinteger pour des valeurs type spécifiques.
target.hostname Mappé à partir du champ dhost pour des valeurs type spécifiques.
target.resource.name Défini sur des valeurs spécifiques en fonction du champ type ou extrait du champ name à l'aide de modèles Grok.
target.resource.type Définissez-le sur des valeurs spécifiques en fonction du champ type.
target.user.userid Mappé à partir du champ suser après extraction du nom d'utilisateur à l'aide de modèles Grok.
target.url Extrait du champ name à l'aide de modèles Grok pour des valeurs type spécifiques.
source_info.ip principal.ip
principal.asset.ip
Mappé directement à partir du champ source_info.ip.
suser principal.user.userid
target.user.userid
Extrait du champ suser à l'aide de modèles Grok pour supprimer les préfixes de nom d'hôte.
type metadata.product_event_type Mappé directement à partir du champ type.

Modifications

2025-01-30

Amélioration :

  • Prise en charge de l'analyse des journaux JSON non analysés.

2025-01-08

Amélioration :

  • Ajout de url, action et scan_name dans statedata pour analyser les journaux non analysés.
  • Mappage de user_id sur principal.user.userid.

2024-09-05

Amélioration :

  • Ajout de la possibilité d'analyser les journaux JSON non analysés.
  • Mappage de location sur principal.cloud.availability_zone.

2024-05-17

Amélioration :

  • Mappage de data.core_remedy_items.items.0.descriptor et core_remedy_items.items.0.descriptor sur target.process.file.full_path.

2024-05-14

Correction de bug:

  • Modification de la mise en correspondance de target.user.userid de duid à suser.
  • Mappage de duid sur security_result.detection_fields.

2022-12-27

  • Analyseur nouvellement créé.

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