Add Windows SSH monitoring MVP #1

Merged
ochenstarik-ui merged 23 commits from agent/windows-ssh-monitoring into main 2026-07-16 15:25:19 +00:00
5 changed files with 14 additions and 14 deletions
Showing only changes of commit 2708a0a786 - Show all commits

View file

@ -9,7 +9,7 @@
- SSH-терминал и сохранённые подключения без передачи приватных ключей серверу управления; - SSH-терминал и сохранённые подключения без передачи приватных ключей серверу управления;
- группы серверов, теги, избранное и сводные предупреждения; - группы серверов, теги, избранное и сводные предупреждения;
- явное включение и ручное отключение защищённых связей между серверами; - явное включение и ручное отключение защищённых связей между серверами;
- ограниченный доступ автоматизированных инструментов, например Hermes, к выбранному серверу разработки; - ограниченный доступ любого AI-агента к выбранному серверу разработки;
- маленький Linux-агент без тяжёлой панели, Docker и отдельной базы данных на каждом узле. - маленький Linux-агент без тяжёлой панели, Docker и отдельной базы данных на каждом узле.
## Архитектура ## Архитектура
@ -19,10 +19,10 @@ Windows client -- ограниченный SSH --> главный WireGuard Hub
^ ^
| исходящие WireGuard-соединения | исходящие WireGuard-соединения
| |
Hermes / Home / другие серверы AI-агент / Home / другие серверы
``` ```
Hub объединяет узлы в приватной подсети, но по умолчанию запрещает транзит между ними. Каждая связь `источник → цель` включается и отключается отдельно. Поэтому можно оставить `Hermes → Home`, отключив только `Hermes → Server2`. Обратное направление не появляется автоматически. Hub объединяет узлы в приватной подсети, но по умолчанию запрещает транзит между ними. Каждая связь `источник → цель` включается и отключается отдельно. Поэтому можно оставить `AI-агент → Home`, отключив только `AI-агент → Server2`. Обратное направление не появляется автоматически.
Подробности: [архитектура](docs/architecture.md), [модель безопасности](docs/security-model.md), [план разработки](docs/roadmap.md) и [контракт Linux-установщика](docs/installer-contract.md). Подробности: [архитектура](docs/architecture.md), [модель безопасности](docs/security-model.md), [план разработки](docs/roadmap.md) и [контракт Linux-установщика](docs/installer-contract.md).
@ -59,7 +59,7 @@ sudo ./ochenstarik-server-monitor-manager.sh hub
3. Откройте выбранный UDP-порт WireGuard (по умолчанию `51820`) и создайте коды узлов: 3. Откройте выбранный UDP-порт WireGuard (по умолчанию `51820`) и создайте коды узлов:
```bash ```bash
sudo ochenstarik-smm node-code hermes sudo ochenstarik-smm node-code ai-agent
sudo ochenstarik-smm node-code home sudo ochenstarik-smm node-code home
sudo ochenstarik-smm node-code server2 sudo ochenstarik-smm node-code server2
``` ```
@ -80,7 +80,7 @@ sudo ochenstarik-smm node-code server2
- отдельный ключ мониторинга и pinned `known_hosts`; код регистрации Node передаётся один раз вручную; - отдельный ключ мониторинга и pinned `known_hosts`; код регистрации Node передаётся один раз вручную;
- отдельная идентичность для пользователя, устройства, агента и автоматизации; - отдельная идентичность для пользователя, устройства, агента и автоматизации;
- опасные действия требуют повторного подтверждения и попадают в неизменяемый аудит; - опасные действия требуют повторного подтверждения и попадают в неизменяемый аудит;
- доступ Hermes выдаётся отдельному Unix-пользователю и SSH-ключу с минимальными правами; - доступ AI-агенту выдаётся отдельному Unix-пользователю и SSH-ключу с минимальными правами;
- отключение Link сразу удаляет разрешённую пару из nftables на Hub, не затрагивая другие связи узла. - отключение Link сразу удаляет разрешённую пару из nftables на Hub, не затрагивая другие связи узла.
## Лицензия и секреты ## Лицензия и секреты

View file

