Document secure node enrollment

This commit is contained in:
Ochenstarik 2026-07-16 18:31:11 +07:00
parent 4015e3e777
commit b92bb75b08
4 changed files with 11 additions and 10 deletions

View file

@ -64,15 +64,16 @@ sudo ochenstarik-smm node-code home
sudo ochenstarik-smm node-code server2
```
4. На каждом вторичном сервере запустите `sudo ./ochenstarik-server-monitor-manager.sh node`, вставьте SSH-ключ приложения и код именно этого узла. Белый IP вторичным серверам не нужен.
5. В приложении добавьте главный сервер с пользователем `ochenstarik-monitor` и отметьте `Это главный Mesh Hub`.
6. Нажмите обновление в панели связей, выберите источник и цель, затем `Разрешить` или `Отключить`.
4. На каждом вторичном сервере запустите `sudo ./ochenstarik-server-monitor-manager.sh node`, вставьте SSH-ключ приложения и код именно этого узла. Node локально создаст WireGuard-ключ и покажет запрос `SMMREQ1`.
5. На Hub выполните `sudo ochenstarik-smm node-enroll`, вставьте запрос по скрытому приглашению и верните полученный `SMMACK1` в установщик Node. Белый IP вторичным серверам не нужен.
6. В приложении добавьте главный сервер с пользователем `ochenstarik-monitor` и отметьте `Это главный Mesh Hub`.
7. Нажмите обновление в панели связей, выберите источник и цель, затем `Разрешить` или `Отключить`.
Приватный ключ хранится в локальном каталоге packaged-приложения Windows. Первый SSH-host key принимается в режиме `accept-new`, затем проверяется по отдельному `known_hosts` приложения.
Для предварительной проверки вместо запуска через pipe скачайте файл, выполните `bash -n` и просмотрите его содержимое.
Код Node содержит приватный ключ WireGuard узла. Считайте его секретом, используйте только на предназначенном сервере и не сохраняйте в Git или истории сообщений.
Enrollment-код действует 10 минут и погашается после первой успешной регистрации. Приватный WireGuard-ключ создаётся и остаётся только на Node.
## Принципы безопасности

View file

@ -34,7 +34,7 @@
- локально генерирует WireGuard keypair;
- принимает одноразовый enrollment token;
- отправляет Hub только публичный ключ;
- получает внутренний адрес и подписанную конфигурацию;
- получает внутренний адрес и аутентифицированное подтверждение конфигурации;
- создаёт только исходящее WireGuard-соединение;
- не требует белого IP или входящего публичного порта.

View file

@ -36,10 +36,10 @@
## Этап 3 — безопасная регистрация
- [ ] локальная генерация WireGuard-ключа на Node;
- [ ] одноразовый enrollment token;
- [ ] срок действия не более 10 минут;
- [ ] атомарное погашение token;
- [x] локальная генерация WireGuard-ключа на Node;
- [x] одноразовый enrollment token;
- [x] срок действия не более 10 минут;
- [x] атомарное погашение token;
- [ ] отзыв и повторная регистрация Node;
- [ ] подтверждение fingerprint Hub;
- [ ] защита desktop SSH-ключа через DPAPI.

View file

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