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

View file

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

View file

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

View file

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