Collecter les journaux AlgoSec Security Management

Version de l'analyseur : 4.0

Compatible avec :

Ce document explique comment ingérer les journaux AlgoSec Security Management dans Google Security Operations à l'aide de l'agent Bindplane.

AlgoSec Security Management Suite (ASMS) permet de gérer les règles de sécurité réseau sur les pare-feu, les plates-formes SDN et cloud. Elle inclut Firewall Analyzer pour l'analyse des risques et de la conformité, FireFlow pour l'automatisation de la gestion des modifications et AppViz pour la visibilité de la connectivité des applications.

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
  • Connectivité réseau entre l'agent BindPlane et les appliances AlgoSec
  • Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts conformément aux exigences de l'agent BindPlane.
  • Accès privilégié à AlgoSec Firewall Analyzer, FireFlow et AppViz

Obtenir des identifiants Google SecOps pour l'agent BindPlane

Pour authentifier l'agent Bindplane auprès de Google SecOps, choisissez l'une des méthodes suivantes :

  • Nouveaux déploiements : utilisez l'API Chronicle (option 1).
  • Anciens déploiements : continuez à utiliser le fichier d'authentification d'ingestion (option 2) jusqu'à l'arrêt de l'API Ingestion le 20 juillet 2027.
  1. Connectez-vous à la consoleGoogle Cloud et sélectionnez le projet Google Cloud associé à votre instance Google SecOps.
  2. Accédez à IAM et administration > Comptes de service.
  3. Cliquez sur Créer un compte de service.
  4. Fournissez les informations de configuration suivantes :
    • Nom du compte de service : saisissez un nom pour le compte (par exemple, bindplane-ingest).
    • Description du compte de service : saisissez une description (par exemple, Bindplane agent log ingestion).
  5. Cliquez sur Créer et continuer.
  6. Dans la section Autoriser ce compte de service à accéder au projet, cliquez sur Sélectionner un rôle, puis sélectionnez Éditeur Chronicle.
  7. Cliquez sur Continue (Continuer), puis sur Done (OK).
  8. Cliquez sur le compte de service que vous avez créé, puis accédez à l'onglet Clés.
  9. Cliquez sur Ajouter une clé > Créer une clé.
  10. Sélectionnez JSON, puis cliquez sur Créer. Le fichier de clé est téléchargé sur votre ordinateur.
  11. Enregistrez le fichier de clé sous le nom ingestion-auth.json dans le répertoire du collecteur Bindplane (/opt/observiq-otel-collector/ingestion-auth.json sous Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json sous Windows), ou mettez à jour creds_file_path dans config.yaml pour qu'il corresponde au chemin d'accès où vous l'enregistrez.
  12. Accédez à IAM et administration > Paramètres, puis copiez le numéro du projet. Vous en aurez besoin pour la configuration de l'exportateur.

Option 2 : Télécharger le fichier d'authentification d'ingestion (ancienne méthode)

  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.
  4. Enregistrez le fichier de manière sécurisée sur le système sur lequel l'agent 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 dans la section Détails de 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 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
    
  3. Attendez que l'installation se termine.

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

    sc query observiq-otel-collector
    

    Le service doit s'afficher comme étant EN COURS D'EXÉCUTION.

Installation de Linux

  1. Ouvrez un terminal avec des privilèges 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 que l'installation se termine.

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

    sudo systemctl status observiq-otel-collector
    

    Le service doit s'afficher 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 /opt/observiq-otel-collector/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/algosec:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: ALGOSEC
        raw_log_field: body
    
    service:
      pipelines:
        logs/algosec_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/algosec
    

Paramètres de configuration

Remplacez les espaces réservés suivants :

  • Configuration du récepteur :

    • listen_address : adresse IP et port à écouter :
      • 0.0.0.0 pour écouter sur toutes les interfaces (recommandé)
      • Le port 514 est le port syslog standard (nécessite un accès racine sous Linux ; utilisez 1514 pour un accès non racine).
  • Configuration de l'exportateur :

    • creds_file_path : chemin d'accès complet au fichier de clé JSON du compte de service (option 1) :
      • Linux : /opt/observiq-otel-collector/ingestion-auth.json
      • Windows : C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id : ID client copié depuis la console Google SecOps
    • location : remplacez <LOCATION> par la région de votre instance Google SecOps (par exemple, us, europe ou asia-southeast1). L'exportateur préfixe chronicle.googleapis.com avec cette valeur. Pour obtenir la liste complète, consultez Points de terminaison régionaux.
    • project : remplacez <PROJECT_NUMBER> par le numéro de projet indiqué dans IAM et administration > Paramètres.
    • endpoint : laissez la valeur définie sur chronicle.googleapis.com.

