Collecter les journaux NetApp ONTAP

Compatible avec :

Ce document explique comment collecter les journaux NetApp ONTAP via Syslog. L'analyseur extrait les champs des messages syslog à l'aide d'expressions régulières. Il mappe ensuite les champs extraits aux champs UDM (Unified Data Model) correspondants, ce qui permet de convertir les données de journaux brutes en un format structuré pour l'analyse de sécurité.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google Security Operations.
  • 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 administrateur au cluster NetApp ONTAP.
  • Assurez-vous qu'ONTAP peut communiquer avec le serveur Syslog (Bindplane).

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

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 :

    • 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.
    • 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 below port <54525> and IP <0.0.0.0> with your specific values
            listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: netapp_ontap
            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émarrer l'agent Bindplane pour appliquer les modifications

  • Sous Linux, pour redémarrer l'agent Bindplane, exécutez la commande suivante :

    sudo systemctl restart bindplane-agent
    
  • Sous Windows, pour redémarrer l'agent Bindplane, vous pouvez utiliser la console Services ou saisir la commande suivante :

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurer une destination Syslog dans ONTAP

  1. Accédez au cluster ONTAP à l'aide de SSH et remplacez <ontap-cluster-ip> par l'adresse IP de gestion de votre cluster ONTAP :

    ssh admin@<ontap-cluster-ip>
    
  2. Vérifiez les filtres et les notifications d'événements existants :

    event filter show
    event notification show
    
  3. Créez une destination Syslog, puis remplacez <syslog-server-ip> et <syslog-server-port> par les détails de votre serveur Syslog (Bindplane) :

    event notification destination create -name syslog-ems -syslog <syslog-server-ip> -syslog-port <syslog-server-port> -syslog-transport udp-unencrypted
    
  4. Autres options pour -syslog-transport :

    • udp-unencrypted (par défaut)
    • tcp-unencrypted
    • tcp-encrypted (pour TLS).
  5. Vérifiez la destination Syslog :

    event notification destination show
    

Configurer des filtres d'événements existants

  • Associez les filtres par défaut à la destination Syslog :

    event notification create -filter-name no-info-debug-events -destinations syslog-ems
    event notification create -filter-name default-trap-events -destinations syslog-ems
    

Facultatif : Créer et configurer des filtres personnalisés

  1. Filtre des événements d'authentification (connexions/déconnexions) : capture les journaux dont la description correspond à "Connexion" ou "Déconnexion" :

    event filter create -filter-name auth_events
    event filter rule add -filter-name auth_events -type include -message-name *login* -severity info
    event filter rule add -filter-name auth_events -type include -message-name *logout* -severity info
    
  2. Filtre des champs de détection de sécurité : capture les journaux liés à nmsdk_language, nmsdk_platform, nmsdk_version et netapp_version :

    event filter create -filter-name security_fields
    event filter rule add -filter-name security_fields -type include -message-name *nmsdk_language* -severity info
    event filter rule add -filter-name security_fields -type include -message-name *nmsdk_platform* -severity info
    event filter rule add -filter-name security_fields -type include -message-name *nmsdk_version* -severity info
    event filter rule add -filter-name security_fields -type include -message-name *netapp_version* -severity info
    
  3. Filtre de journaux basé sur la gravité : capture les journaux dont la gravité est "Informations" :

    event filter create -filter-name severity_info
    event filter rule add -filter-name severity_info -type include -message-name * -severity info
    
  4. Filtre d'activité réseau : capture les journaux avec src_ip et src_port :

    event filter create -filter-name network_activity
    event filter rule add -filter-name network_activity -type include -message-name *src_ip* -severity info
    event filter rule add -filter-name network_activity -type include -message-name *src_port* -severity info
    
  5. Filtre des journaux de cibles d'URL : capture les journaux contenant des informations sur les URL :

    event filter create -filter-name url_target
    event filter rule add -filter-name url_target -type include -message-name *url* -severity info
    
  6. Appliquez chaque filtre à la destination Syslog :

    event notification create -filter-name auth_events -destinations syslog-ems
    event notification create -filter-name security_fields -destinations syslog-ems
    event notification create -filter-name severity_info -destinations syslog-ems
    event notification create -filter-name network_activity -destinations syslog-ems
    event notification create -filter-name url_target -destinations syslog-ems
    
  7. Vérifier les notifications :

    event notification show
    

Table de mappage UDM

Champ de journal Mappage UDM Logique
code Non mappé
description metadata.description Extrait du message de journal à l'aide d'un modèle Grok. Présent uniquement lorsque la description est "Déconnexion" ou "Connexion".
intermediary_host intermediary.hostname Extrait du message de journal à l'aide d'un modèle Grok.
nmsdk_language security_result.detection_fields.value Extrait du message de journal à l'aide d'un modèle Grok. Cette valeur est ajoutée en tant que "valeur" à un objet detection_fields avec "key" = "nmsdk_language".
nmsdk_platform security_result.detection_fields.value Extrait du message de journal à l'aide d'un modèle Grok. Cette valeur est ajoutée en tant que "valeur" à un objet detection_fields avec "key" = "nmsdk_platform".
nmsdk_version security_result.detection_fields.value Extrait du message de journal à l'aide d'un modèle Grok. Cette valeur est ajoutée en tant que "valeur" à un objet detection_fields avec "key" = "nmsdk_version".
netapp_version security_result.detection_fields.value Extrait du message de journal à l'aide d'un modèle Grok. Cette valeur est ajoutée en tant que "valeur" à un objet detection_fields avec "key" = "netapp_version".
product_event_type metadata.product_event_type Extrait du message de journal à l'aide d'un modèle Grok.
security_result.summary security_result.summary Extrait du message de journal à l'aide d'un modèle Grok.
de gravité, security_result.severity Définissez la valeur sur "INFORMATIONAL" si la gravité est "info" (non sensible à la casse).
src_ip principal.ip Extrait du message de journal à l'aide d'un modèle Grok.
src_port principal.port Extrait du message de journal à l'aide d'un modèle Grok.
état security_result.summary Extrait du message de journal à l'aide d'un modèle Grok.
ts metadata.event_timestamp.seconds Extrait du message de journal à l'aide d'un modèle Grok et converti en code temporel.
url target.url Extrait du message de journal à l'aide d'un modèle Grok.
utilisateur target.user.userid Extrait du message de journal à l'aide d'un modèle Grok.
extensions.auth.type Définissez sur "AUTHTYPE_UNSPECIFIED" si la description est "Déconnexion" ou "Connexion".
metadata.event_type Définissez sur "USER_LOGIN" si la description est "Connexion de l'utilisateur".
metadata.event_type Définissez sur "USER_LOGOUT" si la description est "Déconnexion de l'utilisateur".
metadata.event_type Définissez la valeur sur "SCAN_UNCATEGORIZED" si la description n'est pas "Logging in" (Connexion) ou "Logging out" (Déconnexion).
metadata.log_type Défini sur "NETAPP_ONTAP".
metadata.product_name Défini sur "NETAPP_ONTAP".
metadata.vendor_name Défini sur "NETAPP_ONTAP".
target.platform Définissez la valeur sur "WINDOWS" si nmsdk_platform contient "windows" (sans tenir compte de la casse).

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