Автоматизированное ужесточение безопасности по модели Zero Trust и криминалистический аудит для VMware vCenter Server Appliance (VCSA)
Автоматизированный скрипт для усиления защиты приложения vCenter Server Appliance (VCSA), предназначенный для обеспечения сетевой сегментации с нулевым доверием и глубокого криминалистического аудита.
Этот инструмент предназначен для снижения критических рисков, связанных с продвинутыми постоянными угрозами (APT) и разрушительными атаками на инфраструктуру виртуализации. Обеспечивая строгую микросегментацию на уровнях 3/4 и криминалистическое журналирование команд, он нейтрализует распространённые векторы атак, такие как боковое перемещение, связь с командными центрами (C2) и антикриминалистическое вмешательство. Это предотвращает использование VCSA злоумышленниками в качестве плацдарма для компрометации нижележащих гипервизоров ESXi или выполнения масштабного саботажа инфраструктуры.
ПРОЧТИТЕ ПЕРЕД ЗАПУСКОМ: Этот инструмент изменяет конфигурацию iptables на уровне ядра ОС VCSA, минуя стандартный интерфейс VAMI.
Инструмент для усиления защиты и аудита VCSA переводит модель безопасности сервера vCenter с «Разрешено по умолчанию» на «Запрещено по умолчанию» (нулевое доверие). Он использует собственные средства управления Linux для создания усиленной плоскости управления без необходимости внешних аппаратных межсетевых экранов.
Он предназначен для сред с высокими требованиями к безопасности, где приложение vCenter считается активом уровня Tier-0.
bash, введённой администраторами, в Syslog (например, cmd="rm -rf /").Не продолжайте, пока не будет подтверждено следующее:
Откройте vcsa-hardening.sh в текстовом редакторе. Вы должны изменить блок START CONFIGURATION.
Измените массивы, чтобы указать, кому разрешён ВХОД.
# 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
)
Определяет, будет ли межсетевой экран отслеживать частоту соединений для остановки атак перебором.
ENABLE_RATE_LIMITING=true (По умолчанию): Блокирует IP-адреса, пытающиеся установить более 6 соединений/мин.ENABLE_RATE_LIMITING=false: Отключите это, если используются «шумные» автоматизированные инструменты резервного копирования (например, NetWorker), которые открывают много параллельных потоков.Выберите ОДИН из следующих режимов, переключив соответствующие логические переменные.
| Режим | Конфигурация | Описание |
|---|---|---|
| Стандартное усиление | Both false | (По умолчанию) Строгий входящий белый список. Исходящий трафик разрешён. Лучше всего для общего использования. |
| Блокировка интернета | BLOCK_INTERNET_ACCESS=true | (Рекомендуется) Разрешает внутренний трафик (RFC1918), но блокирует весь доступ к публичному интернету. |
| Нулевое доверие | ENABLE_ZERO_TRUST_MODE=true | (Самый строгий) Блокирует ВЕСЬ входящий/исходящий трафик, не указанный явно в списке. Требует идеальной настройки ADDITIONAL_PRIVATE_RANGES. |
scp vcsa-hardening.sh root@<VCSA_IP>:/root/
ssh root@<VCSA_IP>
chmod +x vcsa-hardening.sh
Всегда выполняйте это сначала. Он имитирует логику без применения изменений.
./vcsa-hardening.sh --dry-run
./vcsa-hardening.sh
Скрипт выполнит проверку безопасности, чтобы убедиться, что ваш текущий IP-адрес SSH находится в списке доверенных, прежде чем применять правила.
После применения скрипт перенаправляет журналы в стандартный поток Syslog VMware.
Выполните команду и убедитесь, что она отображается в журналах с тегом SHELL_COMMAND.
# 1. Run a test command
echo "test_audit_logging"
# 2. Check logs (Correct tag is SHELL_COMMAND)
journalctl -f | grep SHELL_COMMAND
Пример вывода: vcsa-01 logger: CMD user=root host=vcsa pwd=/root pid=1234 exit=0 cmd="echo test_audit_logging"
Попробуйте подключиться по SSH с недоверенного IP (например, через мобильную точку доступа) и проверьте журналы:
journalctl -f | grep BLOCKED
Пример вывода: kernel: SSH_BLOCKED_NEW: IN=eth0 OUT= MAC=... SRC=1.2.3.4 ...
Если вы потеряли доступ по SSH, выполните следующие действия для восстановления VCSA в состояние по умолчанию:
root.shell, чтобы перейти в Bash.# Manual rollback
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
rm /etc/systemd/scripts/ip4save
Пожалуйста, создайте issue или отправьте PR, если у вас есть проблемы, идеи или отзывы.
Copyright 2026 Google LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.