Document secure node enrollment
This commit is contained in:
parent
4015e3e777
commit
b92bb75b08
4 changed files with 11 additions and 10 deletions
|
|
@ -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.
|
||||||
|
|
||||||
## Принципы безопасности
|
## Принципы безопасности
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
- локально генерирует WireGuard keypair;
|
- локально генерирует WireGuard keypair;
|
||||||
- принимает одноразовый enrollment token;
|
- принимает одноразовый enrollment token;
|
||||||
- отправляет Hub только публичный ключ;
|
- отправляет Hub только публичный ключ;
|
||||||
- получает внутренний адрес и подписанную конфигурацию;
|
- получает внутренний адрес и аутентифицированное подтверждение конфигурации;
|
||||||
- создаёт только исходящее WireGuard-соединение;
|
- создаёт только исходящее WireGuard-соединение;
|
||||||
- не требует белого IP или входящего публичного порта.
|
- не требует белого IP или входящего публичного порта.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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-ключ.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue