Collecter les journaux de commutateur Arista

Compatible avec :

Cet analyseur extrait les champs des journaux de commutateurs Arista, en gérant les formats JSON et syslog. Il utilise des modèles grok pour analyser différents types de messages de journaux, mapper les champs extraits à l'UDM et enrichir les événements avec des métadonnées telles que le type d'événement, la gravité et les informations sur le principal/la cible en fonction des détails extraits.

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.
  • Arista EOS 4.23.x ou version ultérieure installé et accessible.
  • Assurez-vous de disposer d'un accès privilégié sur le commutateur Arista EOS.

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: ARISTA_SWITCH
                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 dans un commutateur Arista

  1. Connectez-vous au routeur Arista.
  2. Accédez au mode configuration :

    Arista# config terminal
    
  3. Fournissez au commutateur la configuration suivante pour envoyer les journaux à l'agent Bindplane.

    Arista(config)# logging host <bindplane-server-ip> <port-number> protocol [tcp/udp]
    Arista(config)# logging trap information
    Arista(config)# copy running-config startup-config
    
    * Replace `<bindplane-server-ip>` with Bindplane agent IP address and `<port-number>` with the port configured to listen.
    
  4. Saisissez une configuration supplémentaire pour les journaux d'exécution des commandes :

    Arista (config)# aaa accounting commands all console start-stop logging
    Arista (config)# aaa accounting commands all default start-stop logging
    Arista (config)# aaa accounting exec console start-stop logging
    Arista (config)# aaa accounting exec default start-stop logging
    Arista (config)# copy running-config startup-config
    
  5. Saisissez une configuration supplémentaire pour les journaux de connexion :

    Arista (config)# aaa authentication policy on-success log
    Arista (config)# aaa authentication policy on-failure log
    Arista (config)# copy running-config startup-config
    

Table de mappage UDM

Champ de journal Mappage UDM Logique
appname target.application Mappé directement à partir du champ appname.
description metadata.description Directement mappé à partir du champ description, qui est extrait du champ message à l'aide de modèles Grok basés sur product_event_type.
dst_ip target.ip, target.asset.ip Mappé directement à partir du champ dst_ip, qui est extrait du champ message à l'aide de modèles grok.
dst_mac target.mac Mappé directement à partir du champ dst_mac, qui est extrait du champ message à l'aide de modèles grok.
dst_port target.port Mappé directement à partir du champ dst_port, qui est extrait du champ message à l'aide de modèles grok.
facility additional.fields[facility].string_value Mappé directement à partir du champ facility.
hostname principal.hostname, principal.asset.hostname Mappé directement à partir du champ hostname.
inner_msg metadata.description Mappé directement à partir du champ inner_msg, qui est extrait du champ message à l'aide de modèles grok.
ip_protocol network.ip_protocol Mappé directement à partir du champ ip_protocol, qui est extrait du champ message à l'aide de modèles grok. Si la valeur est "tcp", elle est convertie en "TCP". Si le type d'événement est"NO_IGMP_QUERIER", il est défini sur "IGMP".
pid principal.process.pid Mappé directement à partir du champ pid, qui est extrait du champ message à l'aide de modèles grok.
prin_ip principal.ip, principal.asset.ip Mappé directement à partir du champ prin_ip, qui est extrait du champ message à l'aide de modèles grok.
product_event_type metadata.product_event_type Mappé directement à partir du champ product_event_type, qui est extrait du champ message à l'aide de modèles grok.
proto network.application_protocol Si le champ proto est "sshd", le champ UDM est défini sur "SSH".
severity security_result.severity, security_result.severity_details security_result.severity est dérivé du champ severity en fonction des mappages suivants : "DEFAULT", "DEBUG", "INFO", "NOTICE" → "INFORMATIONAL" ; "WARNING", "ERROR", "ERR", "WARN" → "MEDIUM" ; "CRITICAL", "ALERT", "EMERGENCY" → "HIGH". La valeur brute de severity est mappée sur security_result.severity_details.
session_id network.session_id Mappé directement à partir du champ session_id, qui est extrait du champ message à l'aide de modèles grok.
source_ip principal.ip, principal.asset.ip Mappé directement à partir du champ source_ip, qui est extrait du champ message à l'aide de modèles grok.
source_port principal.port Mappé directement à partir du champ source_port, qui est extrait du champ message à l'aide de modèles grok.
src_ip principal.ip, principal.asset.ip Mappé directement à partir du champ src_ip, qui est extrait du champ message à l'aide de modèles grok.
table_name target.resource.name Mappé directement à partir du champ table_name, qui est extrait du champ message à l'aide de modèles grok. Si ce champ est renseigné, target.resource.resource_type est défini sur "TABLE".
target_host target.hostname, target.asset.hostname Mappé directement à partir du champ target_host, qui est extrait du champ message à l'aide de modèles grok.
target_ip target.ip, target.asset.ip Mappé directement à partir du champ target_ip, qui est extrait du champ message à l'aide de modèles grok.
target_package target.process.command_line Mappé directement à partir du champ target_package, qui est extrait du champ message à l'aide de modèles grok.
target_port target.port Mappé directement à partir du champ target_port, qui est extrait du champ message à l'aide de modèles grok.
timestamp metadata.event_timestamp Directement mappé à partir du champ timestamp après avoir été analysé dans un objet d'horodatage.
user principal.user.userid Mappé directement à partir du champ user, qui est extrait du champ message à l'aide de modèles grok.
user_name target.user.userid Mappé directement à partir du champ user_name, qui est extrait du champ message à l'aide de modèles grok.
vrf additional.fields[vrf].string_value Mappé directement à partir du champ vrf, qui est extrait du champ message à l'aide de modèles grok. Dérivé d'une combinaison des champs has_principal, has_target, user, message, product_event_type et description à l'aide d'une logique conditionnelle complexe, comme décrit dans le code du parseur. La valeur par défaut est "GENERIC_EVENT". Codé en dur sur "ARISTA_SWITCH". Codé en dur sur "Arista Switch". Codé en dur sur "Arista". Définissez la valeur sur "BLOCK" si le champ description contient "connection rejected".
dpid additional.fields[DPID].string_value Mappé directement à partir du champ dpid.
intf additional.fields[intf].string_value Mappé directement à partir du champ intf.

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