Community写作与编辑github.com

zw008/VMware-NSX-Security

VMware NSX DFW 微分段与安全:分布式防火墙、安全组、标签、Traceflow、IDPS——面向AI代理的MCP工具

VMware-NSX-Security 是什么?

VMware NSX Security 是一个面向 AI 代理(如 Claude Code、Cursor 等)的开源技能包,专注于 VMware NSX 分布式防火墙(DFW)的微分段和安全策略管理。它提供了 21 个 MCP 工具,涵盖 DFW 策略与规则、安全组、虚拟机标签、Traceflow 路径诊断和 IDPS 入侵检测等核心安全功能,支持通过 CLI 和 MCP 协议两种方式使用。该技能基于 NSX Policy API,适用于 NSX-T 和 NSX 4.x 环境,能够帮助开发者实现零信任微分段、自动化安全策略部署和故障排查。其设计强调安全性与可靠性,包括审计日志、依赖检查、干运行模式、双重确认等人机协同安全机制,并内置了 prompt 注入防御。作为社区维护的开源项目,它并非 VMware 官方产品,但可与其他 VMware 技能(如 vmware-nsx、vmware-aiops)配合,形成完整的虚拟化与网络安全自动化解决方案。

兼容平台✓Claude Code~Codex CLI✓Cursor
npx skills add zw008/VMware-NSX-Security

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

VMware NSX 安全

免责声明:这是一个社区维护的开源项目,与 VMware, Inc. 或 Broadcom Inc. 无关,也未获得其认可或赞助。"VMware"和"NSX"是 Broadcom 的商标。源代码以 MIT 许可证公开发布于 github.com/zw008/VMware-NSX-Security,可供审计。

VMware NSX DFW 微分段与安全——21 个用于分布式防火墙、安全组、虚拟机标签、Traceflow 和 IDPS 的 MCP 工具。

面向 NSX-T / NSX 4.x Policy API 的领域专用安全技能。 配套技能:vmware-nsx(网络)、vmware-aiops(虚拟机生命周期)、vmware-monitor(只读监控)、vmware-avi(AVI/ALB/AKO)、vmware-harden(合规基线)。 | vmware-pilot(工作流编排)| vmware-policy(审计/策略)|

本技能的功能

类别工具数量
DFW 策略列出、获取、创建、更新、删除、列出规则6
DFW 规则创建、更新、删除、获取统计4
安全组列出、获取、创建、删除4
虚拟机标签列出虚拟机标签、应用标签、移除标签3
Traceflow运行追踪、获取结果2
IDPS列出配置文件、获取状态2

总计:21 个工具(10 个只读 + 11 个写入)

快速安装

uv tool install vmware-nsx-security
vmware-nsx-security doctor

何时使用本技能

  • 列出、创建或修改 DFW 安全策略和规则
  • 基于虚拟机标签、IP 范围或网段成员资格创建安全组
  • 在虚拟机上应用或列出 NSX 标签
  • 运行 Traceflow 追踪数据包路径并诊断丢弃原因
  • 检查 IDPS 配置文件配置、签名状态和全局 IDS 设置
  • 在应用层之间实现零信任微分段

配套技能用于:

  • NSX 网段、网关、NAT、路由、IPAM → vmware-nsx
  • 虚拟机生命周期、部署、客户机操作 → vmware-aiops
  • vSphere 清单、健康状态、告警、事件 → vmware-monitor
  • 存储:iSCSI、vSAN、数据存储 → vmware-storage
  • Tanzu Kubernetes → vmware-vks
  • 负载均衡、AVI/ALB、AKO、Ingress → vmware-avi

相关技能——技能路由

用户意图推荐技能
NSX 安全:DFW 规则、安全组、IDS/IPSvmware-nsx-security ← 本技能
NSX 网络:网段、网关、NAT、路由vmware-nsx
只读 vSphere 监控、告警、事件vmware-monitor
虚拟机生命周期、部署、客户机操作vmware-aiops
存储:iSCSI、vSAN、数据存储vmware-storage
Tanzu Kubernetesvmware-vks
需要审批的多步骤工作流vmware-pilot
合规基线(CIS / 等保 / PCI-DSS)、漂移检测、LLM 修复建议vmware-harden(uv tool install vmware-harden)
负载均衡器、AVI、ALB、AKO、Ingressvmware-avi(uv tool install vmware-avi)
审计日志查询vmware-policy(vmware-audit CLI)

