Seguridad VMware NSX
Aviso: Este es un proyecto de código abierto mantenido por la comunidad y no está afiliado, respaldado ni patrocinado por VMware, Inc. o Broadcom Inc. "VMware" y "NSX" son marcas registradas de Broadcom. El código fuente es auditado públicamente en github.com/zw008/VMware-NSX-Security bajo la licencia MIT.
Microsegmentación y seguridad de VMware NSX DFW: 21 herramientas MCP para firewall distribuido, grupos de seguridad, etiquetas de VM, Traceflow e IDPS.
Skill de seguridad especializado para la API de políticas NSX-T / NSX 4.x. Skills complementarios: vmware-nsx (redes), vmware-aiops (ciclo de vida de VM), vmware-monitor (monitoreo de solo lectura), vmware-avi (AVI/ALB/AKO), vmware-harden (líneas base de cumplimiento). | vmware-pilot (orquestación de flujos de trabajo) | vmware-policy (auditoría/política)
Qué Hace Este Skill
| Categoría | Herramientas | Conteo |
|---|---|---|
| Políticas DFW | listar, obtener, crear, actualizar, eliminar, listar reglas | 6 |
| Reglas DFW | crear, actualizar, eliminar, obtener estadísticas | 4 |
| Grupos de Seguridad | listar, obtener, crear, eliminar | 4 |
| Etiquetas de VM | listar etiquetas, aplicar etiqueta, eliminar etiqueta | 3 |
| Traceflow | ejecutar trace, obtener resultado | 2 |
| IDPS | listar perfiles, obtener estado | 2 |
Total: 21 herramientas (10 de solo lectura + 11 de escritura)
Instalación Rápida
uv tool install vmware-nsx-security
vmware-nsx-security doctor
Cuándo Usar Este Skill
- Listar, crear o modificar políticas y reglas de seguridad DFW
- Crear grupos de seguridad basados en etiquetas de VM, rangos IP o membresía de segmento
- Aplicar o listar etiquetas NSX en máquinas virtuales
- Ejecutar Traceflow para trazar la ruta de un paquete y diagnosticar razones de caída
- Verificar configuración de perfiles IDPS, estado de firmas y configuraciones globales de IDS
- Implementar microsegmentación de confianza cero entre capas de aplicación
Usa skills complementarios para:
- Segmentos NSX, puertas de enlace, NAT, enrutamiento, IPAM →
vmware-nsx - Ciclo de vida de VM, despliegue, operaciones invitadas →
vmware-aiops - Inventario de vSphere, salud, alarmas, eventos →
vmware-monitor - Almacenamiento: iSCSI, vSAN, datastores →
vmware-storage - Tanzu Kubernetes →
vmware-vks - Balanceo de carga, AVI/ALB, AKO, Ingress →
vmware-avi
Skills Relacionados — Enrutamiento de Skills
| Intención del Usuario | Skill Recomendado |
|---|---|
| Seguridad NSX: reglas DFW, grupos de seguridad, IDS/IPS | vmware-nsx-security ← este skill |
| Redes NSX: segmentos, puertas de enlace, NAT, enrutamiento | vmware-nsx |
| Monitoreo de solo lectura de vSphere, alarmas, eventos | vmware-monitor |
| Ciclo de vida de VM, despliegue, operaciones invitadas | vmware-aiops |
| Almacenamiento: iSCSI, vSAN, datastores | vmware-storage |
| Tanzu Kubernetes | vmware-vks |
| Flujos de trabajo de múltiples pasos con aprobación | vmware-pilot |
| Líneas base de cumplimiento (CIS / 等保 / PCI-DSS), detección de desviaciones, asesor de corrección con LLM | vmware-harden (uv tool install vmware-harden) |
| Balanceador de carga, AVI, ALB, AKO, Ingress | vmware-avi (uv tool install vmware-avi) |
| Consulta de registros de auditoría | vmware-policy (vmware-audit CLI) |
Flujos de Trabajo Comunes
Implementar Microsegmentación de Capas de Aplicación
Pre-vuelo (juicio — los cambios DFW pueden bloquear a todos):
- Permitir por defecto primero: la primera regla en cualquier política nueva debe ser ALLOW para tráfico de gestión (DNS, NTP, vCenter, SSH desde jumphost). Sin ella, en el momento que agregas un denegar por defecto, bloqueas tu propio acceso.
- Inventario de etiquetas: confirma que las VM que pretendes proteger realmente tengan la etiqueta (
tag list <vm>). Un grupo basado en una etiqueta inexistente coincide con cero VM — la política aparecerá "aplicada" pero no hará cumplir nada. - Elección de categoría:
Applicationpara microsegmentación entre capas (las reglas se evalúan tarde, después de que las reglas de Infraestructura pasen). UsarEmergencypara reglas rutinarias agotará la capacidad real de respuesta a incidentes. - ¿Sin estado? Por defecto, con estado — NSX DFW tiene estado y casi ninguna regla debe ser sin estado. Sin estado = ambas direcciones deben permitirse explícitamente.
- Siempre comienza con registro habilitado en las reglas nuevas; desactívalo después de verificar. Las caídas silenciosas son el peor tipo de error.
Pasos:
- Etiqueta las VM primero (ver flujo de trabajo abajo) — grupos vacíos = sin cumplimiento
- Crea grupos mediante la herramienta MCP
create_groupcontag_scope/tag_value(la condición de etiqueta se empareja como"scope|tag", por ejemplotier|web; nota que múltiples tipos de criterios — etiqueta/IP/segmento — se combinan con OR, no AND) policy create app-microseg --category Application- Agrega reglas en orden: ALLOW management → ALLOW intra-tier → ALLOW web→app en puerto de app → DROP any-any con registro
- Verifica con traceflow (ver abajo) antes de habilitar denegar por defecto
Aplicar Etiquetas NSX a VM
Juicio: las etiquetas determinan la membresía de grupo, que a su vez determina el cumplimiento DFW. Una etiqueta mal escrita excluye silenciosamente una VM de la protección. Siempre vuelve a listar después de aplicar.
tag list my-web-vm-01→ registra el ID externo de la VM, también mira qué etiquetas ya existen (evita duplicados / colisiones tipográficas)tag apply <vm-external-id> --scope tier --value web- Verificar:
tag list my-web-vm-01nuevamente → confirma que la nueva etiqueta está presente Y no hay ninguna inesperada
Trazar un Paquete con Traceflow
Juicio: traceflow es tu mecanismo de verificación para cualquier cambio DFW. Ejecútalo antes de habilitar reglas de denegar y después de cada modificación de regla. No confíes en "se ve bien en la interfaz."
- Obtén el ID de puerto lógico de la VM fuente mediante
vmware-nsx troubleshoot vm-segment traceflow run <lport-id> --src-ip <src> --dst-ip <dst> --proto TCP --dst-port <port>- Inspecciona la cadena de aciertos DFW: qué regla coincidió, ALLOW o DROP, y en qué nodo de transporte
- Error común: la regla coincide en la categoría Application pero está oculta por un DROP anterior en la categoría Environment — lee el trace de arriba a abajo, no solo el veredicto final
Verificar Contadores de Aciertos de Políticas DFW
vmware-nsx-security policy list
vmware-nsx-security rule list <policy-id>
vmware-nsx-security rule stats <policy-id> <rule-id>
Operaciones Multi-Destino
Todos los comandos aceptan --target <nombre> para operar contra un NSX Manager específico:
# Destino predeterminado
vmware-nsx-security policy list
# Destino específico
vmware-nsx-security policy list --target nsx-prod
vmware-nsx-security group list --target nsx-lab
Modo de Uso
| Escenario | Recomendado | Por qué |
|---|---|---|
| Modelos locales/pequeños (Ollama, Qwen) | CLI | ~2K tokens vs ~8K para MCP |
| Modelos en la nube (Claude, GPT-4o) | Cualquiera | MCP proporciona E/S JSON estructurada |
| Pipelines automatizados | MCP | Parámetros seguros por tipo, salida estructurada |
Herramientas MCP (21 — 10 lectura, 11 escritura)
Todas las herramientas MCP aceptan un parámetro opcional target.
| Categoría | Herramienta | Tipo | Descripción |
|---|---|---|---|
| Política DFW | list_dfw_policies | Lectura | Lista todas las políticas de seguridad DFW con categoría, secuencia y conteo de reglas |
get_dfw_policy | Lectura | Obtiene detalles de política: categoría, con estado, bloqueada, alcance, etiquetas | |
create_dfw_policy | Escritura | Crea una nueva política DFW con categoría y número de secuencia | |
update_dfw_policy | Escritura | Actualización parcial: display_name, description, sequence_number, stateful | |
delete_dfw_policy | Escritura | Elimina política — rechaza si existen reglas activas | |
list_dfw_rules | Lectura | Lista reglas en una política: acción, fuentes, destinos, servicios | |
| Reglas DFW | create_dfw_rule | Escritura | Crea regla con fuentes/destinos/servicios/acción/alcance |
update_dfw_rule | Escritura | Actualización parcial de campos de regla | |
delete_dfw_rule | Escritura | Elimina una regla de una política | |
get_dfw_rule_stats | Lectura | Obtiene conteos de paquetes/bytes/sesiones/aciertos y popularity_index para una regla | |
| Grupos de Seguridad | list_groups | Lectura | Lista todos los grupos de seguridad con conteo de expresiones |
get_group | Lectura | Obtiene detalles del grupo: criterios de expresión + hasta 50 miembros VM efectivos | |
create_group | Escritura | Crea grupo con criterios de membresía por etiqueta/IP/segmento (la etiqueta se empareja como "scope|tag"; múltiples criterios se combinan con OR) | |
delete_group | Escritura | Elimina grupo — rechaza si está referenciado por reglas/alcances DFW, o si el escaneo de referencias falla | |
| Etiquetas de VM | list_vm_tags | Lectura | Lista etiquetas NSX en una VM por nombre visible |
apply_vm_tag | Escritura | Aplica una etiqueta de alcance/valor a una VM (aditiva, preserva etiquetas existentes) | |
remove_vm_tag | Escritura | Elimina una etiqueta de alcance/valor de una VM (otras etiquetas preservadas; puede cambiar membresía dinámica de grupo) | |
| Traceflow | run_traceflow | Escritura | Inyecta paquete de prueba; devuelve operation_state + observaciones salto por salto (por resource_type) + dfw_hits |
get_traceflow_result | Lectura | Verifica operation_state/observaciones de un traceflow existente | |
| IDPS | list_idps_profiles | Lectura | Lista perfiles IDPS con severidad y criterios de filtro |
get_idps_status | Lectura | Obtiene estado de firmas IDPS + configuraciones globales de IDS (auto_update, exportación syslog) |
Referencia Rápida de CLI
# Política DFW
vmware-nsx-security policy list [--target <nombre>]
vmware-nsx-security policy get <policy-id>
vmware-nsx-security policy create <id> --name "Nombre Visible" --category Application [--dry-run]
vmware-nsx-security policy delete <id> [--dry-run]
# Reglas 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]
# Grupos de Seguridad
vmware-nsx-security group list
vmware-nsx-security group get <group-id>
vmware-nsx-security group delete <group-id> [--dry-run]
# Etiquetas
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 <src-ip> --dst-ip <dst-ip>
# IDPS
vmware-nsx-security idps profiles
vmware-nsx-security idps status
# Diagnóstico
vmware-nsx-security doctor [--skip-auth]
Solución de Problemas
"No se puede eliminar política — existen reglas activas"
delete_dfw_policy verifica reglas activas antes de eliminar. Usa vmware-nsx-security rule list <policy-id> para ver qué reglas necesitan eliminarse primero. Luego elimina cada regla individualmente antes de reintentar la eliminación de la política.
"No se puede eliminar grupo — está referenciado por reglas DFW"
delete_group escanea todas las políticas en busca de referencias al grupo en source_groups, destination_groups y alcance applied-to de las reglas, más alcance a nivel de política. Elimina el grupo de esas referencias primero (mediante update_dfw_rule reemplazando la ruta del grupo con 'ANY' u otro grupo), luego reintenta. Si el error dice que el escaneo de referencias falló, la eliminación se abortó como precaución — verifica la conectividad NSX con vmware-nsx-security doctor y reintenta.
"No se encontró ninguna máquina virtual con display_name"
list_vm_tags busca VM por nombre visible a través de la API de fabric NSX. Causas comunes:
- El nombre visible no coincide — el nombre en NSX Manager puede diferir del de vCenter. Verifica
vmware-monitor vm listpara el nombre visible exacto del fabric NSX. - VM no registrada — las VM recién desplegadas pueden tardar un minuto en aparecer en el fabric NSX.
- Múltiples VM con el mismo nombre — usa
apply_vm_tagcon el external_id específico.
Traceflow devuelve observaciones vacías
- Si
operation_stateesIN_PROGRESS, el trace no ha terminado — vuelve a consultar conget_traceflow_result <traceflow-id>. - Verifica que
src_lport_idsea el UUID de adjunto de puerto lógico correcto — no la ruta del puerto de segmento. Obténlo devmware-nsx troubleshoot vm-segment <vm>. - La VM fuente debe estar encendida y conectada a un segmento overlay NSX.
- Si la VM está en un segmento respaldado por VLAN, Traceflow no es compatible.
- NSX Manager requiere que el nodo de transporte que aloja la VM fuente sea accesible. Verifica
vmware-nsx health transport-nodes.
Las estadísticas de reglas DFW muestran cero aciertos
Una regla recién creada tendrá conteos de aciertos cero hasta que el tráfico coincida con ella. Si el tráfico esperado aún muestra cero:
- Confirma que la regla no está deshabilitada (
disabled: falseen la salida delist_dfw_rules). - Verifica que la membresía del grupo fuente/destino sea correcta usando
get_group. - Verifica el número de secuencia de la regla — una regla de secuencia inferior con ALLOW/DROP puede estar coincidiendo primero.
Error "Password not found"
Convención de variable de contraseña: VMWARE_NSX_SECURITY_<TARGET_UPPER>_PASSWORD
donde los guiones se reemplazan por guiones bajos. Para el destino nsx-prod:
VMWARE_NSX_SECURITY_NSX_PROD_PASSWORD. Verifica ~/.vmware-nsx-security/.env.
invalid peer certificate: UnknownIssuer (uvx)
Proxy TLS corporativo no confiado por el almacén de certificados incluido de uv. Usa la forma de comando único v1.5.15+
vmware-nsx-security mcp (sin re-resolución de PyPI), o
export UV_NATIVE_TLS=true para que uv use el almacén de certificados del sistema.
Seguridad
- Registro de auditoría: Todas las operaciones de escritura se registran en
~/.vmware/audit.db(SQLite WAL, mediante vmware-policy) con marca de tiempo, usuario, destino, operación, parámetros y resultado - Verificaciones de dependencia:
delete_dfw_policyverifica reglas activas;delete_groupverifica referencias a reglas DFW — previene fallos en cascada accidentales - Validación de entrada: Todos los IDs se validan contra un conjunto de caracteres seguro (alfanuméricos, guiones, guiones bajos, puntos); todos los campos de texto se sanitizan para eliminar caracteres de control
- Modo dry-run: Los comandos de escritura de CLI admiten
--dry-runpara previsualizar llamadas API sin ejecutarlas - Doble confirmación: Las operaciones destructivas de CLI (eliminación) requieren dos avisos de confirmación separados
- Seguridad de credenciales: Las contraseñas se cargan solo desde variables de entorno (archivo
.env), nunca desdeconfig.yaml - Sin cambios de red: No puede modificar segmentos, puertas de enlace, NAT o enrutamiento — ese alcance pertenece a
vmware-nsx - Defensa contra inyección de prompts: Todas las cadenas originadas en la API se pasan a través de
_sanitize()antes de incluirlas en la salida de la herramienta
Configuración
uv tool install vmware-nsx-security