Collecter les journaux AlgoSec Security Management

Compatible avec :

Ce document explique comment ingérer des journaux AlgoSec Security Management dans Google Security Operations à l'aide d'un agent Bindplane. L'analyseur extrait les champs, en gérant les journaux au format CEF et non-CEF. Il analyse les champs courants tels que les codes temporels, les adresses IP et les détails des événements, puis les mappe à l'UDM en fonction du produit (Suite, Firewall Analyzer, FireFlow) et de l'ID d'événement, en définissant les champs de métadonnées et de résultats de sécurité appropriés. Il gère également des types d'événements spécifiques tels que les connexions/déconnexions, les alertes administratives et les rapports d'analyse, en extrayant les détails pertinents et en définissant les niveaux de gravité.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec systemd.
  • Si vous exécutez le programme derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
  • Assurez-vous de disposer d'un 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. 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

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
    

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
    

Ressources d'installation supplémentaires

Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à 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 (par exemple, nano, vi ou le Bloc-notes).
  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: ALGOSEC
                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 selon les besoins de votre infrastructure.

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

  5. Mettez à jour /path/to/ingestion-authentication-file.json en indiquant le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour 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 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-server-ip>" port(514));
    };
    
    log {
        source(s_sys);
        destination(d_remote);
    };
    
    • Remplacez <bindplane-server-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.*@<BindplaneAgent>.

    • Remplacez <BindplaneAgent> 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-server-ip>" port(514));
    };
    
    log {
        source(s_sys);
        destination(d_remote);
    };
    
    • Remplacez <bindplane-server-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-server-ip>" port(514));
    };
    
    log {
        source(s_sys);
        destination(d_remote);
    };
    
    • Remplacez <bindplane-server-ip> par l'adresse IP de votre serveur syslog.
  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. Elle est également utilisée 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 extraire les champs risk_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 est également utilisé pour 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 Requestor 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 dans les 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.
(Logique de l'analyseur) extensions.auth.type Codé en dur sur MACHINE.
(Logique de l'analyseur) security_result.action Déterminé en fonction de event_id et d'autres champs. Généralement défini sur ALLOW ou BLOCK.
(Logique de l'analyseur) security_result.category Codé en dur sur POLICY_VIOLATION pour les événements Firewall Analyzer.
(Logique de l'analyseur) security_result.description Construit à partir d'autres champs, il fournit le contexte et les détails de l'événement.
(Logique de l'analyseur) security_result.severity Déterminé en fonction des champs event_id, msg et d'autres. Généralement défini sur LOW, MEDIUM ou HIGH.
(Logique de l'analyseur) metadata.event_type Déterminé en fonction de event_id et d'autres champs. Il peut s'agir, par exemple, de USER_LOGIN, USER_LOGOUT, USER_RESOURCE_ACCESS, GENERIC_EVENT, STATUS_UNCATEGORIZED, SCAN_HOST, NETWORK_CONNECTION et STATUS_UPDATE.

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