Sécurité VMware NSX
Avertissement : Ceci est un projet open-source maintenu par la communauté et n'est pas affilié à, approuvé par, ou sponsorisé par VMware, Inc. ou Broadcom Inc. « VMware » et « NSX » sont des marques commerciales de Broadcom. Le code source est publiquement vérifiable sur github.com/zw008/VMware-NSX-Security sous licence MIT.
Microsegmentation et sécurité NSX DFW — 21 outils MCP pour le pare-feu distribué, les groupes de sécurité, les tags VM, Traceflow et IDPS.
Compétence axée sur la sécurité pour l'API Policy NSX-T / NSX 4.x. Compétences complémentaires : vmware-nsx (réseau), vmware-aiops (cycle de vie des VMs), vmware-monitor (supervision en lecture seule), vmware-avi (AVI/ALB/AKO), vmware-harden (bases de conformité). | vmware-pilot (orchestration de workflows) | vmware-policy (audit/politique)
Ce que fait cette compétence
| Catégorie | Outils | Nombre |
|---|---|---|
| Politique DFW | lister, obtenir, créer, mettre à jour, supprimer, lister les règles | 6 |
| Règles DFW | créer, mettre à jour, supprimer, obtenir les stats | 4 |
| Groupes de sécurité | lister, obtenir, créer, supprimer | 4 |
| Tags VM | lister les tags VM, appliquer un tag, supprimer un tag | 3 |
| Traceflow | exécuter une trace, obtenir le résultat | 2 |
| IDPS | lister les profils, obtenir l'état | 2 |
Total : 21 outils (10 en lecture seule + 11 en écriture)
Installation rapide
uv tool install vmware-nsx-security
vmware-nsx-security doctor
Quand utiliser cette compétence
- Lister, créer ou modifier des politiques et règles de sécurité DFW
- Créer des groupes de sécurité basés sur les tags VM, plages IP ou appartenance à un segment
- Appliquer ou lister des tags NSX sur des machines virtuelles
- Exécuter Traceflow pour tracer le chemin d'un paquet et diagnostiquer les raisons de rejet
- Vérifier la configuration des profils IDPS, l'état des signatures et les paramètres IDS globaux
- Implémenter la microsegmentation zéro confiance entre les couches applicatives
Utilisez les compétences complémentaires pour :
- Segments NSX, passerelles, NAT, routage, IPAM →
vmware-nsx - Cycle de vie des VMs, déploiement, opérations invitées →
vmware-aiops - Inventaire vSphere, santé, alarmes, événements →
vmware-monitor - Stockage : iSCSI, vSAN, datastores →
vmware-storage - Tanzu Kubernetes →
vmware-vks - Équilibrage de charge, AVI/ALB, AKO, Ingress →
vmware-avi
Compétences associées — Routage des compétences
| Intention de l'utilisateur | Compétence recommandée |
|---|---|
| Sécurité NSX : règles DFW, groupes de sécurité, IDS/IPS | vmware-nsx-security ← cette compétence |
| Réseau NSX : segments, passerelles, NAT, routage | vmware-nsx |
| Supervision vSphere en lecture seule, alarmes, événements | vmware-monitor |
| Cycle de vie des VMs, déploiement, opérations invitées | vmware-aiops |
| Stockage : iSCSI, vSAN, datastores | vmware-storage |
| Tanzu Kubernetes | vmware-vks |
| Workflows multi-étapes avec approbation | vmware-pilot |
| Bases de conformité (CIS / 等保 / PCI-DSS), détection de dérive, conseiller de correction LLM | vmware-harden (uv tool install vmware-harden) |
| Équilibreur de charge, AVI, ALB, AKO, Ingress | vmware-avi (uv tool install vmware-avi) |
| Requête de journal d'audit | vmware-policy (CLI vmware-audit) |
Workflows courants
Implémenter une microsegmentation entre couches applicatives
Pré-vol (jugement — les modifications DFW peuvent bloquer tout le monde) :
- Autoriser par défaut d'abord : la toute première règle de toute nouvelle politique doit être ALLOW pour le trafic de gestion (DNS, NTP, vCenter, SSH depuis le serveur de rebond). Sans cela, dès que vous ajoutez un refus par défaut, vous bloquez votre propre accès.
- Inventaire des tags : confirmez que les VMs que vous souhaitez protéger portent bien le tag (
tag list <vm>). Un groupe basé sur un tag inexistant correspond à zéro VM — la politique semblera « appliquée » mais n'appliquera rien. - Choix de la catégorie :
Applicationpour la microsegmentation entre couches (règles évaluées tard, après le passage des règles Infrastructure). UtiliserEmergencypour des règles de routine épuisera la capacité de réponse aux incidents réels. - Sans état ? Par défaut, avec état — le DFW NSX est avec état et presque aucune règle ne devrait être sans état. Sans état = les deux directions doivent être explicitement autorisées.
- Commencez toujours avec la journalisation activée sur les nouvelles règles ; désactivez-la plus tard une fois vérifiée. Les rejets silencieux sont le pire type de bug.
Étapes :
- Taguez d'abord les VMs (voir le workflow ci-dessous) — des groupes vides = aucune application
- Créez des groupes via l'outil MCP
create_groupavectag_scope/tag_value(la condition de tag est comparée comme"scope|tag", par exempletier|web; notez que plusieurs types de critères — tag/IP/segment — sont en OU, pas en ET) policy create app-microseg --category Application- Ajoutez les règles dans l'ordre : ALLOW gestion → ALLOW intra-couche → ALLOW web→app sur port-app → DROP any-any avec journalisation
- Vérifiez avec traceflow (voir ci-dessous) avant d'activer le refus par défaut
Appliquer des tags NSX à des VMs
Jugement : les tags pilotent l'appartenance aux groupes qui pilote l'application DFW. Un tag mal orthographié exclut silencieusement une VM de la protection. Relisez toujours après application.
tag list my-web-vm-01→ enregistrez l'ID externe de la VM, voyez également quels tags existent déjà (évitez les doublons / collisions de fautes de frappe)tag apply <vm-external-id> --scope tier --value web- Vérifiez :
tag list my-web-vm-01à nouveau → confirmez que le nouveau tag est présent ET qu'aucun inattendu ne l'est
Tracer un paquet avec Traceflow
Jugement : traceflow est votre mécanisme de vérification pour toute modification DFW. Exécutez-le avant d'activer les règles de refus et après chaque modification de règle. Ne faites pas confiance à « ça a l'air correct dans l'interface. »
- Obtenez l'ID du port logique de la VM source via
vmware-nsx troubleshoot vm-segment traceflow run <lport-id> --src-ip <src> --dst-ip <dst> --proto TCP --dst-port <port>- Inspectez la chaîne de hits DFW : quelle règle a correspondu, ALLOW ou DROP, et sur quel nœud de transport
- Échec courant : la règle correspond dans la catégorie Application mais est masquée par un DROP antérieur dans la catégorie Environment — lisez la trace de haut en bas, pas seulement le verdict final
Vérifier les compteurs de hits des politiques DFW
vmware-nsx-security policy list
vmware-nsx-security rule list <policy-id>
vmware-nsx-security rule stats <policy-id> <rule-id>
Opérations multi-cibles
Toutes les commandes acceptent --target <nom> pour opérer contre un gestionnaire NSX spécifique :
# Cible par défaut
vmware-nsx-security policy list
# Cible spécifique
vmware-nsx-security policy list --target nsx-prod
vmware-nsx-security group list --target nsx-lab
Mode d'utilisation
| Scénario | Recommandé | Pourquoi |
|---|---|---|
| Modèles locaux/petits (Ollama, Qwen) | CLI | ~2K tokens contre ~8K pour MCP |
| Modèles cloud (Claude, GPT-4o) | Les deux | MCP donne une I/O JSON structurée |
| Pipelines automatisés | MCP | Paramètres typés, sortie structurée |
Outils MCP (21 — 10 lecture, 11 écriture)
Tous les outils MCP acceptent un paramètre optionnel target.
| Catégorie | Outil | Type | Description |
|---|---|---|---|
| Politique DFW | list_dfw_policies | Lecture | Liste toutes les politiques de sécurité DFW avec catégorie, séquence et nombre de règles |
get_dfw_policy | Lecture | Obtient les détails de la politique : catégorie, avec état, verrouillée, étendue, tags | |
create_dfw_policy | Écriture | Crée une nouvelle politique DFW avec catégorie et numéro de séquence | |
update_dfw_policy | Écriture | Mise à jour partielle : display_name, description, sequence_number, stateful | |
delete_dfw_policy | Écriture | Supprime la politique — refuse si des règles actives existent | |
list_dfw_rules | Lecture | Liste les règles dans une politique : action, sources, destinations, services | |
| Règles DFW | create_dfw_rule | Écriture | Crée une règle avec sources/destinations/services/action/étendue |
update_dfw_rule | Écriture | Mise à jour partielle des champs de la règle | |
delete_dfw_rule | Écriture | Supprime une règle d'une politique | |
get_dfw_rule_stats | Lecture | Obtient les compteurs de paquets/octets/sessions/hits et l'index de popularité pour une règle | |
| Groupes de sécurité | list_groups | Lecture | Liste tous les groupes de sécurité avec le nombre d'expressions |
get_group | Lecture | Obtient les détails du groupe : critères d'expression + jusqu'à 50 membres VM effectifs | |
create_group | Écriture | Crée un groupe avec des critères d'appartenance tag/IP/segment (tag comparé comme "scope | |
delete_group | Écriture | Supprime le groupe — refuse s'il est référencé par des règles/étendues DFW, ou si l'analyse de référence échoue | |
| Tags VM | list_vm_tags | Lecture | Liste les tags NSX sur une VM par nom d'affichage |
apply_vm_tag | Écriture | Applique un tag de portée/valeur à une VM (additif, préserve les tags existants) | |
remove_vm_tag | Écriture | Supprime un tag de portée/valeur d'une VM (autres tags préservés ; peut modifier l'appartenance dynamique au groupe) | |
| Traceflow | run_traceflow | Écriture | Injecte un paquet sonde ; retourne operation_state + observations saut par saut (par resource_type) + dfw_hits |
get_traceflow_result | Lecture | Vérifie operation_state/observations d'un traceflow existant | |
| IDPS | list_idps_profiles | Lecture | Liste les profils IDPS avec sévérité et critères de filtre |
get_idps_status | Lecture | Obtient l'état des signatures IDPS + paramètres IDS globaux (auto_update, export syslog) |
Référence rapide CLI
# Politique DFW
vmware-nsx-security policy list [--target <nom>]
vmware-nsx-security policy get <policy-id>
vmware-nsx-security policy create <id> --name "Nom d'affichage" --category Application [--dry-run]
vmware-nsx-security policy delete <id> [--dry-run]
# Règles DFW
vmware-nsx-security rule list <policy-id>
vmware-nsx-security rule stats <policy-id> <rule-id>
vmware-nsx-security rule delete <policy-id> <rule-id> [--dry-run]
# Groupes de sécurité
vmware-nsx-security group list
vmware-nsx-security group get <group-id>
vmware-nsx-security group delete <group-id> [--dry-run]
# Tags
vmware-nsx-security tag list <nom-affichage-vm>
vmware-nsx-security tag apply <id-externe-vm> --scope env --value production [--dry-run]
vmware-nsx-security tag remove <id-externe-vm> --scope env --value production [--dry-run]
# Traceflow
vmware-nsx-security traceflow run <id-port-logique> --src-ip <ip-source> --dst-ip <ip-destination>
# IDPS
vmware-nsx-security idps profiles
vmware-nsx-security idps status
# Diagnostics
vmware-nsx-security doctor [--skip-auth]
Dépannage
« Impossible de supprimer la politique — des règles actives existent »
delete_dfw_policy vérifie les règles actives avant de supprimer. Utilisez vmware-nsx-security rule list <policy-id> pour voir quelles règles doivent être supprimées en premier. Supprimez ensuite chaque règle individuellement avant de réessayer la suppression de la politique.
« Impossible de supprimer le groupe — référencé par des règles DFW »
delete_group analyse toutes les politiques pour les références au groupe dans source_groups, destination_groups et l'étendue appliquée à, ainsi que l'étendue au niveau de la politique. Supprimez le groupe de ces références d'abord (via update_dfw_rule en remplaçant le chemin du groupe par 'ANY' ou un autre groupe), puis réessayez. Si l'erreur indique que l'analyse de référence elle-même a échoué, la suppression a été abandonnée par précaution — vérifiez la connectivité NSX avec vmware-nsx-security doctor et réessayez.
« Aucune machine virtuelle trouvée avec display_name »
list_vm_tags recherche les VMs par nom d'affichage via l'API fabric NSX. Causes courantes :
- Inadéquation du nom d'affichage — le nom dans NSX Manager peut différer de celui de vCenter. Vérifiez
vmware-monitor vm listpour le nom d'affichage exact du fabric NSX. - VM non enregistrée — les VMs nouvellement déployées peuvent prendre une minute pour apparaître dans le fabric NSX.
- Plusieurs VMs avec le même nom — utilisez
apply_vm_tagavec l'external_id spécifique.
Traceflow retourne des observations vides
- Si
operation_stateestIN_PROGRESS, la trace n'est pas terminée — interrogez à nouveau avecget_traceflow_result <traceflow-id>. - Vérifiez que
src_lport_idest le bon UUID de pièce jointe de port logique — pas le chemin du port de segment. Obtenez-le depuisvmware-nsx troubleshoot vm-segment <vm>. - La VM source doit être allumée et connectée à un segment overlay NSX.
- Si la VM est sur un segment adossé à un VLAN, Traceflow n'est pas pris en charge.
- NSX Manager nécessite que le nœud de transport hébergeant la VM source soit accessible. Vérifiez
vmware-nsx health transport-nodes.
Les statistiques des règles DFW montrent zéro hits
Une règle nouvellement créée aura zéro compteur de hits jusqu'à ce que le trafic lui corresponde. Si le trafic attendu affiche toujours zéro :
- Confirmez que la règle n'est pas désactivée (
disabled: falsedans la sortie delist_dfw_rules). - Vérifiez que l'appartenance au groupe source/destination est correcte à l'aide de
get_group. - Vérifiez le numéro de séquence de la règle — une règle avec un numéro de séquence inférieur avec ALLOW/DROP peut correspondre en premier.
Erreur « Mot de passe introuvable »
Convention de variable de mot de passe : VMWARE_NSX_SECURITY_<TARGET_UPPER>_PASSWORD
où les traits d'union sont remplacés par des underscores. Pour la cible nsx-prod :
VMWARE_NSX_SECURITY_NSX_PROD_PASSWORD. Vérifiez ~/.vmware-nsx-security/.env.
invalid peer certificate: UnknownIssuer (uvx)
Certificat TLS d'entreprise non approuvé par le magasin de certificats intégré d'uv. Utilisez le formulaire de commande unique v1.5.15+
vmware-nsx-security mcp (pas de re-résolution PyPI), ou
export UV_NATIVE_TLS=true pour qu'uv utilise le magasin de certificats système.
Sécurité
- Journalisation d'audit : Toutes les opérations d'écriture sont enregistrées dans
~/.vmware/audit.db(SQLite WAL, via vmware-policy) avec horodatage, utilisateur, cible, opération, paramètres et résultat - Vérifications de dépendances :
delete_dfw_policyvérifie les règles actives ;delete_groupvérifie les références aux règles DFW — empêche les défaillances en cascade accidentelles - Validation des entrées : Tous les identifiants sont validés par rapport à un jeu de caractères sécurisé (alphanumériques, traits d'union, underscores, points) ; tous les champs de texte sont assainis pour supprimer les caractères de contrôle
- Mode dry-run : Les commandes d'écriture CLI prennent en charge
--dry-runpour prévisualiser les appels API sans exécution - Double confirmation : Les opérations destructives CLI (suppression) nécessitent deux invites de confirmation distinctes
- Sécurité des identifiants : Les mots de passe sont chargés uniquement à partir de variables d'environnement (fichier
.env), jamais depuisconfig.yaml - Aucune modification réseau : Impossible de modifier les segments, passerelles, NAT ou routage — cette portée appartient à
vmware-nsx - Défense contre l'injection de prompts : Toutes les chaînes provenant de l'API passent par
_sanitize()avant d'être incluses dans la sortie de l'outil
Configuration
uv tool install vmware-nsx-security
vmware-nsx-security doctor
Créez un fichier .env dans ~/.vmware-nsx-security/ :
VMWARE_NSX_URL=https://nsx-manager.example.com
VMWARE_NSX_USERNAME=admin
VMWARE_NSX_PASSWORD=your-password
Pour des cibles multiples :
VMWARE_NSX_SECURITY_NSX_PROD_URL=https://nsx-prod.example.com
VMWARE_NSX_SECURITY_NSX_PROD_USERNAME=admin
VMWARE_NSX_SECURITY_NSX_PROD_PASSWORD=prod-password
VMWARE_NSX_SECURITY_NSX_LAB_URL=https://nsx-lab.example.com
VMWARE_NSX_SECURITY_NSX_LAB_USERNAME=admin
VMWARE_NSX_SECURITY_NSX_LAB_PASSWORD=lab-password