@ -61,12 +61,12 @@ Active -> Expired -> Disabled
Control node передаёт каждому узлу только его часть конфигурации. Приватный WireGuard-ключ никогда не покидает узел. `Disconnect` удаляет peer и маршруты с обеих сторон; при недоступности одного узла команда остаётся обязательной и применяется при его следующем подключении. Control node передаёт каждому узлу только его часть конфигурации. Приватный WireGuard-ключ никогда не покидает узел. `Disconnect` удаляет peer и маршруты с обеих сторон; при недоступности одного узла команда остаётся обязательной и применяется при его следующем подключении.
## 3. Сценарий Hermes ## 3. Сценарий AI-агента
1. На домашнем сервере создаётся отдельный пользователь, например `hermes-dev`, без root-доступа. 1. На домашнем сервере создаётся отдельный пользователь, например `ai-agent-dev`, без root-доступа.
2. Рабочие каталоги и разрешённые команды ограничиваются Unix-правами, группами, контейнером или sandbox-профилем. 2. Рабочие каталоги и разрешённые команды ограничиваются Unix-правами, группами, контейнером или sandbox-профилем.
3. В Server Monitor Manager создаётся Link от сервера с Hermes к домашнему серверу только для адреса домашнего узла и SSH-порта. 3. В Server Monitor Manager создаётся Link от сервера с AI-агентом к домашнему серверу только для адреса домашнего узла и SSH-порта.
4. Hermes использует собственный SSH-ключ или короткоживущий SSH-сертификат. 4. AI-агент использует собственный SSH-ключ или короткоживущий SSH-сертификат.
5. Пользователь нажимает `Connect`; после разработки — `Disconnect`. 5. Пользователь нажимает `Connect`; после разработки — `Disconnect`.
6. Отключение Link разрывает сетевую достижимость, а отзыв SSH-сертификата/ключа остаётся вторым независимым барьером. 6. Отключение Link разрывает сетевую достижимость, а отзыв SSH-сертификата/ключа остаётся вторым независимым барьером.

View file

@ -36,13 +36,13 @@
- [ ] типизированные безопасные действия с аудитом; - [ ] типизированные безопасные действия с аудитом;
- [ ] экспорт диагностики без секретов. - [ ] экспорт диагностики без секретов.
## Этап 4 — Links и Hermes ## Этап 4 — Links и AI-агенты
- [ ] WireGuard peer helper с минимальными привилегиями; - [ ] WireGuard peer helper с минимальными привилегиями;
- [ ] policies по CIDR, протоколу, порту и TTL; - [ ] policies по CIDR, протоколу, порту и TTL;
- [ ] connect/disconnect с подтверждением обоих узлов; - [ ] connect/disconnect с подтверждением обоих узлов;
- [ ] обязательное отключение после reconnect; - [ ] обязательное отключение после reconnect;
- [ ] отдельная automation identity для Hermes; - [ ] отдельная automation identity для AI-агента;
- [ ] интеграционные тесты kill switch и частичных отказов. - [ ] интеграционные тесты kill switch и частичных отказов.
## Этап 5 — другие платформы ## Этап 5 — другие платформы

View file

@ -6,13 +6,13 @@
- device, agent, SSH и WireGuard identities; - device, agent, SSH и WireGuard identities;
- команды, терминальные сессии и аудит; - команды, терминальные сессии и аудит;
- topology серверов, адреса и метрики; - topology серверов, адреса и метрики;
- права автоматизаций, включая Hermes. - права автоматизаций, включая AI-агентов.
## Границы доверия ## Границы доверия
Desktop client, control node и каждый agent считаются отдельными субъектами. Компрометация одного агента не должна выдавать ключи других узлов или право создавать новые Links. Control node координирует публичные параметры и политики, но не хранит приватные WireGuard/SSH-ключи узлов. Desktop client, control node и каждый agent считаются отдельными субъектами. Компрометация одного агента не должна выдавать ключи других узлов или право создавать новые Links. Control node координирует публичные параметры и политики, но не хранит приватные WireGuard/SSH-ключи узлов.
В первом SSH-MVP control node отсутствует. Windows-клиент генерирует отдельный Ed25519-ключ, а сервер привязывает его к `restrict,command`. Этот ключ предназначен только для чтения ограниченного snapshot метрик и не используется для интерактивного терминала или Hermes. В первом SSH-MVP control node отсутствует. Windows-клиент генерирует отдельный Ed25519-ключ, а сервер привязывает его к `restrict,command`. Этот ключ предназначен только для чтения ограниченного snapshot метрик и не используется для интерактивного терминала или AI-агента.
## Регистрация агента ## Регистрация агента

View file

@ -278,7 +278,7 @@
<InfoBar <InfoBar
IsClosable="False" IsClosable="False"
IsOpen="True" IsOpen="True"
Message="Связь направленная: Hermes → Home разрешает Hermes обращаться к Home. Обратное направление включается отдельно." Message="Связь направленная: AI-агент → Home разрешает агенту обращаться к Home. Обратное направление включается отдельно."
Severity="Informational" /> Severity="Informational" />
</StackPanel> </StackPanel>
</Border> </Border>