常见工作流

实现应用层微分段

前置检查(判断——DFW 更改可能锁定所有人):

  • 首先默认允许:任何新策略中的第一条规则必须是针对管理流量(DNS、NTP、vCenter、从跳板机的 SSH)的 ALLOW。否则,一旦添加默认拒绝,您将阻塞自己的访问。
  • 标签清查:确认您要保护的虚拟机确实携带了标签(tag list <vm>)。基于不存在的标签的组会匹配零个虚拟机——策略看似“已应用”,但实际上不执行任何操作。
  • 类别选择:应用层微分段使用 Application(规则在基础架构规则通过后较晚评估)。将 Emergency 用于常规规则会占用真正的应急响应能力。
  • 无状态?默认使用有状态——NSX DFW 是有状态的,几乎没有任何规则应该是无状态的。无状态意味着必须显式允许两个方向。
  • 始终在新规则上启用日志记录;确认后再禁用它。静默丢弃是最令人讨厌的错误。

步骤:

  1. 首先为虚拟机打标签(参见下方工作流)——空组 = 无强制
  2. 使用 create_group MCP 工具,通过 tag_scope/tag_value 创建组(标签条件匹配为 "scope|tag",例如 tier|web;注意多个条件类型——标签/IP/网段——是 OR 关系,而非 AND 关系)
  3. policy create app-microseg --category Application
  4. 按顺序添加规则:ALLOW 管理流量 → ALLOW 层内流量 → ALLOW web→app 在 app 端口 → 启用日志的 DROP any-any
  5. 在启用默认拒绝之前,使用 traceflow(见下文)进行验证

为虚拟机应用 NSX 标签

判断:标签驱动组成员身份,进而驱动 DFW 强制。拼写错误的标签会悄悄地将虚拟机排除在保护之外。应用后务必重新列出。

  1. tag list my-web-vm-01 → 记录虚拟机外部 ID,同时查看已存在的标签(避免重复/拼写冲突)
  2. tag apply <vm-external-id> --scope tier --value web
  3. 验证:再次执行 tag list my-web-vm-01 → 确认新标签已出现,并且没有意外的标签

使用 Traceflow 追踪数据包

判断:traceflow 是您对任何 DFW 更改的验证机制。在启用拒绝规则之前和每次规则修改之后运行它。不要相信“在 UI 中看起来正确”。

  1. 通过 vmware-nsx troubleshoot vm-segment 获取源虚拟机的逻辑端口 ID
  2. traceflow run <lport-id> --src-ip <src> --dst-ip <dst> --proto TCP --dst-port <port>
  3. 检查 DFW 命中链:哪个规则匹配了,ALLOW 还是 DROP,以及在哪个传输节点上
  4. 常见失败:规则在 Application 类别匹配,但被 Environment 类别中更早的 DROP 规则遮蔽——从头到尾阅读追踪结果,而不仅仅是最终裁决

检查 DFW 策略命中计数

vmware-nsx-security policy list
vmware-nsx-security rule list <policy-id>
vmware-nsx-security rule stats <policy-id> <rule-id>

多目标操作

所有命令都接受 --target <name> 参数以针对特定的 NSX Manager 进行操作:

# 默认目标
vmware-nsx-security policy list

# 特定目标
vmware-nsx-security policy list --target nsx-prod
vmware-nsx-security group list --target nsx-lab

使用模式

场景推荐原因
本地/小型模型(Ollama、Qwen)CLI约 2K tokens vs. MCP 的约 8K
云模型(Claude、GPT-4o)任一MCP 提供结构化 JSON I/O
自动化流水线MCP类型安全参数、结构化输出

