docs: WinRM RDP update flow and SAC 0.20.18 deployment notes

Обновлены README и руководства по fallback WinRM (git→zip→клиент), SAC_PUBLIC_URL и краткому 502 при деплое.
This commit is contained in:
PTah
2026-06-20 20:03:57 +10:00
parent f3a8952947
commit d7bbcc5337
4 changed files with 20 additions and 10 deletions
+2 -2
View File
@@ -13,7 +13,7 @@
| **security-alert-center** | Сервер SAC (Ubuntu 24.04) |
| [seaca](https://git.kalinamall.ru/PapaTramp/seaca) | Android-клиент |
**Версия:** `0.20.6` · **Деплой:** `sudo /opt/sac-deploy.sh`
**Версия:** `0.20.18` · **Деплой:** `sudo /opt/sac-deploy.sh`
## Возможности
@@ -22,7 +22,7 @@
- **Оповещения** — Telegram, email, webhook, FCM (Seaca); severity + cooldown
- **UI** — события, хосты, problems, отчёты, обзор (SSE live), настройки (admin)
- **RDG flap** — бейдж на событиях 302/303, **qwinsta/logoff** по WinRM на клиентский ПК (нужен domain admin в настройках)
- **Хосты** — статус агента, inventory, обновление ssh-monitor/RDP (SSH/WinRM), тест Git/SSH/WinRM
- **Хосты** — статус агента, inventory, обновление ssh-monitor/RDP (SSH/WinRM), тест Git/SSH/WinRM; WinRM RDP: SAC тянет пакет с git, клиент скачивает zip с SAC, локальный `Deploy-LoginMonitor.ps1` (git на ПК не нужен)
- **Мобильные** — enrollment, устройства, push; Seaca: ack/resolve, qwinsta/logoff через API SAC
- **Роли** — `admin` / `monitor`; JWT, rate limit входа
+2 -2
View File
@@ -13,7 +13,7 @@ Self-hosted hub for security events from Linux and Windows agents: ingest, corre
| **security-alert-center** | SAC server (Ubuntu 24.04) |
| [seaca](https://git.kalinamall.ru/PapaTramp/seaca) | Android client |
**Version:** `0.20.6` · **Deploy:** `sudo /opt/sac-deploy.sh`
**Version:** `0.20.18` · **Deploy:** `sudo /opt/sac-deploy.sh`
## Features
@@ -22,7 +22,7 @@ Self-hosted hub for security events from Linux and Windows agents: ingest, corre
- **Notifications** — Telegram, email, webhook, FCM (Seaca)
- **Web UI** — events, hosts, problems, reports, dashboard (SSE), settings (admin)
- **RDG flap** — badge on 302/303 events, **qwinsta/logoff** via WinRM to client PC (domain admin required)
- **Hosts** — agent status, inventory, agent updates (SSH/WinRM), connectivity tests
- **Hosts** — agent status, inventory, agent updates (SSH/WinRM); WinRM RDP: SAC fetches from git, client downloads zip from SAC, runs local `Deploy-LoginMonitor.ps1` (no git on PC)
- **Mobile** — enrollment, devices, push; Seaca: ack/resolve, qwinsta/logoff via SAC API
- **Roles** — `admin` / `monitor`
+12 -6
View File
@@ -166,12 +166,18 @@ sequenceDiagram
### 4.3. B2 — Fallback (SSH / WinRM)
Если за **N минут** нет `agent.update.*` или статус `failed`:
Кнопка на карточке хоста: **«Обновить через WinRM»** / **«Fallback SSH»** (`POST .../actions/agent-update-fallback`). Лог операции — модалка сразу при старте (не ждёт конца).
| OS | Метод | Credentials |
|----|--------|-------------|
| Linux | SSH из SAC | ключ после bootstrap (§5) |
| Windows | WinRM | encrypted login/password в БД |
Если за **N минут** нет `agent.update.*` или статус `failed` — тот же fallback может сработать автоматически (если включён в настройках).
| OS | Метод | Credentials | Как работает (SAC 0.20.18+) |
|----|--------|-------------|------------------------------|
| Linux | SSH | ключ после bootstrap (§5) | SAC передаёт `REPO_URL` / `GIT_BRANCH` из **Настройки → Обновления агентов** в `update_ssh_monitor.sh` (не дефолт GitHub на хосте) |
| Windows | WinRM | encrypted login/password в БД | 1) SAC `git fetch` RDP-login-monitor на сервере → zip с UTF-8 BOM для `.ps1`<br>2) Клиент по WinRM: `Invoke-WebRequest``https://<SAC_PUBLIC_URL>/api/v1/agent/rdp-bundle/<token>`<br>3) Распаковка в `C:\ProgramData\RDP-login-monitor\_sac_staging`<br>4) `Deploy-LoginMonitor.ps1 -SourceShareRoot` (файлы в `ProgramData\RDP-login-monitor\`) |
**Windows — требования:** domain admin в **Настройки → Управление хостами → Windows**; `rdp_git_repo_url` в **Обновления агентов**; ПК должен открывать `SAC_PUBLIC_URL` (HTTPS). **Git на клиенте не нужен.** GPO/NETLOGON по-прежнему основной путь в режиме GPO.
**nginx:** для `agent-update-fallback` и SSH/WinRM-тестов — `proxy_read_timeout 960s` (см. `deploy/nginx/sac.conf.tls.example`).
---
@@ -285,7 +291,7 @@ Authorization: Bearer sac_xxx
| **4** | WinRM qwinsta с сервера SAC | ✅ |
| **5** | Settings «Обновления агентов», SSH bootstrap | частично ✅ |
| **6** | Self-update B1 | ⏳ |
| **7** | SSH bootstrap + WinRM fallback | |
| **7** | SSH bootstrap + WinRM fallback | частично ✅ (SSH/WinRM update из UI, git URL из настроек) |
| **8** | Desired config per host | ⏳ |
**Миграция:** `016_agent_commands`. Env: `SAC_RDG_FLAP_*`, `SAC_WIN_ADMIN_USER`, `SAC_WIN_ADMIN_PASSWORD`.
+4
View File
@@ -113,6 +113,10 @@ curl -sS https://sac.kalinamall.ru/health
sudo /opt/sac-deploy.sh
```
Краткий **502 Bad Gateway** в UI (~10 с) возможен при перезапуске `sac-api` — список хостов автоматически повторяет запрос; после деплоя обновите страницу.
**Важно в `sac-api.env`:** `SAC_PUBLIC_URL=https://sac.kalinamall.ru` — нужен для WinRM-обновления RDP (клиент скачивает zip с SAC). API: **2 worker** uvicorn (`deploy/systemd/sac-api.service`).
Установка скрипта (один раз): `sudo cp /opt/security-alert-center/deploy/sac-deploy.sh /opt/sac-deploy.sh && sudo chmod 755 /opt/sac-deploy.sh`
После **force-push** на upstream remote обычный `git pull` на сервере падает с «diverging branches». Скрипт `sac-deploy.sh` (актуальная версия) делает `fetch` и при необходимости `reset --hard` к upstream. **Один раз вручную**, если на сервере ещё старый скрипт: