Collecter les journaux Netscout Arbor Sightline

Compatible avec :

Ce document explique comment ingérer des journaux Netscout Arbor Sightline dans Google Security Operations à l'aide de l'agent Bindplane.

Netscout Arbor Sightline (anciennement Peakflow SP) est une plate-forme de détection des attaques DDoS et de visibilité du réseau qui offre des fonctionnalités robustes, de la planification de la capacité à l'échelle du réseau à l'identification et à la gestion de l'atténuation des attaques DDoS et d'autres menaces pour le réseau. Journal de bord collecte et analyse les données de flux, les informations de routage BGP et les données SNMP pour détecter les anomalies, générer des alertes et coordonner les réponses d'atténuation.

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 l'appliance Netscout Arbor Sightline
  • 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 administrateur à l'interface Web Netscout Arbor Sightline
  • Accès administrateur à l'interface de ligne de commande (CLI) Netscout Arbor Sightline pour la configuration des alertes système

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 configurer l'exportateur.

Option 2 : Télécharger le fichier d'authentification d'ingestion (ancien)

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres > Gestion des données > Agents de collecte. Si vous utilisez une plate-forme SIEM uniquement, accédez à Paramètres > 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 où l'agent BindPlane sera installé.

Obtenir le numéro client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres > Administration > Profil. Si vous utilisez une plate-forme SIEM uniquement, accédez à Paramètres > Profil.
  3. Copiez et enregistrez le numéro client de 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 sous Linux

  1. Ouvrez un terminal avec des droits d'accès racine 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).

Ressources d'installation supplémentaires

Pour obtenir des options d'installation et de dépannage supplémentaires, 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

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

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/arbor_sightline:
        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: '<CREDS_FILE_PATH>'
        customer_id: '<CUSTOMER_ID>'
        endpoint: chronicle.googleapis.com
        log_type: ARBOR_SIGHTLINE
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/arbor_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/arbor_sightline
    
  2. Remplacez les espaces réservés suivants :

    • Configuration du récepteur :

      • Le récepteur est configuré pour écouter sur le port UDP 514 sur toutes les interfaces (0.0.0.0:514).
      • Si vous devez utiliser un autre port (par exemple, 1514 pour les installations Linux non racine), modifiez la valeur listen_address.
      • Si vous préférez utiliser TCP syslog, remplacez udplog par tcplog dans la section des récepteurs et dans le pipeline.
    • 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 de l'étape précédente

      • location : remplacez <LOCATION> par la région de votre instance Google SecOps (par exemple, us, europe ou asia-southeast1). L'exportateur ajoute cette valeur en préfixe à chronicle.googleapis.com. 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.

      • log_type : définie sur ARBOR_SIGHTLINE (correspondance exacte requise)

      • ingestion_labels : libellés facultatifs au format YAML (à modifier selon les besoins de votre environnement)

Exemple de configuration

receivers:
  udplog:
    listen_address: "0.0.0.0:514"

exporters:
  chronicle/arbor_sightline:
    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: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6'
    endpoint: chronicle.googleapis.com
    log_type: ARBOR_SIGHTLINE
    raw_log_field: body
    ingestion_labels:
      env: production
      source: sightline

service:
  pipelines:
    logs/arbor_to_chronicle:
      receivers:
        - udplog
      exporters:
        - chronicle/arbor_sightline

Ancien exportateur d'API d'ingestion

  • Si vous utilisez le fichier d'authentification d'ingestion de l'option 2, remplacez le bloc exporters par le code suivant. 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/arbor_sightline:
        compression: gzip
        creds_file_path: '<CREDS_FILE_PATH>'
        customer_id: '<CUSTOMER_ID>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: ARBOR_SIGHTLINE
        raw_log_field: body
        ingestion_labels:
          env: production
    

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 :

    1. Exécutez la commande suivante :

      sudo systemctl restart observiq-otel-collector
      
    2. Vérifiez que le service est en cours d'exécution :

      sudo systemctl status observiq-otel-collector
      
    3. Vérifiez les journaux pour détecter d'éventuelles erreurs :

      sudo journalctl -u observiq-otel-collector -f
      
  • Pour redémarrer l'agent BindPlane sous Windows :

    1. 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 et sélectionnez Redémarrer.
    2. Vérifiez que le service est en cours d'exécution :

      sc query observiq-otel-collector
      
    3. Vérifiez les journaux pour détecter d'éventuelles erreurs :

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

