Collecter les journaux Sophos UTM

Compatible avec :

Ce document explique comment ingérer des journaux Sophos UTM dans Google Security Operations à l'aide de Bindplane.

Sophos UTM (Unified Threat Management) est un dispositif de sécurité réseau tout-en-un qui offre des fonctionnalités de pare-feu, de VPN, de prévention des intrusions, de filtrage Web, de filtrage des e-mails et d'antivirus. Elle offre une gestion centralisée de la sécurité pour les réseaux d'entreprise via une console de gestion Web unique. L'analyseur extrait les champs des journaux au format Sophos UTM KV. Il utilise grok et/ou kv pour analyser le message du journal, puis mappe ces valeurs au modèle de données unifié (UDM). Il définit également les valeurs de métadonnées par défaut pour la source et le type d'événement.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Windows Server 2016 ou version ultérieure, ou hôte Linux avec systemd
  • 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é à l'interface WebAdmin de Sophos UTM

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
    
  3. Attendez la fin de l'installation.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sc query observiq-otel-collector
    

Le service doit être indiqué comme RUNNING (EN COURS D'EXÉCUTION).

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
    
  3. Attendez la fin de l'installation.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sudo systemctl status observiq-otel-collector
    

Le service doit être indiqué comme actif (en cours d'exécution).

Autres ressources d'installation

Pour obtenir d'autres options d'installation et de dépannage, consultez le guide d'installation de l'agent Bindplane.

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

Localiser le fichier de configuration

  • Linux :

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows :

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifiez le fichier de configuration

  • Remplacez l'intégralité du contenu de config.yaml par la configuration suivante :

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'SOPHOS_UTM'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Paramètres de configuration

  • Remplacez les espaces réservés suivants :

    • Configuration du récepteur :

      • udplog : utilisez udplog pour syslog UDP ou tcplog pour syslog TCP.
      • 0.0.0.0 : adresse IP à écouter (0.0.0.0 pour écouter sur toutes les interfaces)
      • 514 : numéro de port à écouter (port syslog standard)
    • Configuration de l'exportateur :

      • creds_file_path : chemin d'accès complet au fichier d'authentification de l'ingestion :
        • Linux : /etc/bindplane-agent/ingestion-auth.json
        • Windows : C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID : ID client de la section "Obtenir l'ID client"
      • endpoint : URL du point de terminaison régional :
        • États-Unis : malachiteingestion-pa.googleapis.com
        • Europe : europe-malachiteingestion-pa.googleapis.com
        • Asie : asia-southeast1-malachiteingestion-pa.googleapis.com
        • Pour obtenir la liste complète, consultez Points de terminaison régionaux.
      • log_type : type de journal tel qu'il apparaît dans Chronicle (SOPHOS_UTM)

Enregistrez le fichier de configuration.

  • Après avoir modifié le fichier, enregistrez-le :
    • Linux : appuyez sur Ctrl+O, puis sur Enter, puis sur Ctrl+X.
    • Windows : cliquez sur Fichier > Enregistrer.

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 observiq-otel-collector
    
    1. Vérifiez que le service est en cours d'exécution :

        sudo systemctl status observiq-otel-collector
      
    2. Recherchez les erreurs dans les journaux :

        sudo journalctl -u observiq-otel-collector -f
      
  • Pour redémarrer l'agent Bindplane dans Windows, choisissez l'une des options suivantes :

    • Invite de commandes ou PowerShell en tant qu'administrateur :

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console Services :

      1. Appuyez sur Win+R, saisissez services.msc, puis appuyez sur Entrée.
      2. Localisez observIQ OpenTelemetry Collector.
      3. Effectuez un clic droit, puis sélectionnez Redémarrer.

      4. Vérifiez que le service est en cours d'exécution :

        sc query observiq-otel-collector
        
      5. Recherchez les erreurs dans les journaux :

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Configurer le transfert Syslog sur Sophos UTM

  1. Connectez-vous à l'interface WebAdmin de Sophos UTM.
  2. Accédez à Journalisation et rapports> Paramètres de journalisation> Serveur Syslog distant.
  3. Cliquez sur le bouton bascule pour activer le syslog à distance.
  4. Fournissez les informations de configuration suivantes :
    • Serveur Syslog distant : saisissez l'adresse IP de l'hôte de l'agent Bindplane.
    • Port : saisissez 514.
  5. Dans la section Sélection du journal Syslog distant, sélectionnez les types de journaux à transférer :
    • Filtre de paquets : journaux du filtre de paquets du pare-feu
    • Filtre Web : activité de filtrage Web
    • IPS : événements du système de prévention des intrusions
    • Authentification : événements d'authentification des utilisateurs
    • E-mail : événements de filtrage et de mise en quarantaine des e-mails
    • Protection du réseau : journaux de protection avancée contre les menaces
    • Protection du serveur Web : journaux WAF
    • VPN : événements de connexion VPN
    • HA/Cluster : événements de haute disponibilité et de cluster
    • Système : événements au niveau du système
    • DHCP : journaux du serveur DHCP
    • DNS : journaux des requêtes DNS
  6. Cliquez sur Appliquer pour enregistrer la configuration.
  7. Vérifiez que les messages syslog sont envoyés en consultant les journaux de l'agent Bindplane.

Table de mappage UDM

Champ de journal Mappage UDM Logique
action security_result.action Si l'action est "pass" ou "accept", mappez-la sur "ALLOW". Si l'action est "drop", mappez-la sur "BLOCK".
ad_domain target.administrative_domain Mappage direct.
address target.ip, target.asset.ip Mappage direct, utilisé lorsque l'ID est "2203".
application target.application Mappage direct.
app-id additional.fields[].key, additional.fields[].value.string_value Renommé app_id. Si elle n'est pas vide, la clé est définie sur "app-id" et la valeur correspond à l'ID de l'application.
application principal.application Mappage direct.
aptptime additional.fields[].key, additional.fields[].value.string_value Si elle n'est pas vide, la clé est définie sur "aptptime" et la valeur correspond à l'aptptime lui-même.
auth extensions.auth.auth_details Mappage direct.
authtime additional.fields[].key, additional.fields[].value.string_value Si elle n'est pas vide et n'est pas définie sur "0", la clé est définie sur "authtime" et la valeur correspond à l'heure d'authentification elle-même.
avscantime additional.fields[].key, additional.fields[].value.string_value Si elle n'est pas vide et n'est pas définie sur "0", la clé est définie sur "avscantime" et la valeur correspond à avscantime.
category security_result.detection_fields[].key, security_result.detection_fields[].value Si elle n'est pas vide, la clé est définie sur "category" et la valeur correspond à la catégorie elle-même. Si le nom contient "portscan", security_result.category est défini sur "NETWORK_RECON" et un champ de détection avec la clé "category" et la valeur "NETWORK_RECON" est ajouté.
categoryname security_result.category_details Mappage direct.
connexion security_result.rule_name Mappage direct, utilisé lorsque l'ID est "2203".
Données de type de contenu (Voir les autres champs) Le champ de données contient des paires clé/valeur qui sont analysées dans des champs individuels.
Date/Heure metadata.event_timestamp Analysé et mappé en secondes depuis l'epoch.
appareil additional.fields[].key, additional.fields[].value.string_value Si elle n'est pas vide et n'est pas définie sur "0", la clé est définie sur "device" et la valeur correspond à l'appareil lui-même.
dnstime additional.fields[].key, additional.fields[].value.string_value Si elle n'est pas vide et n'est pas définie sur "0", la clé est définie sur "dnstime" et la valeur correspond au dnstime lui-même.
dstip target.ip, target.asset.ip Mappage direct. Également extrait du champ "URL" s'il est présent.
dstmac target.mac Mappage direct.
dstport target.port Mappage direct, converti en entier.
événement d'erreur security_result.summary Mappage direct, utilisé lorsque l'ID est "2201", "2202" ou "2203".
exceptions additional.fields[].key, additional.fields[].value.string_value Si elle n'est pas vide, la clé est définie sur "exceptions" et la valeur correspond aux exceptions elles-mêmes.
fichier about.file.full_path Mappage direct.
filteraction security_result.rule_name Mappage direct.
fullreqtime additional.fields[].key, additional.fields[].value.string_value Si elle n'est pas vide, la clé est définie sur "fullreqtime" et la valeur correspond à fullreqtime.
fwrule security_result.rule_id Mappage direct.
groupe target.group.group_display_name Mappage direct.
id metadata.product_log_id Mappage direct.
info security_result.description Mappage direct. Si elle est présente, metadata.event_type est défini sur "NETWORK_UNCATEGORIZED".
Interface initf security_result.about.labels[].key, security_result.about.labels[].value Si elle n'est pas vide, un libellé avec la clé "Interface" et la valeur "interface" est ajouté à security_result.about.labels.
ip_address target.ip, target.asset.ip Mappage direct.
message de longueur de ligne security_result.summary Utilisé lorsque l'ID est "0003". Également utilisé pour l'analyse Grok générale.
method network.http.method Mappage direct.
nom security_result.summary Mappage direct.
outitf pid target.process.pid Mappage direct.
port target.port Mappage direct, converti en entier.
profil prec security_result.rule_name Mappage direct.
proto network.ip_protocol Converti en nom de protocole IP à l'aide d'une table de recherche.
URL de provenance du motif network.http.referral_url Mappage direct.
request additional.fields[].key, additional.fields[].value.string_value Si elle n'est pas vide, la clé est définie sur "request" et la valeur correspond à la requête elle-même.
réputation additional.fields[].key, additional.fields[].value.string_value Si elle n'est pas vide, la clé est définie sur "reputation" et la valeur correspond à la réputation elle-même.
rx network.received_bytes Mappage direct, utilisé lorsque l'ID est "2202", converti en entier non signé.
Gravité du bac à sable security_result.severity Si la gravité est "info", mappez-la sur "LOW".
taille target.file.size Mappage direct, converti en entier non signé.
srcip principal.ip, principal.asset.ip Mappage direct.
srcmac principal.mac Mappage direct.
srcport principal.port Mappage direct, converti en entier.
statuscode network.http.response_code Mappage direct, converti en entier.
sub network.application_protocol Si la valeur de "sub" est "http", metadata.event_type est défini sur "NETWORK_HTTP" et network.application_protocol est défini sur "HTTP". Si sub est défini sur "packetfilter", metadata.description est défini sur sub. Sinon, il est converti en nom de protocole d'application à l'aide d'une table de correspondance. Si aucune correspondance n'est trouvée dans la table de recherche, le dstport est utilisé pour la recherche.
sys metadata.product_event_type Mappage direct.
tcpflags tos ttl tx network.sent_bytes Mappage direct, utilisé lorsque l'ID est "2202", converti en entier non signé.
ua network.http.user_agent Mappage direct.
url network.http.referral_url, target.hostname, target.asset.hostname Mappage direct pour network.http.referral_url. Nom d'hôte extrait pour target.hostname et target.asset.hostname. Utilisé également pour extraire dstip.
utilisateur target.user.userid Mappage direct.
nom d'utilisateur target.user.userid Mappage direct, utilisé lorsque l'ID est "2201" ou "2202".
variante Non inclus dans le fichier UDM final, mais utilisé dans la description Utilisé conjointement avec "sub" pour créer security_result.description lorsque l'ID est "2201", "2202" ou "2203".
virtual_ip target.ip, target.asset.ip Mappage direct, utilisé lorsque l'ID est "2201" ou "2202".
metadata.event_type metadata.event_type Initialisé sur "GENERIC_EVENT". Définissez des valeurs spécifiques en fonction du contenu du journal et de la logique de l'analyseur.
metadata.log_type metadata.log_type Codé en dur sur "SOPHOS_UTM".
metadata.product_name metadata.product_name Codé en dur sur "SOPHOS UTM".
metadata.vendor_name metadata.vendor_name Codé en dur sur "SOPHOS Ltd".
intermediary.hostname intermediary.hostname Extrait du message de journal à l'aide de grok et renommé.

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