MCP 工具(21 个——10 个读取,11 个写入)

所有 MCP 工具都接受可选的 target 参数。

类别工具类型描述
DFW 策略list_dfw_policies读取列出所有 DFW 安全策略,包含类别、序号和规则计数
get_dfw_policy读取获取策略详情:类别、有状态、锁定、作用域、标签
create_dfw_policy写入创建新的 DFW 策略,包含类别和序号
update_dfw_policy写入部分更新:display_name、description、sequence_number、stateful
delete_dfw_policy写入删除策略——如果存在活动规则则拒绝
list_dfw_rules读取列出策略中的规则:操作、源、目标、服务
DFW 规则create_dfw_rule写入创建规则,包含源/目标/服务/操作/作用域
update_dfw_rule写入部分更新规则字段
delete_dfw_rule写入从策略中删除规则
get_dfw_rule_stats读取获取规则的数据包/字节/会话/命中计数和 popularity_index
安全组list_groups读取列出所有安全组,包含表达式计数
get_group读取获取组详情:表达式条件 + 最多 50 个有效虚拟机成员
create_group写入创建组,包含标签/IP/网段成员资格条件(标签匹配为 "scope
delete_group写入删除组——如果被 DFW 规则/作用域引用,或引用扫描失败,则拒绝
虚拟机标签list_vm_tags读取按显示名称列出虚拟机上的 NSX 标签
apply_vm_tag写入为虚拟机应用 scope/value 标签(附加,保留现有标签)
remove_vm_tag写入从虚拟机移除 scope/value 标签(保留其他标签;可能更改动态组成员身份)
Traceflowrun_traceflow写入注入探测数据包;返回 operation_state + 逐跳观察(按 resource_type)+ dfw_hits
get_traceflow_result读取检查现有 traceflow 的 operation_state/observations
IDPSlist_idps_profiles读取列出 IDPS 配置文件,包含严重性和过滤条件
get_idps_status读取获取 IDPS 签名状态 + 全局 IDS 设置(auto_update、syslog export)

CLI 快速参考

# DFW 策略
vmware-nsx-security policy list [--target <name>]
vmware-nsx-security policy get <policy-id>
vmware-nsx-security policy create <id> --name "Display Name" --category Application [--dry-run]
vmware-nsx-security policy delete <id> [--dry-run]

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

# 安全组
vmware-nsx-security group list
vmware-nsx-security group get <group-id>
vmware-nsx-security group delete <group-id> [--dry-run]

# 标签
vmware-nsx-security tag list <vm-display-name>
vmware-nsx-security tag apply <vm-external-id> --scope env --value production [--dry-run]
vmware-nsx-security tag remove <vm-external-id> --scope env --value production [--dry-run]

# Traceflow
vmware-nsx-security traceflow run <lport-id> --src-ip &lt;src-ip&gt; --dst-ip &lt;dst-ip&gt;

# IDPS
vmware-nsx-security idps profiles
vmware-nsx-security idps status

# 诊断
vmware-nsx-security doctor [--skip-auth]

故障排除

"无法删除策略——存在活动规则"

delete_dfw_policy 在删除前会检查活动规则。使用 vmware-nsx-security rule list <policy-id> 查看需要先移除哪些规则。然后逐个删除每个规则,再重试策略删除。

"无法删除组——被 DFW 规则引用"

delete_group 会扫描所有策略中对该组的引用,包括规则的 source_groups、destination_groups 和应用作用域,以及策略级作用域。首先从这些引用中移除该组(通过 update_dfw_rule 将组路径替换为 'ANY' 或其他组),然后重试。如果错误提示引用扫描本身失败,则删除已作为预防措施中止——使用 vmware-nsx-security doctor 验证 NSX 连接,然后重试。

"未找到显示名称为...的虚拟机"

list_vm_tags 通过 NSX fabric API 按显示名称查找虚拟机。常见原因:

  1. 显示名称不匹配——NSX Manager 中的名称可能与 vCenter 中的不同。使用 vmware-monitor vm list 检查确切的 NSX fabric 显示名称。
  2. 虚拟机未注册——新部署的虚拟机可能需要一分钟才能在 NSX fabric 中显示。
  3. 存在多个同名虚拟机——使用 apply_vm_tag 并指定 external_id。

Traceflow 返回空观察结果

  1. 如果 operation_state 为 IN_PROGRESS,追踪尚未完成——使用 get_traceflow_result <traceflow-id> 再次轮询。
  2. 确认 src_lport_id 是正确的逻辑端口连接 UUID——而不是网段端口路径。通过 vmware-nsx troubleshoot vm-segment <vm> 获取。
  3. 源虚拟机必须已开机并连接到 NSX overlay 网段。
  4. 如果虚拟机位于 VLAN 支持的网段上,则不支持 Traceflow。
  5. NSX Manager 要求承载源虚拟机的传输节点可达。检查 vmware-nsx health transport-nodes。

DFW 规则统计显示零命中

新创建的规则在流量匹配之前将具有零命中计数。如果预期的流量仍然显示为零:

  1. 确认规则未禁用(list_dfw_rules 输出中的 disabled: false)。
  2. 使用 get_group 检查源/目标组成员身份是否正确。
  3. 验证规则序号——具有 ALLOW/DROP 的较低序号规则可能首先匹配。

"密码未找到"错误

密码变量约定:VMWARE_NSX_SECURITY_<TARGET_UPPER>_PASSWORD 其中连字符替换为下划线。对于目标 nsx-prod: VMWARE_NSX_SECURITY_NSX_PROD_PASSWORD。检查 ~/.vmware-nsx-security/.env。

invalid peer certificate: UnknownIssuer(uvx)

企业 TLS 代理不被 uv 捆绑的证书存储信任。使用 v1.5.15+ 的单命令形式 vmware-nsx-security mcp(无 PyPI 重新解析),或 export UV_NATIVE_TLS=true 使 uv 使用系统证书存储。

安全

  • 审计日志记录:所有写入操作都记录到 ~/.vmware/audit.db(SQLite WAL,通过 vmware-policy),包含时间戳、用户、目标、操作、参数和结果
  • 依赖检查:delete_dfw_policy 检查活动规则;delete_group 检查 DFW 规则引用——防止意外级联故障
  • 输入验证:所有 ID 都根据安全字符集(字母数字、连字符、下划线、点)进行验证;所有文本字段都经过清理以去除控制字符
  • 干运行模式:CLI 写入命令支持 --dry-run 以预览 API 调用而不执行
  • 双重确认:CLI 破坏性操作(删除)需要两个独立的确认提示
  • 凭据安全:密码仅从环境变量(.env 文件)加载,绝不从 config.yaml 加载
  • 无网络更改:无法修改网段、网关、NAT 或路由——该范围属于 vmware-nsx
  • 提示注入防御:所有 API 源字符串在包含到工具输出之前都经过 _sanitize() 处理

设置

uv tool install vmware-nsx-security
# 创建一个 .env 文件并设置您的 NSX Manager 凭据
# VMWARE_NSX_SECURITY_NSX_HOST=https://nsx-manager.example.com
# VMWARE_NSX_SECURITY_NSX_USERNAME=admin
# VMWARE_NSX_SECURITY_NSX_PASSWORD=your_password

# 验证设置
vmware-nsx-security doctor

配置

创建 ~/.vmware-nsx-security/.env:

# 默认目标
VMWARE_NSX_SECURITY_NSX_HOST=https://nsx-mgr-01.corp.local
VMWARE_NSX_SECURITY_NSX_USERNAME=admin
VMWARE_NSX_SECURITY_NSX_PASSWORD=super-secret-password

# 附加目标
VMWARE_NSX_SECURITY_LAB_NSX_HOST=https://nsx-mgr-lab.corp.local
VMWARE_NSX_SECURITY_LAB_NSX_USERNAME=admin
VMWARE_NSX_SECURITY_LAB_NSX_PASSWORD=lab-password

有关更多详细信息,请参阅完整文档。

相关技能