Endurecimiento automatizado de Zero Trust y auditoría forense para VMware vCenter Server Appliance (VCSA)
Un script de hardening automatizado para el Appliance de vCenter Server de VMware (VCSA) diseñado para imponer segmentación de red Zero Trust y auditoría forense profunda.
Esta herramienta está diseñada para mitigar los riesgos críticos asociados con amenazas persistentes avanzadas (APT) y campañas destructivas dirigidas a la infraestructura de virtualización. Al imponer una microsegmentación estricta de Capa 3/4 y un registro forense de comandos, neutraliza vectores de ataque comunes como el movimiento lateral, las balizas de Comando y Control (C2) y la manipulación anti-forense. Esto evita que los adversarios utilicen la VCSA como plataforma de preparación para comprometer los hipervisores ESXi subyacentes o ejecutar un sabotaje generalizado de la infraestructura.
LEA ANTES DE EJECUTAR: Esta herramienta modifica la configuración de iptables de VCSA a nivel del kernel del SO, evitando la interfaz VAMI estándar.
La Herramienta de Hardening y Registro de VCSA cambia la postura de seguridad de un servidor vCenter de un modelo "Permitir por defecto" a un modelo "Denegar por defecto" (Zero Trust). Utiliza controles nativos de Linux para crear un plano de gestión fortalecido sin necesidad de cortafuegos de hardware externos.
Está diseñada para entornos de alta seguridad donde el appliance de vCenter se considera un activo de Nivel 0.
bash escrito por los administradores en Syslog (ej., cmd="rm -rf /").No continúe hasta que se hayan confirmado los siguientes puntos:
Abra vcsa-hardening.sh en un editor de texto. Debe modificar el bloque START CONFIGURATION.
Edite las matrices para definir quién tiene permitido ENTRAR.
# WHO CAN SSH IN (Port 22)
TRUSTED_SSH_IPS=( "192.168.10.50" ) # Admin PAW only
# WHO CAN ACCESS WEB UI / API (Port 443)
# Must include: Admins, ESXi Hosts, and Backup Servers
TRUSTED_WEB_IPS=(
"192.168.10.50" # Admin PAW
"10.20.0.0/24" # ESXi Management Subnet
"10.50.1.100" # Veeam Server
)
Controla si el cortafuegos rastrea la frecuencia de conexión para detener ataques de fuerza bruta.
ENABLE_RATE_LIMITING=true (Predeterminado): Bloquea IPs que intentan >6 conexiones/minuto.ENABLE_RATE_LIMITING=false: Desactive esto si utiliza herramientas de respaldo automatizadas "ruidosas" (ej., NetWorker) que abren muchos flujos paralelos.Seleccione UNA de las siguientes posturas alternando las variables booleanas.
| Modo | Configuración | Descripción |
|---|---|---|
| Hardening estándar | Ambos false | (Predeterminado) Lista blanca de entrada estricta. El tráfico de salida está permitido. Mejor para uso general. |
| Bloqueo de Internet | BLOCK_INTERNET_ACCESS=true | (Recomendado) Permite el tráfico interno (RFC1918) pero bloquea todo el acceso a Internet público. |
| Zero Trust | ENABLE_ZERO_TRUST_MODE=true | (Más estricto) Bloquea TODO el tráfico de entrada/salida no listado explícitamente. Requiere una configuración perfecta de ADDITIONAL_PRIVATE_RANGES. |
scp vcsa-hardening.sh root@<VCSA_IP>:/root/
ssh root@<VCSA_IP>
chmod +x vcsa-hardening.sh
Ejecute siempre esto primero. Simula la lógica sin aplicar cambios.
./vcsa-hardening.sh --dry-run
./vcsa-hardening.sh
El script realizará una verificación de seguridad para asegurarse de que su IP SSH actual esté en la lista de confianza antes de aplicar las reglas.
Una vez aplicado, el script puentea los registros al flujo estándar de Syslog de VMware.
Ejecute un comando y asegúrese de que aparezca en los registros con la etiqueta SHELL_COMMAND.
# 1. Run a test command
echo "test_audit_logging"
# 2. Check logs (Correct tag is SHELL_COMMAND)
journalctl -f | grep SHELL_COMMAND
Ejemplo de salida: vcsa-01 logger: CMD user=root host=vcsa pwd=/root pid=1234 exit=0 cmd="echo test_audit_logging"
Intente SSH desde una IP no confiable (ej., un punto de acceso móvil) y verifique los registros:
journalctl -f | grep BLOCKED
Ejemplo de salida: kernel: SSH_BLOCKED_NEW: IN=eth0 OUT= MAC=... SRC=1.2.3.4 ...
Si se bloquea a sí mismo por SSH, siga estos pasos para restaurar la VCSA a su estado predeterminado:
root.shell para entrar a Bash.# Manual rollback
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
rm /etc/systemd/scripts/ip4save
Por favor, abra un issue o envíe un PR si tiene problemas, ideas o comentarios.
Copyright 2026 Google LLC
Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puede usar este archivo excepto en cumplimiento con la Licencia. Puede obtener una copia de la Licencia en
https://www.apache.org/licenses/LICENSE-2.0
A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para el idioma específico que rige los permisos y limitaciones bajo la Licencia.