5 KiB
Модель безопасности
Защищаемые данные
- SSH, WireGuard, device и agent identities;
- topology, внутренние адреса, метрики и состояния Links;
- команды, терминальные сессии и аудит;
- права пользователей и AI-агентов.
Границы доверия
Windows client, Hub и каждый Node считаются отдельными субъектами. Компрометация одного Node не должна выдавать ключи других узлов или право создавать новые Links.
Hub хранит только публичные WireGuard-ключи Node. Приватный ключ Node генерируется локально, не включается в enrollment token и не записывается на Hub.
SSH monitoring MVP
Windows-клиент использует отдельный Ed25519-ключ только для forced-command. Этот ключ не используется для интерактивного терминала или AI-агента. Первый host key требует явного подтверждения fingerprint; последующие подключения проверяют сохранённый known_hosts.
Приватный ключ клиента защищается Windows DPAPI и доступом текущего пользователя. Профили серверов не содержат паролей.
Регистрация Node
- На Hub создаётся случайный enrollment token со сроком жизни не более 10 минут.
- Node локально генерирует WireGuard-ключ.
- Node предъявляет token и публичный ключ по защищённому каналу.
- Hub атомарно помечает token использованным, регистрирует адрес и возвращает подтверждение, которое связывает token, публичный ключ и все параметры конфигурации.
- Повторное использование, просроченный token и смена публичного ключа отклоняются.
До появления mTLS enrollment выполняется через отдельную ограниченную SSH-команду. Token не должен содержать приватный WireGuard-ключ.
Авторизация Links
- мониторинг read-only отделён от управления;
- Link всегда содержит source, destination, CIDR, протокол и порт;
- пустой список портов не означает разрешение всех портов;
- automation identity не наследует интерактивные права владельца;
- команды имеют TTL, nonce/idempotency key и версию политики;
- Hub проверяет имена и параметры повторно, независимо от проверки desktop client.
Аудит
Записываются регистрация и удаление узла, изменение прав, создание, включение, истечение и отключение Link, а также ошибки применения. Секреты, приватные ключи и полный ввод терминала не журналируются.
Для первого MVP используется append-only JSONL с ограниченными правами и ротацией. После появления control service аудит переносится в SQLite с возможностью внешнего экспорта.
Kill switch
Отключение Link должно:
- немедленно удалить разрешающее правило на Hub;
- записать желаемое состояние
Disabledдо отправки дополнительных команд; - запретить автоматическое восстановление после reboot/reconnect;
- получить подтверждение применённой версии политики;
- показывать
Partial, если подтверждение одного из узлов отсутствует; - сохранить обязательную операцию для временно недоступного Node.
Не входит в первый MVP
- выполнение произвольных root-команд;
- хранение пользовательских приватных SSH-ключей на Hub;
- автоматическое объединение всех серверов в flat network;
- публичный входящий API на Node;
- собственная криптография вместо SSH, TLS и WireGuard;
- автоматический failover между несколькими Hub.