init_guac

This commit is contained in:
root
2025-11-25 09:58:37 +03:00
parent 68c8f0e80d
commit 9d5bdd57a7
57 changed files with 18272 additions and 0 deletions

View File

@ -0,0 +1,195 @@
# 🔒 Миграция: Обязательные системные credentials
## ⚠️ Критическое обновление безопасности
**Начиная с этой версии, API ТРЕБУЕТ явной установки системных credentials.**
Это изменение **устраняет критическую уязвимость** - захардкоженные дефолтные пароли в коде.
---
## 📋 Что изменилось?
### **До:**
```python
# ❌ НЕБЕЗОПАСНО: Дефолтные значения в коде
self._system_username = os.getenv("SYSTEM_ADMIN_USERNAME", "guacadmin")
self._system_password = os.getenv("SYSTEM_ADMIN_PASSWORD", "guacadmin")
```
### **После:**
```python
# ✅ БЕЗОПАСНО: Обязательные переменные окружения
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: Генерируем безопасный пароль**
```bash
openssl rand -base64 32
```
**Пример вывода:** `Xk7N9pQ2vT8mL5wR3jH6yU4aF1sD0eG9`
---
### **Шаг 2: Меняем пароль в Guacamole**
1. Войдите в Guacamole: `https://mc.exbytestudios.com`
2. **Settings****Users****guacadmin**
3. **Change password** → вставьте сгенерированный пароль
4. Сохраните
---
### **Шаг 3: Обновляем production.env**
```bash
cd /usr/local/guacomole_project
nano GuacamoleRemoteAccess/production.env
```
**Найдите и обновите:**
```bash
# 🔒 System Admin Account
SYSTEM_ADMIN_USERNAME=guacadmin
SYSTEM_ADMIN_PASSWORD=Xk7N9pQ2vT8mL5wR3jH6yU4aF1sD0eG9 # ⬅️ Ваш новый пароль!
```
⚠️ **Пароли ДОЛЖНЫ совпадать!**
---
### **Шаг 4: Перезапускаем API**
```bash
cd GuacamoleRemoteAccess
docker compose restart remote_access_api
```
---
### **Шаг 5: Проверяем работу**
```bash
# Проверяем запуск 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`**, ваша установка **продолжит работать**, но:
### ⚠️ **Рекомендуем немедленно обновить!**
```bash
# 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
```
**Решение:**
```bash
# Проверьте наличие переменных в 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.
**Решение:**
1. Войдите в Guacamole UI
2. Убедитесь какой пароль установлен для guacadmin
3. Обновите `SYSTEM_ADMIN_PASSWORD` в `production.env`
4. Перезапустите API
---
### Проблема: Хочу продолжить использовать `guacadmin:guacadmin`
**⚠️ НЕ РЕКОМЕНДУЕТСЯ для production!**
Но если очень нужно (только для dev/test):
```bash
# 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)
**Риски:** Минимальные (откат = вернуть старый пароль)