6.0 KiB
Executable File
6.0 KiB
Executable File
🔒 Миграция: Обязательные системные credentials
⚠️ Критическое обновление безопасности
Начиная с этой версии, API ТРЕБУЕТ явной установки системных credentials.
Это изменение устраняет критическую уязвимость - захардкоженные дефолтные пароли в коде.
📋 Что изменилось?
До:
# ❌ НЕБЕЗОПАСНО: Дефолтные значения в коде
self._system_username = os.getenv("SYSTEM_ADMIN_USERNAME", "guacadmin")
self._system_password = os.getenv("SYSTEM_ADMIN_PASSWORD", "guacadmin")
После:
# ✅ БЕЗОПАСНО: Обязательные переменные окружения
self._system_username = os.getenv("SYSTEM_ADMIN_USERNAME")
self._system_password = os.getenv("SYSTEM_ADMIN_PASSWORD")
if not self._system_username or not self._system_password:
raise ValueError("Credentials required!")
🚀 Быстрая миграция (2 минуты)
Шаг 1: Генерируем безопасный пароль
openssl rand -base64 32
Пример вывода: Xk7N9pQ2vT8mL5wR3jH6yU4aF1sD0eG9
Шаг 2: Меняем пароль в Guacamole
- Войдите в Guacamole:
https://mc.exbytestudios.com - Settings → Users → guacadmin
- Change password → вставьте сгенерированный пароль
- Сохраните
Шаг 3: Обновляем production.env
cd /usr/local/guacomole_project
nano GuacamoleRemoteAccess/production.env
Найдите и обновите:
# 🔒 System Admin Account
SYSTEM_ADMIN_USERNAME=guacadmin
SYSTEM_ADMIN_PASSWORD=Xk7N9pQ2vT8mL5wR3jH6yU4aF1sD0eG9 # ⬅️ Ваш новый пароль!
⚠️ Пароли ДОЛЖНЫ совпадать!
Шаг 4: Перезапускаем API
cd GuacamoleRemoteAccess
docker compose restart remote_access_api
Шаг 5: Проверяем работу
# Проверяем запуск API
docker compose logs remote_access_api | tail -20
# ✅ Должно быть:
# "System token refreshed successfully"
# "Application startup complete"
# ❌ Если ошибка:
# "SYSTEM_ADMIN_USERNAME and SYSTEM_ADMIN_PASSWORD environment variables are required"
# → Вернитесь к Шагу 3
🔄 Для существующих установок с дефолтным паролем
Если вы ранее использовали дефолтный пароль guacadmin, ваша установка продолжит работать, но:
⚠️ Рекомендуем немедленно обновить!
# 1. Сгенерируйте новый пароль
NEW_PASSWORD=$(openssl rand -base64 32)
echo "Новый пароль: $NEW_PASSWORD"
# 2. Обновите в Guacamole UI (см. выше)
# 3. Обновите production.env
echo "SYSTEM_ADMIN_PASSWORD=$NEW_PASSWORD" >> GuacamoleRemoteAccess/production.env
# 4. Перезапустите
cd GuacamoleRemoteAccess && docker compose restart remote_access_api
🆘 Troubleshooting
Проблема: API не запускается после обновления
Логи:
ValueError: SYSTEM_ADMIN_USERNAME and SYSTEM_ADMIN_PASSWORD environment
variables are required
Решение:
# Проверьте наличие переменных в production.env
grep SYSTEM_ADMIN GuacamoleRemoteAccess/production.env
# Должно быть:
# SYSTEM_ADMIN_USERNAME=guacadmin
# SYSTEM_ADMIN_PASSWORD=какой-то_пароль
# Если пусто - добавьте:
echo "SYSTEM_ADMIN_USERNAME=guacadmin" >> GuacamoleRemoteAccess/production.env
echo "SYSTEM_ADMIN_PASSWORD=ваш_пароль_из_guacamole" >> GuacamoleRemoteAccess/production.env
Проблема: Failed to authenticate system user
Причина: Пароль в production.env не совпадает с паролем в Guacamole.
Решение:
- Войдите в Guacamole UI
- Убедитесь какой пароль установлен для guacadmin
- Обновите
SYSTEM_ADMIN_PASSWORDвproduction.env - Перезапустите API
Проблема: Хочу продолжить использовать guacadmin:guacadmin
⚠️ НЕ РЕКОМЕНДУЕТСЯ для production!
Но если очень нужно (только для dev/test):
# production.env
SYSTEM_ADMIN_USERNAME=guacadmin
SYSTEM_ADMIN_PASSWORD=guacadmin
⚠️ КРИТИЧНО: Эта конфигурация небезопасна и может быть скомпрометирована!
✅ Checklist миграции
- Сгенерирован новый пароль
- Пароль guacadmin изменен в Guacamole UI
production.envобновлен- API успешно перезапущен
- Логи подтверждают успешную аутентификацию
- Дефолтный пароль больше НЕ используется
📚 Дополнительная информация
SECURITY_SETUP.md- полная инструкция по безопасной настройкеDEPLOYMENT_API_GUIDE.md- руководство по деплоюproduction.env- файл с переменными окружения
Время миграции: ~2-5 минут
Downtime: ~10 секунд (только перезапуск API)
Риски: Минимальные (откат = вернуть старый пароль)