Ancien exportateur d'API d'ingestion

  • Si vous utilisez le fichier d'authentification d'ingestion de l'option 2, remplacez le bloc exporters par ce qui suit. Définissez creds_file_path sur le chemin d'accès au fichier d'authentification d'ingestion. Si votre instance se trouve en dehors des États-Unis, remplacez malachiteingestion-pa.googleapis.com par votre point de terminaison régional (par exemple, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/algosec:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: ALGOSEC
        raw_log_field: body
    

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 sous Windows, choisissez l'une des options suivantes :

    • Invite de commande 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. Recherchez 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 syslog pour Firewall Analyzer

  1. Connectez-vous au dispositif AFA via SSH.
  2. Accédez au répertoire de configuration syslog-ng :

    cd /etc/syslog-ng
    
  3. Sauvegardez la configuration existante :

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. Modifiez le fichier de configuration syslog-ng :

    vi syslog-ng.conf
    
  5. Ajoutez les lignes suivantes pour définir le serveur syslog distant :

    destination d_remote { udp("<BINDPLANE_IP>" port(514)); };
    log { source(s_sys); destination(d_remote); };
    
    • Remplacez <BINDPLANE_IP> par l'adresse IP de l'agent Bindplane.
  6. Enregistrez et fermez l'éditeur.

  7. Redémarrez le service syslog-ng pour appliquer les modifications :

    service syslog-ng restart
    
  8. Facultatif : Vérifiez la configuration Syslog :

    1. Accédez à Administration > Syslog Server Settings (Administration > Paramètres du serveur Syslog).
    2. Cliquez sur Tester la connectivité.

Configurer syslog pour FireFlow

  1. Connectez-vous à la machine FireFlow en tant que root.
  2. Ouvrez le fichier /etc/syslog.conf pour le modifier :

    vi /etc/syslog.conf
    
  3. Ajoutez la ligne suivante au fichier :

    local0.*@<BINDPLANE_IP>
    
    • Remplacez <BINDPLANE_IP> par l'adresse IP du serveur de l'agent BindPlane.

Configurer Syslog pour AppViz

  1. Connectez-vous au dispositif AppViz via SSH.
  2. Accédez au répertoire de configuration syslog-ng :

    cd /etc/syslog-ng
    
  3. Sauvegardez la configuration existante :

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. Modifiez le fichier de configuration syslog-ng :

    vi syslog-ng.conf
    
  5. Ajoutez les éléments suivants pour définir le serveur Syslog distant :

    destination d_remote { udp("<BINDPLANE_IP>" port(514)); };
    log { source(s_sys); destination(d_remote); };
    
    • Remplacez <BINDPLANE_IP> par l'adresse IP de l'agent BindPlane.
  6. Enregistrez et fermez l'éditeur.

  7. Redémarrez le service syslog-ng pour appliquer les modifications :

    service syslog-ng restart
    
  8. Vérifiez la configuration de syslog :

    1. Dans l'interface AppViz, accédez à Administration > Paramètres du serveur Syslog.
    2. Cliquez sur Tester la connectivité.

Configurer syslog pour les événements de connexion et de déconnexion

  1. Connectez-vous à l'appliance ASMS via SSH.
  2. Accédez au répertoire de configuration syslog-ng :

    cd /etc/syslog-ng
    
  3. Sauvegardez la configuration existante :

    cp syslog-ng.conf syslog-ng.conf.orig
    
  4. Modifiez le fichier de configuration syslog-ng :

    vi syslog-ng.conf
    
  5. Ajoutez les éléments suivants pour définir le serveur Syslog distant :

    destination d_remote { udp("<BINDPLANE_IP>" port(514)); };
    log { source(s_sys); destination(d_remote); };
    
    • Remplacez <BINDPLANE_IP> par l'adresse IP de l'agent BindPlane.
  6. Enregistrez et fermez l'éditeur.

  7. Redémarrez le service syslog-ng pour appliquer les modifications :

    service syslog-ng restart
    

Table de mappage UDM

Champ du journal Mappage UDM Logique
by_user principal.user.user_display_name La valeur du champ by_user du journal brut est attribuée à ce champ UDM.
collection_time metadata.event_timestamp Les champs "seconds" et "nanos" sont combinés pour créer un code temporel.
comm target.process.command_line La valeur du champ comm extraite du champ desc à l'aide de grok est attribuée à ce champ UDM.
datetime metadata.event_timestamp La date et l'heure sont extraites du journal brut et utilisées pour renseigner le code temporel de l'événement.
desc metadata.description La valeur du champ desc du journal brut est attribuée à ce champ UDM lorsqu'aucune autre description n'est disponible.
dest_ip target.ip La valeur du champ dest_ip du journal brut est attribuée à ce champ UDM.
dest_port target.port La valeur du champ dest_port du journal brut est attribuée à ce champ UDM.
details security_result.summary La valeur du champ details du journal brut est attribuée à ce champ UDM.
device principal.asset.hostname La valeur du champ device du journal brut est attribuée à ce champ UDM.
dst_ip target.ip La valeur du champ dst_ip du journal brut est attribuée à ce champ UDM.
dst_port target.port La valeur du champ dst_port du journal brut est attribuée à ce champ UDM.
event_id metadata.product_event_type La valeur du champ event_id du journal brut est attribuée à ce champ UDM. Il est également utilisé dans la logique de l'analyseur pour déterminer le champ metadata.event_type et d'autres champs.
event_name metadata.product_event_type La valeur du champ event_name du journal brut est attribuée à ce champ UDM.
firewall target.hostname La valeur du champ firewall du journal brut est attribuée à ce champ UDM.
host principal.hostname La valeur du champ host du journal brut est attribuée à ce champ UDM.
host_type principal.asset.category La valeur du champ host_type du journal brut est attribuée à ce champ UDM.
iporhost principal.ip/principal.hostname/target.ip/target.hostname/observer.ip/observer.hostname Si la valeur est une adresse IP, elle est mappée sur principal.ip,target.ip, ou observer.ip en fonction de la source du journal et du type d'événement. S'il s'agit d'un nom d'hôte, il est mappé sur principal.hostname,target.hostname, ou observer.hostname.
IP principal.ip La valeur du champ IP du journal brut est attribuée à ce champ UDM.
kv_data security_result.summary La valeur du champ kv_data du journal brut est attribuée à ce champ UDM.
log_type metadata.log_type Codé en dur sur ALGOSEC.
metric security_result.action_details La valeur du champ metric du journal brut est attribuée à ce champ UDM.
msg security_result.summary/security_result.description La valeur du champ msg du journal brut est utilisée pour renseigner le récapitulatif ou la description du résultat de sécurité, selon le contexte. Il est également utilisé pour les champs extractrisk_level,risk_count,risk_code, et risk_title.
pid target.process.pid La valeur du champ pid extraite du champ desc à l'aide de grok est attribuée à ce champ UDM.
product metadata.product_name La valeur du champ product du journal brut est attribuée à ce champ UDM.
report security_result.description La valeur du champ report du journal brut est incluse dans la description du résultat de sécurité.
report_data.Device IP target.ip La valeur du champ Device IP des données JSON analysées est attribuée à ce champ UDM.
report_data.Highest Risk Level security_result.description La valeur du champ Highest Risk Level des données JSON analysées est incluse dans la description du résultat de sécurité. Il permet également de déterminer la gravité du résultat de sécurité.
report_data.Security Rating Score security_result.description La valeur du champ Security Rating Score des données JSON analysées est incluse dans la description du résultat de sécurité.
Requestor.Email principal.user.email_addresses La valeur du champ Email dans l'objet Request des données JSON analysées est attribuée à ce champ UDM.
Requestor.Name principal.user.user_display_name La valeur du champ Name dans l'objet Requestor des données JSON analysées est attribuée à ce champ UDM.
RequestType target.resource.attribute.labels La valeur du champ RequestType du journal brut est ajoutée en tant qu'étiquette à la ressource cible.
risk_title security_result.summary La valeur du champ risk_title du journal brut est attribuée à ce champ UDM.
src_ip principal.ip La valeur du champ src_ip du journal brut est attribuée à ce champ UDM.
src_port principal.port La valeur du champ src_port du journal brut est attribuée à ce champ UDM.
status security_result.description/security_result.action_details La valeur du champ status du journal brut est incluse dans la description du résultat de sécurité ou des détails de l'action, selon le contexte. Il est également utilisé pour déterminer la gravité du résultat de sécurité.
target_app target.application La valeur du champ target_app du journal brut est attribuée à ce champ UDM.
TemplateName metadata.description La valeur du champ TemplateName du journal brut est attribuée à ce champ UDM.
url security_result.url_back_to_product La valeur du champ url du journal brut est attribuée à ce champ UDM.
user principal.user.userid La valeur du champ user du journal brut est attribuée à ce champ UDM.
vendor metadata.vendor_name La valeur du champ vendor du journal brut est attribuée à ce champ UDM.
version metadata.product_version La valeur du champ version du journal brut est attribuée à ce champ UDM.
WorkFlow target.resource.attribute.labels La valeur du champ WorkFlow du journal brut est ajoutée en tant que libellé à la ressource cible.
(Parser Logic) extensions.auth.type Codé en dur sur MACHINE.
(Parser Logic) security_result.action Déterminé en fonction de event_id et d'autres champs. Généralement défini sur ALLOW or BLOCK.
(Parser Logic) security_result.category Codé en dur sur POLICY_VIOLATION pour les événements de l'Analyseur de pare-feu.
(Parser Logic) security_result.description Construit à partir d'autres champs, il fournit le contexte et des détails sur l'événement.
(Parser Logic) security_result.severity Déterminé en fonction de event_id,msg, et d'autres champs. Généralement défini sur LOW,MEDIUM, ou HIGH.
(Parser Logic) metadata.event_type Déterminé en fonction de event_id et d'autres champs. (par exemple, USER_LOGIN,USER_LOGOUT,USER_RESOURCE_ACCESS,GENERIC_EVENT,STATUS_UNCATEGORIZED,SCAN_HOST,NETWORK_CONNECTION, et STATUS_UPDATE).

Journal des modifications

Afficher le journal des modifications de ce parseur

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