Collecter les journaux du gestionnaire VMware Networking and Security Virtualization (NSX)

Compatible avec :

Ce document explique comment collecter les journaux du gestionnaire VMware NSX (Networking and Security Virtualization). L'analyseur extrait les champs à l'aide de différents modèles Grok en fonction du format du message. Il effectue ensuite une analyse clé-valeur, une analyse JSON et une logique conditionnelle pour mapper les champs extraits à l'UDM, en gérant différents formats de journaux et en enrichissant les données avec un contexte supplémentaire.

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 à VMWare NSX.

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 les journaux Syslog et les 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: vmware_nsx
            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
    

Configuration de Syslog pour NSX Edge

  1. Connectez-vous au client Web vSphere.
  2. Accédez à Mise en réseau et sécurité > NSX Edges.
  3. Sélectionnez l'instance NSX Edge spécifique que vous souhaitez configurer.
  4. Accédez à Paramètres Syslog :
    1. Pour NSX 6.4.4 et versions ultérieures :
      • Accédez à Gérer > Paramètres > Paramètres de l'appareil.
      • Cliquez sur Paramètres > Modifier la configuration Syslog.
    2. Pour NSX 6.4.3 et versions antérieures :
      • Accédez à Gérer > Paramètres > Configuration.
      • Dans la boîte de dialogue Détails, cliquez sur Modifier.
  5. Configurez les détails du serveur Syslog :
    • Serveur : saisissez l'adresse IP ou le nom d'hôte du serveur Syslog (Bindplane).
    • Protocole : sélectionnez UDP ou TCP (selon votre configuration Bindplane).
    • Port : saisissez le numéro de port (selon votre configuration Bindplane).
  6. Cliquez sur OK pour enregistrer les paramètres.

Configuration de Syslog pour NSX Manager

  1. Connectez-vous à l'interface Web NSX Manager avec des identifiants d'administrateur comme suit :
    • https://<NSX-Manager-IP> ou https://<NSX-Manager-Hostname>.
  2. Accédez à Gérer les paramètres de l'appliance> Général.
  3. Cliquez sur Modifier pour configurer les paramètres du serveur Syslog.
  4. Saisissez les informations du serveur Syslog :
    • Serveur : saisissez l'adresse IP ou le nom d'hôte du serveur Syslog (Bindplane).
    • Protocole : sélectionnez UDP ou TCP (selon votre configuration Bindplane).
    • Port : saisissez le numéro de port (selon votre configuration Bindplane).
  5. Cliquez sur OK pour enregistrer les paramètres.

Configuration de Syslog pour le contrôleur NSX

  1. Connectez-vous au client Web vSphere.
  2. Accédez à Mise en réseau et sécurité > Installation et mise à niveau > Gestion > Nœuds de contrôleur NSX.
  3. Sélectionnez le NSX Manager qui gère les nœuds de contrôleur.
  4. Cliquez sur Modifier les attributs de contrôleur courants.
  5. Dans la boîte de dialogue Syslog Servers (Serveurs Syslog), cliquez sur Add (Ajouter) :
    1. Saisissez le nom ou l'adresse IP du serveur Syslog.
    2. Sélectionnez le protocole UDP (en fonction de votre configuration Bindplane).
    3. Définissez le niveau de journalisation (par exemple, INFO).
  6. Cliquez sur OK pour enregistrer les paramètres.

Table de mappage UDM

