Collecter les journaux Sophos Capsule8
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
- Sophos Linux Sensor version 5.5.2.22 ou ultérieure.
- 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
- L'URL MCS et l'ID de locataire de votre compte Sophos Central.
- Jeton d'API valide pour le dépôt de packages SLS.
Trouver l'URL de votre MCS
- Connectez-vous à Sophos Central.
- Cliquez sur le nom de votre compte> Paramètres d'assistance.
- Recherchez la ligne commençant par
This account is located
pour connaître la région géographique de votre compte Sophos Central. 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
- Ouvrez
/etc/sophos/runtimedetections.yaml
dans un éditeur de texte. 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
Enregistrez les modifications et quittez.
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.
- Ouvrez
/etc/sophos/runtimedetections.yaml
dans un éditeur de texte. 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
Enregistrez les modifications et quittez.
Redémarrez le capteur :
systemctl restart sophoslinuxsensor
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Agents de collecte.
- 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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent Bindplane
Installation de fenêtres
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installation de Linux
- Ouvrez un terminal avec les droits root ou sudo.
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 ce guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
Accédez au fichier de configuration :
- 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. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano
,vi
ou le Bloc-notes).
- Trouvez le fichier
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
- Connectez-vous à Sophos Central Admin.
- Sélectionnez Paramètres généraux > Gestion des jetons d'API.
- Cliquez sur Ajouter un jeton pour en créer un.
- Saisissez un nom de jeton, puis cliquez sur Enregistrer. Le récapitulatif du jeton d'API s'affiche pour le jeton fourni.
- 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
- Ouvrez le navigateur Web et accédez au site Web Python.
- Cliquez sur Télécharger Python pour votre système d'exploitation.
Installez Python :
- Sous Windows :
- Lancez le programme d'installation.
- Cochez la case Add Python to PATH (Ajouter Python au PATH).
- Cliquez sur Installer maintenant.
Sous Mac :
- 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.
Ouvrez Terminal et saisissez la commande suivante :
python --version
- Sous Windows :
Télécharger le script d'intégration Sophos
- Accédez à la page GitHub du dépôt GitHub d'intégration SIEM Sophos Central.
- Cliquez sur le bouton vert Code > Télécharger le fichier ZIP.
- Extrayez le fichier ZIP.
Configurer le script
- Ouvrez le fichier
config.ini
dans le répertoire où vous avez extrait l'archive ZIP. - 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).
- Enregistrez le fichier.
Exécuter le script
Accédez au dossier de script.
Sous Windows :
- Appuyez sur la touche Windows et saisissez
cmd
. - Cliquez sur Invite de commandes.
- Accédez au dossier du script :
cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
- Appuyez sur la touche Windows et saisissez
Sous macOS :
- Accédez à Applications > Utilitaires.
- Ouvrez l'application Terminal.
- Accédez au dossier du script :
cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
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) :
- Ouvrez le Planificateur de tâches en saisissant Planificateur de tâches dans le menu Démarrer.
- Cliquez sur Créer une tâche.
- Dans l'onglet Général :
- Nommez votre tâche (par exemple,
Sophos AV Log Export
).
- Nommez votre tâche (par exemple,
- 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).
- Dans l'onglet Actions :
- Cliquez sur Nouveau, puis sélectionnez Démarrer un programme.
- Recherchez l'exécutable
python.exe
(généralement situé dansC:/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
).
- Cliquez sur OK pour enregistrer la tâche.
Automatisez l'exécution continue du script sur Mac (à l'aide de tâches Cron) :
- Ouvrez le terminal.
- Saisissez
crontab -e
et appuyez sur Entrée. Ajoutez une ligne à la fin du fichier :
* * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
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.