init_guac
This commit is contained in:
195
guacamole_test_11_26/docs/MIGRATION_SECURITY_UPDATE.md
Executable file
195
guacamole_test_11_26/docs/MIGRATION_SECURITY_UPDATE.md
Executable 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)
|
||||
**Риски:** Минимальные (откат = вернуть старый пароль)
|
||||
|
||||
Reference in New Issue
Block a user