Configurer le transfert syslog Netscout Arbor Sightline

Pour envoyer des journaux à Google SecOps, vous devez configurer Netscout Arbor Sightline afin de transférer les événements syslog à l'agent BindPlane. Pour cela, vous devez créer un groupe de notifications, configurer les paramètres de notification globaux et définir des règles de notification d'alerte.

Créer un groupe de notifications

  1. Connectez-vous à l'interface Web Netscout Arbor Sightline en tant qu'administrateur.
  2. Accédez à Administration > Notification > Groupes.
  3. Cliquez sur Ajouter un groupe de notifications.
  4. Fournissez les informations de configuration suivantes :
    • Destinations : saisissez l'adresse IP de l'hôte de l'agent BindPlane (par exemple, 192.168.1.100).
    • Port : saisissez 514 (ou le port configuré dans l'agent Bindplane, par exemple 1514).
    • Facility : sélectionnez une installation syslog (par exemple, local0 ou user).
    • Gravité : sélectionnez info. La gravité "Informations" collecte tous les messages d'événement au niveau d'événement "Informations" et de gravité supérieure.
  5. Cliquez sur Enregistrer.
  6. Cliquez sur Configuration Commit (Valider la configuration) pour appliquer les modifications de configuration.

Configurer les paramètres de notification généraux

Les notifications globales dans Netscout Arbor Sightline fournissent des notifications système qui ne sont pas associées à des règles d'alerte spécifiques.

  1. Dans l'interface Web de Netscout Arbor Sightline, accédez à Administration > Notification > Global Settings (Paramètres généraux).
  2. Dans le champ Groupe de notification par défaut, sélectionnez le groupe de notification que vous avez créé pour Google SecOps.
  3. Cliquez sur Enregistrer.
  4. Cliquez sur Configuration Commit (Valider la configuration) pour appliquer les modifications de configuration.

Activer les notifications d'alerte système

Les alertes système nécessitent une configuration supplémentaire via l'interface de ligne de commande (CLI).

  1. Connectez-vous à l'interface de ligne de commande Netscout Arbor Sightline en tant qu'administrateur.
  2. Répertoriez la configuration actuelle des alertes système :

    services sp alerts system_errors show
    
  3. Pour lister les noms de champs d'alerte système disponibles qui peuvent être configurés, exécutez la commande suivante :

    services sp alerts system_errors ?
    
  4. Activez les notifications pour les alertes système. Pour chaque type d'alerte que vous souhaitez activer, exécutez la commande suivante :

    services sp alerts system_errors <alert_name> notifications enable
    

    Remplacez <alert_name> par le nom du champ d'alerte système spécifique (par exemple, disk_full, flow_collector_down, license_expiring).

  5. Effectuez un commit des modifications de configuration :

    config write
    

Configurer des règles de notification d'alerte

Les règles de notification d'alerte déterminent quelles alertes déclenchent des notifications syslog vers Google SecOps.

  1. Dans l'interface Web de Netscout Arbor Sightline, accédez à Administration > Notification > Rules (Administration > Notification > Règles).
  2. Choisissez l'une des options suivantes :
    • Cliquez sur une règle existante pour la modifier.
    • Cliquez sur Ajouter une règle pour créer une règle de notification.
  3. Configurez les valeurs suivantes :
    • Nom : saisissez un nom descriptif pour la règle (par exemple, Chronicle-DDoS-Alerts).
    • Ressource : saisissez une adresse CIDR ou sélectionnez un objet géré dans la liste des ressources journal de bord. Pour appliquer la règle à toutes les ressources, laissez ce champ vide ou sélectionnez Tout.
    • Importance : sélectionnez le niveau d'importance minimal pour les alertes (par exemple, Low, Medium, High ou Critical). Les alertes de ce niveau ou d'un niveau supérieur déclencheront des notifications.
    • Groupe de notification : sélectionnez le groupe de notification que vous avez créé pour Google SecOps.
  4. Répétez ces étapes pour configurer des règles supplémentaires si nécessaire pour différentes ressources ou différents niveaux d'importance.
  5. Cliquez sur Enregistrer.
  6. Cliquez sur Configuration Commit (Valider la configuration) pour appliquer les modifications de configuration.

Tester la connectivité Syslog

Après avoir configuré le groupe de notifications et les règles, vérifiez que les messages syslog sont bien envoyés à l'agent BindPlane.

  1. Dans la CLI Netscout Arbor Sightline, testez la connexion syslog :

    services sp notification test syslog group <notification_group_name>
    

    Remplacez <notification_group_name> par le nom du groupe de notification que vous avez créé.

  2. La commande doit renvoyer :

    Server returned: Success
    
  3. Consultez les journaux de l'agent Bindplane pour vérifier que les messages de test sont bien reçus :

    Linux :

    sudo journalctl -u observiq-otel-collector -f
    

    Windows :

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    
  4. Dans la console Google SecOps, accédez à Recherche et vérifiez que les journaux Netscout Arbor Sightline s'affichent avec l'étiquette d'ingestion ARBOR_SIGHTLINE.

Types d'événements transférés à Google SecOps

  • Netscout Arbor Sightline transfère les catégories d'événements suivantes via syslog :

    • Événements de déni de service (DoS) : alertes de détection d'attaques DDoS, y compris les attaques volumétriques, les attaques de protocole et les attaques de couche d'application.
    • Événements d'authentification : connexions réussies et échouées des utilisateurs, tentatives d'authentification
    • Événements d'exploitation : tentatives d'exploitation et schémas de trafic suspects détectés
    • Événements d'activité suspecte : comportement de trafic anormal et menaces de sécurité potentielles
    • Événements système : état de l'appareil, état du service, modifications de la configuration et alertes opérationnelles
    • Événements de correction : début, fin et mises à jour de l'état de la correction des attaques DDoS

Table de mappage UDM

Champ du journal Mappage UDM Logique
msg1 additional.fields Fusionné avec les libellés de chaque champ s'il n'est pas vide, à l'aide de clés spécifiques telles que "message_description" pour msg1, "config_version" pour config_version, etc.
config_version additional.fields
prin_user additional.fields
old_bgp_attributes additional.fields
new_bgp_attributes additional.fields
reason additional.fields
sample_rate additional.fields
proto additional.fields
basés sur l'IA additional.fields
identifier additional.fields
expected_bps additional.fields
actual_bps additional.fields
serveur additional.fields
état additional.fields
pourcentage additional.fields
tarif additional.fields
rateunit additional.fields
flags additional.fields
routeur additional.fields
interface additional.fields
ip_ver additional.fields
protocol_id additional.fields
router_name additional.fields
interface_id additional.fields
interface_name additional.fields
priorité additional.fields
log_level additional.fields
piscine additional.fields
thread_id additional.fields
délai avant expiration additional.fields
tentatives additional.fields
vulns extensions.vulns.vulnerabilities Fusionné si le champ "vulns" n'est pas vide
décroiss. metadata.description Défini sur "%{desc}: %{desc2}" si desc et desc2 ne sont pas vides, sinon desc ; écrasé par message_desc s'il n'est pas vide
desc2 metadata.description
message_desc metadata.description
event_time metadata.event_timestamp Converti à l'aide du filtre de date au format MMM jj HH:mm:ss ou MMM j HH:mm:ss, fuseau horaire Europe/Londres
desc2 metadata.event_type Définissez la valeur sur "SCAN_PROCESS" si desc2 correspond à "(DNS Amplification
message metadata.event_type
src_ip metadata.event_type
has_target_ip metadata.event_type
has_network_protocol metadata.event_type
host_name metadata.event_type
message metadata.product_event_type Définissez sur "Host Detection" si le message correspond à "Host Detection", sur "TMS Mitigation started" si le message correspond à " started" ou sur "TMS Mitigation stopped" si le message correspond à " stopped".
metadata.product_name metadata.product_name Définissez cette option sur "ARBOR_SIGHTLINE".
metadata.vendor_name metadata.vendor_name Définissez la valeur sur "NETSCOUT".
direction network.direction Définissez cette option sur "INBOUND" si la direction est "incoming".
proto network.ip_protocol Définissez sur "TCP" si proto est "6". Sinon, définissez sur network_protocol en majuscules si la correspondance est "(?i)(TCP
network_protocol network.ip_protocol
bytes network.sent_bytes Valeur copiée directement, convertie en uinteger
paquets network.sent_packets Valeur copiée directement, convertie en entier
duration network.session_duration.seconds Valeur copiée directement si elle n'est pas vide et n'est pas "0", convertie en entier
host_name principal.hostname Valeur copiée directement
src_ip principal.ip Fusionné à partir de src_ip et nameserver_ip
nameserver_ip principal.ip
espace de noms principal.namespace Valeur copiée directement
filename principal.process.file.full_path Valeur copiée directement
alert_id principal.process.pid Valeur copiée directement
prin_url principal.url Valeur copiée directement
prin_user principal.user.userid Valeur copiée directement
impact security_result.detection_fields Fusionné avec les clés "Impact" de impact, "Importance" de importance, "Signature" de signature, "Leader" de leader, "parent_managed_object" de parent_managed_object, "ID de l'alerte" de alert_id
importance security_result.detection_fields
signature security_result.detection_fields
leader security_result.detection_fields
parent_managed_object security_result.detection_fields
alert_id security_result.detection_fields
de gravité, security_result.severity Définissez sur "INFORMATIONAL" si la gravité est ["10","9"], "LOW" si elle est ["8","7"], "MEDIUM" si elle est "6", "HIGH" si elle est ["5","4"] et "CRITICAL" si elle est ["3","2","1"].
desc2 security_result.threat_status Définir sur "ACTIVE" si la description correspond à "Alerte de détection d'hôte" et que le message contient "start" et non "stop" ; définir sur "CLEARED" si la description correspond à "Alerte de détection d'hôte" et que le message contient "stop"
message security_result.threat_status
intem_host target.group.product_object_id Valeur copiée directement
dst_ip target.ip Valeur copiée directement
dst_port target.port Valeur copiée directement, convertie en entier
file_path target.process.file.full_path Valeur copiée directement
stop_time vulns.vulnerabilities.scan_end_time Converti à l'aide du filtre de date au format aaaa-MM-jj HH:mm:ss
start_time vulns.vulnerabilities.scan_start_time Converti à l'aide d'un filtre de date au format aaaa-MM-jj HH:mm:ss ou aaaa-MM-jj
msg1 event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
prin_user event.idm.read_only_udm.principal.user.userid Mappé à partir du journal des modifications
config_version event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
old_bgp_attributes event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
new_bgp_attributes event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
reason event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
sample_rate event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
proto event.idm.read_only_udm.network.ip_protocol Mappé à partir du journal des modifications
proto event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
bytes event.idm.read_only_udm.network.sent_bytes Mappé à partir du journal des modifications
packets event.idm.read_only_udm.network.sent_packets Mappé à partir du journal des modifications
flows event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
identifier event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
expected_bps event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
actual_bps event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
server event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
status event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
percent event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
rate event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
rateunit event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
flags event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
router event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
interface event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
ip_ver event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
protocol_id event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
router_name event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
interface_id event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
interface_name event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
network_protocol event.idm.read_only_udm.network.ip_protocol Mappé à partir du journal des modifications
prin_url event.idm.read_only_udm.principal.url Mappé à partir du journal des modifications
src_port event.idm.read_only_udm.principal.port Mappé à partir du journal des modifications
dst_port event.idm.read_only_udm.target.port Mappé à partir du journal des modifications
dst_ip event.idm.read_only_udm.target.ip Mappé à partir du journal des modifications
severity event.idm.read_only_udm.security_result.severity Mappé à partir du journal des modifications
Active/Cleared security_result.threat_status Mappé à partir du journal des modifications
alert_id","parent_managed_object security_result.detection_fields Mappé à partir du journal des modifications

Journal des modifications

Afficher le journal des modifications de cet analyseur

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