Champ de journal Mappage UDM Logique
DST event.idm.read_only_udm.target.ip L'adresse IP de destination est extraite du champ DST du journal brut.
ID event.idm.read_only_udm.metadata.product_log_id L'ID de journal du produit est extrait du champ ID du journal brut.
MAC event.idm.read_only_udm.principal.mac L'adresse MAC est extraite du champ MAC du journal brut.
ModuleName event.idm.read_only_udm.metadata.product_event_type Le type d'événement produit est extrait du champ ModuleName du journal brut.
Operation event.idm.read_only_udm.principal.resource.attribute.labels.value L'opération est extraite du champ Operation du journal brut et ajoutée en tant que libellé avec la clé "Operation".
PROTO event.idm.read_only_udm.network.ip_protocol Le protocole IP est extrait du champ PROTO du journal brut.
RES event.idm.read_only_udm.target.resource.name Le nom de la ressource cible est extrait du champ RES du journal brut.
SRC event.idm.read_only_udm.principal.ip L'adresse IP source est extraite du champ SRC du journal brut.
SPT event.idm.read_only_udm.principal.port Le port source est extrait du champ SPT du journal brut.
UserName event.idm.read_only_udm.principal.user.userid L'ID utilisateur est extrait du champ UserName du journal brut.
app_type event.idm.read_only_udm.principal.application L'application principale est extraite du champ app_type dans le journal brut.
application event.idm.read_only_udm.target.application L'application cible est extraite du champ application du journal brut.
audit event.idm.read_only_udm.principal.resource.attribute.labels.value La valeur d'audit est extraite du champ audit du journal brut et ajoutée en tant que libellé avec la clé "audit".
cancelTimeUTC event.idm.read_only_udm.principal.resource.attribute.last_update_time L'heure de la dernière mise à jour est extraite du champ cancelTimeUTC du journal brut.
client event.idm.read_only_udm.principal.ip ou event.idm.read_only_udm.principal.administrative_domain Si le champ client est une adresse IP, il est mappé à l'adresse IP principale. Sinon, il est mappé au domaine administratif principal.
comp event.idm.read_only_udm.principal.resource.attribute.labels.value La valeur du composant est extraite du champ comp du journal brut et ajoutée en tant que libellé avec la clé "Comp".
datetime event.idm.read_only_udm.metadata.event_timestamp L'horodatage de l'événement est extrait du champ datetime du journal brut.
description event.idm.read_only_udm.metadata.description La description est extraite du champ description du journal brut.
details event.idm.read_only_udm.principal.resource.attribute.labels Les détails sont extraits du champ details du journal brut et ajoutés en tant que libellés.
direction event.idm.read_only_udm.network.direction Si le champ direction est défini sur "OUT", il est mappé sur "OUTBOUND".
dst_ip event.idm.read_only_udm.target.ip L'adresse IP de destination est extraite du champ dst_ip du journal brut.
DPT event.idm.read_only_udm.target.port Le port de destination est extrait du champ DPT du journal brut.
errorCode event.idm.read_only_udm.security_result.detection_fields Le code d'erreur est extrait du champ errorCode du journal brut et ajouté en tant que champ de détection.
eventType event.idm.read_only_udm.metadata.product_event_type Le type d'événement produit est extrait du champ eventType du journal brut.
filepath event.idm.read_only_udm.principal.process.file.full_path Le chemin d'accès au fichier est extrait du champ filepath du journal brut.
hostname event.idm.read_only_udm.principal.ip Le nom d'hôte est extrait du champ hostname du journal brut et, s'il s'agit d'une adresse IP, il est mappé à l'adresse IP principale.
kv_data Différents champs UDM Les paires clé/valeur de kv_data sont mappées à différents champs UDM en fonction de leurs clés.
kv_data1 Différents champs UDM Les paires clé/valeur de kv_data1 sont mappées à différents champs UDM en fonction de leurs clés.
kv_data2 Différents champs UDM Les paires clé/valeur de kv_data2 sont mappées à différents champs UDM en fonction de leurs clés.
kv_data3 Différents champs UDM Les paires clé/valeur de kv_data3 sont mappées à différents champs UDM en fonction de leurs clés.
kv_data4 Différents champs UDM Les paires clé/valeur de kv_data4 sont mappées à différents champs UDM en fonction de leurs clés.
level event.idm.read_only_udm.security_result.severity Si le champ level est défini sur "INFO", il est mappé sur "INFORMATIONAL". Si la valeur est "ERROR", elle est mappée sur "ERROR".
managedExternally event.idm.read_only_udm.principal.resource.attribute.labels.value La valeur managedExternally est extraite du champ managedExternally du journal brut et ajoutée en tant que libellé avec la clé "managedExternally".
message Différents champs UDM Le champ "Message" est analysé pour extraire différents champs UDM.
message_data event.idm.read_only_udm.principal.resource.attribute.labels.value Les données du message sont extraites du champ message_data du journal brut et ajoutées en tant que libellé avec la clé "message".
network_status event.idm.read_only_udm.additional.fields L'état du réseau est extrait du champ network_status du journal brut et ajouté en tant que champ supplémentaire avec la clé "Network_Connection_Status".
new_value Différents champs event.idm.read_only_udm.target La nouvelle valeur est extraite du champ new_value du journal brut et utilisée pour remplir différents champs cibles.
node event.idm.read_only_udm.principal.resource.attribute.labels.value La valeur du nœud est extraite du champ node du journal brut et ajoutée en tant que libellé avec la clé "node".
old_value Différents champs UDM L'ancienne valeur est extraite du champ old_value du journal brut et utilisée pour remplir différents champs UDM.
payload Différents champs UDM La charge utile est extraite du champ payload du journal brut et utilisée pour remplir différents champs UDM.
pid event.idm.read_only_udm.target.process.pid L'ID du processus est extrait du champ pid du journal brut.
reqId event.idm.read_only_udm.metadata.product_log_id L'ID de journal du produit est extrait du champ reqId du journal brut.
resourceId event.idm.read_only_udm.principal.resource.product_object_id L'ID de l'objet produit est extrait du champ resourceId du journal brut.
s2comp event.idm.read_only_udm.principal.resource.attribute.labels.value La valeur s2comp est extraite du champ s2comp du journal brut et ajoutée en tant que libellé avec la clé "s2comp".
ses event.idm.read_only_udm.network.session_id L'ID de session est extrait du champ ses du journal brut.
src_host event.idm.read_only_udm.principal.hostname Le nom d'hôte principal est extrait du champ src_host du journal brut.
src_ip event.idm.read_only_udm.principal.ip L'adresse IP source est extraite du champ src_ip du journal brut.
src_ip1 event.idm.read_only_udm.principal.ip L'adresse IP source est extraite du champ src_ip1 du journal brut.
src_port event.idm.read_only_udm.principal.port Le port source est extrait du champ src_port du journal brut.
startTimeUTC event.idm.read_only_udm.principal.resource.attribute.creation_time L'heure de création est dérivée du champ startTimeUTC du journal brut.
subcomp event.idm.read_only_udm.network.application_protocol ou event.idm.read_only_udm.principal.resource.attribute.labels.value Si le champ subcomp est défini sur "http", il est mappé sur "HTTP". Dans le cas contraire, il est ajouté en tant que libellé avec la clé "Sub Comp".
tname event.idm.read_only_udm.principal.resource.attribute.labels.value La valeur tname est extraite du champ tname du journal brut et ajoutée en tant que libellé avec la clé "tname".
type event.idm.read_only_udm.metadata.product_event_type Le type d'événement produit est extrait du champ type du journal brut.
uid event.idm.read_only_udm.principal.user.userid L'ID utilisateur est extrait du champ uid du journal brut.
update event.idm.read_only_udm.principal.resource.attribute.labels.value La valeur de mise à jour est extraite du champ update du journal brut et ajoutée en tant que libellé avec la clé "update".
user event.idm.read_only_udm.principal.user.user_display_name Le nom à afficher de l'utilisateur est extrait du champ user du journal brut.
vmw_cluster event.idm.read_only_udm.target.resource.name Le nom de la ressource cible est extrait du champ vmw_cluster du journal brut.
vmw_datacenter event.idm.read_only_udm.target.resource.attribute.labels.value La valeur vmw_datacenter est extraite du champ vmw_datacenter du journal brut et ajoutée en tant que libellé avec la clé "vmw_datacenter".
vmw_host event.idm.read_only_udm.target.hostname ou event.idm.read_only_udm.target.ip Si le champ vmw_host est un nom d'hôte, il est mappé au nom d'hôte cible. Sinon, s'il s'agit d'une adresse IP, elle est mappée à l'adresse IP cible.
vmw_object_id event.idm.read_only_udm.target.resource.product_object_id L'ID de l'objet produit est extrait du champ vmw_object_id du journal brut.
vmw_product event.idm.read_only_udm.target.application L'application cible est extraite du champ vmw_product du journal brut.
vmw_vcenter event.idm.read_only_udm.target.cloud.availability_zone La zone de disponibilité est extraite du champ vmw_vcenter du journal brut.
vmw_vcenter_id event.idm.read_only_udm.target.resource.attribute.labels.value La valeur vmw_vcenter_id est extraite du champ vmw_vcenter_id du journal brut et ajoutée en tant que libellé avec la clé "vmw_vcenter_id".
vmw_vr_ops_appname event.idm.read_only_udm.intermediary.application L'application intermédiaire est extraite du champ vmw_vr_ops_appname du journal brut.
vmw_vr_ops_clustername event.idm.read_only_udm.intermediary.resource.name Le nom de la ressource intermédiaire est extrait du champ vmw_vr_ops_clustername du journal brut.
vmw_vr_ops_clusterrole event.idm.read_only_udm.intermediary.resource.attribute.roles.name Le nom du rôle de ressource intermédiaire est extrait du champ vmw_vr_ops_clusterrole du journal brut.
vmw_vr_ops_hostname event.idm.read_only_udm.intermediary.hostname Le nom d'hôte intermédiaire est extrait du champ vmw_vr_ops_hostname du journal brut.
vmw_vr_ops_id event.idm.read_only_udm.intermediary.resource.product_object_id L'ID de l'objet produit intermédiaire est extrait du champ vmw_vr_ops_id du journal brut.
vmw_vr_ops_logtype event.idm.read_only_udm.intermediary.resource.attribute.labels.value La valeur vmw_vr_ops_logtype est extraite du champ vmw_vr_ops_logtype du journal brut et ajoutée en tant que libellé avec la clé "vmw_vr_ops_logtype".
vmw_vr_ops_nodename event.idm.read_only_udm.intermediary.resource.attribute.labels.value La valeur vmw_vr_ops_nodename est extraite du champ vmw_vr_ops_nodename du journal brut et ajoutée en tant qu'étiquette avec la clé "vmw_vr_ops_nodename". Déterminée par une série d'instructions conditionnelles basées sur les valeurs d'autres champs. Les valeurs possibles sont USER_LOGIN, NETWORK_CONNECTION, STATUS_UPDATE et GENERIC_EVENT. Codé en dur sur "VMWARE_NSX". Codé en dur sur "VMWARE_NSX". Codé en dur sur "VMWARE_NSX". Définissez la valeur sur "AUTHTYPE_UNSPECIFIED" si Operation est défini sur "LOGIN" et que target_details n'est pas vide, ou si message contient "authentication failure" (échec de l'authentification) et que application n'est pas vide. Définissez-le sur "SSH" si PROTO est "ssh2", ou sur "HTTP" si subcomp est "http". Déterminée par une série d'instructions conditionnelles basées sur les valeurs d'autres champs. Les valeurs possibles sont ALLOW et BLOCK. Définissez sur "VIRTUAL_MACHINE" si vmw_cluster n'est pas vide.

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