4.3 KiB
4.3 KiB
Модель угроз — VPN-сеть Montana
Версия: 2026-05-18
Активы
- A1: privacy трафика пользователя (содержимое, метаданные)
- A2: доступность сервиса (uptime)
- A3: untraceability подключения (DPI не должен распознать Reality)
- A4: целостность DNS multi-A pool (только живые/наши узлы)
- A5: integrity конфигов узлов и orchestrator
Атакующие
| Кто | Возможности |
|---|---|
| AT-1 Passive observer на пути | Снифать трафик, не модифицировать |
| AT-2 Active MITM (BGP/ISP) | Подменять трафик, terminate TLS |
| AT-3 DPI/цензор | Сигнатурный анализ, активный probing |
| AT-4 Compromised hosting | Image dump VM, доступ к файлам узла |
| AT-5 Insider с admin TOKEN | Изменения multi-A, добавление узлов |
| AT-6 Утечка одного privateKey | Поднять «фейковый» Reality на любом IP |
| AT-7 DDoS на :443 | Заваливать сетевой стек узла |
| AT-8 SSH brute-force | Пытаться войти на узел |
Угрозы и митигации
| ID | Угроза | Атакующий | Митигация | Остаточный риск |
|---|---|---|---|---|
| T-1 | Snooping трафика | AT-1 | TLS 1.3 + Reality auth | низкий |
| T-2 | Identity spoofing Reality-узла | AT-6 | privateKey 0600 root + не утечёт в git/hub (C1, C5) | средний (один ключ — один blast radius) |
| T-3 | DPI fingerprinting | AT-3 | Reality имитирует Google TLS handshake | средний (зависит от устойчивости Reality к новым DPI) |
| T-4 | Active probing узла | AT-3 | Reality short_id-gating: чужой клиент получает реальный Google response | низкий |
| T-5 | Подмена DNS-pool | AT-2 | Cloudflare DNSSEC выключен сейчас — РИСК; митигация: TTL 120s + клиент верифит cert через pbk | средний — см. OPEN-RISKS R-2 |
| T-6 | Compromised узел читает чужой трафик | AT-4 | freedom outbound = прямо в интернет, узел видит destination как любой VPN | принято (см. N5) |
| T-7 | Утечка admin TOKEN | AT-5 | Только в Keychain (macOS) + /etc/montana/orchestrator-admin-token (0600); ротация по требованию | низкий |
| T-8 | Утечка CF API token | AT-5 | Token scoped только на zone montana.quest; ротация по требованию | низкий |
| T-9 | Узел падает — клиент таймаут | — | Orchestrator watchdog 30s + multi-A auto-prune; iPhone DNS TTL 120s | низкий |
| T-10 | Orchestrator падает — нет prune | — | systemd Restart=on-failure; ручной trigger возможен через /register |
низкий (deg-graceful: pool остаётся как был) |
| T-11 | Crash-loop xray = CPU burn | — | StartLimitBurst=10/300s | низкий |
| T-12 | SSH brute force на узел | AT-8 | fail2ban + ufw + CrowdSec на FRA | низкий |
| T-13 | DDoS на :443 | AT-7 | Опираемся на хостинг-провайдера, BGP-уровень | средний — см. OPEN-RISKS R-3 |
| T-14 | Подмена cdn.montana.quest через CF account takeover |
AT-5+CF | CF account 2FA, API token scoped | низкий-средний |
| T-15 | Утечка privateKey через join.sh в публичный hub |
— | Закрыто 2026-05-18: privateKey в env/защищённом файле, не в скрипте (C5) | закрыто |
Доверенные элементы (assumed trusted)
- Cloudflare (DNS + API) — single trust anchor management plane
- macOS Keychain — где живут все управляющие токены
- Хостинг провайдеры (Timeweb FI/RU, THE.Hosting FRA/US) — image confidentiality
- Reality protocol (XTLS) — корректность реализации
xtls-rprx-vision
Out of scope
См. AUDIT-READINESS.md секция «Что мы НЕ гарантируем» (N1–N7).