Collecter les journaux AlgoSec Security Management

Compatible avec :

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

La suite AlgoSec Security Management (ASMS) permet de gérer les règles de sécurité réseau sur les pare-feu, les plates-formes SDN et cloud. Il inclut Firewall Analyzer pour l'analyse des risques et de la conformité, FireFlow pour l'automatisation de la gestion du changement 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 de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
  • Accès privilégié à AlgoSec Firewall Analyzer, FireFlow et AppViz

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

Ressources d'installation supplémentaires

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/algosec:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.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 la racine sous Linux ; utilisez 1514 pour les utilisateurs non racine).
  • 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
    • customer_id : ID client copié depuis la console Google SecOps
    • 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.

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 syslog pour Firewall Analyzer

  1. Connectez-vous à l'appliance AFA à l'aide de 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 quittez 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 > 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 à l'appliance 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 quittez l'éditeur.

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

    service syslog-ng restart
    
  8. Vérifiez la configuration 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 quittez l'éditeur.

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

    service syslog-ng restart
    

Table de mappage UDM

Champ de 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 l'horodatage 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 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 que libellé à 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 permet également de 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 Firewall Analyzer.
(Parser Logic) security_result.description Construit à partir d'autres champs, il fournit le contexte et les détails de 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 ne sont pas autorisés.

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