server-monitor-manager/docs/security-model.md
2026-07-16 18:31:11 +07:00

5 KiB
Raw Blame History

Модель безопасности

Защищаемые данные

  • 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

  1. На Hub создаётся случайный enrollment token со сроком жизни не более 10 минут.
  2. Node локально генерирует WireGuard-ключ.
  3. Node предъявляет token и публичный ключ по защищённому каналу.
  4. Hub атомарно помечает token использованным, регистрирует адрес и возвращает подтверждение, которое связывает token, публичный ключ и все параметры конфигурации.
  5. Повторное использование, просроченный token и смена публичного ключа отклоняются.

До появления mTLS enrollment выполняется через отдельную ограниченную SSH-команду. Token не должен содержать приватный WireGuard-ключ.

  • мониторинг 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 должно:

  1. немедленно удалить разрешающее правило на Hub;
  2. записать желаемое состояние Disabled до отправки дополнительных команд;
  3. запретить автоматическое восстановление после reboot/reconnect;
  4. получить подтверждение применённой версии политики;
  5. показывать Partial, если подтверждение одного из узлов отсутствует;
  6. сохранить обязательную операцию для временно недоступного Node.

Не входит в первый MVP

  • выполнение произвольных root-команд;
  • хранение пользовательских приватных SSH-ключей на Hub;
  • автоматическое объединение всех серверов в flat network;
  • публичный входящий API на Node;
  • собственная криптография вместо SSH, TLS и WireGuard;
  • автоматический failover между несколькими Hub.