9.5 KiB
Threat model — Montana VPN (Reality endpoint)
Что закрывает Reality + decoy nginx, а что — нет. Рассматриваются классы атак, не конкретные техники, которые меняются по мере появления новых DPI-плагинов.
Покрытые атаки
1. Пассивный DPI (signature-based)
Атака. Провайдер/госрегулятор смотрит TLS ClientHello каждого исходящего соединения. Знакомые VPN-протоколы (WireGuard handshake, OpenVPN, классический Shadowsocks с ASCII-маркерами) определяются по сигнатурам и блокируются.
Закрытие. Reality прокидывает реальный TLS handshake к www.googletagmanager.com. С точки зрения DPI — это легитимный TLS 1.3 к Google, fingerprint-неотличим от обычного HTTPS-браузера. Дополнительно xtls-rprx-vision устраняет «TLS-in-TLS» fingerprint после handshake.
2. Active probing — connection replay
Атака. Цензор замечает «подозрительный» :443-эндпоинт. Скриптом подключается на тот же IP с тем же ClientHello, что использовал реальный клиент, и смотрит ответ. Если сервер отдаёт паттерн VPN-протокола (короткий handshake, специфический response), цель идентифицирована.
Закрытие. Reality верифицирует short_id + handshake-secret клиента. Если они не совпадают (а у пробера их нет) — Reality проксирует запрос к настоящему www.googletagmanager.com:443 и отдаёт пробру реальный Google response. Пробер видит только Google.
3. Active probing — port scan
Атака. Цензор сканирует все open-ports VPS. Хочет понять «зачем» :443 открыт.
Закрытие. :443 → реальный TLS handshake к Google (через Reality fallback). :80 → nginx static decoy «It works!». Всё выглядит как обычный VPS с дефолтной конфигурацией. Никаких VPN-маркеров.
4. SNI fingerprinting + ClientHello fingerprinting
Атака. DPI смотрит TLS ClientHello extensions, ECH, GREASE, supported groups, signature algorithms. Сравнивает с известными VPN-клиентами.
Закрытие. Xray uTLS-фингерпринт chrome — точная репликация Chrome 124 ClientHello. Отличить от настоящего Chrome — невозможно без поломки протокола.
5. SSH brute-force
Атака. Сканеры пробуют password/key brute-force через SSH :22.
Закрытие. fail2ban (maxretry=3, ban 1h→1w incremental). Crowdsec (community IP-reputation, auto-ban 4h). Дополнительно рекомендуется PasswordAuthentication no в sshd, ключ-only.
6. ASN-based blocking
Атака. Цензор блокирует целые AS-номера известных VPN-провайдеров (DigitalOcean, Vultr, OVH).
Закрытие частичное. Helsinki (THE.Hosting / IPRoute Latvia / etc) — менее известный провайдер чем DigitalOcean. Но если цензор расширяет список AS — рано или поздно VPS будет в списке. Полное закрытие — резидентный IP (домашний) или ASN ротация (выходит за scope этого пакета).
НЕ покрытые атаки
1. Endpoint compromise
Если на клиентском устройстве установлен RAT/spyware — VPN не помогает. Атакующий читает данные до шифрования.
Митигация: secure boot, hardware-key auth, regular OS patches, минимизация attack surface.
2. Global passive adversary
Атакующий который видит одновременно трафик клиента (от него к Helsinki) и трафик Helsinki (к target site). Через timing-correlation и packet-size patterns может с высокой вероятностью восстановить связь «client → target», даже если содержимое зашифровано.
Митигация: Tor (multi-hop, traffic mixing). Для среднего пользователя global passive adversary — нерелевантная угроза (требует ресурсов NSA-class).
3. Server-side compromise
Если VPS-провайдер или хостер скомпрометирован, либо сам оператор VPN злоумышленник — он видит всё содержимое трафика выходящее из exit-node (после расшифровки).
Митигация: end-to-end шифрование на уровне приложения (HTTPS, Signal). VPN защищает on-path между клиентом и exit-node, не at-exit. Это не баг, это фундамент proxy-модели.
4. Корреляция через RTT/timing
Если цензор видит весь трафик между клиентом и провайдером, он может через timing latencies восстановить (примерно) «клиент сделал запрос, через 80ms Helsinki сделал такой же запрос наружу». Не криптографическое доказательство, но достаточно для targeted-investigation.
Митигация: padding traffic, randomized delays — не реализовано в xray по умолчанию. Доступно как отдельные плагины.
5. Long-term traffic-volume analysis
Постоянный исходящий трафик 50 GB/месяц от одного клиента только на один Helsinki IP — статистически выделяется vs обычного web-серфинга. Цензор может пометить такого пользователя как «VPN-suspect» даже без расшифровки.
Митигация: ротация exit-IP (несколько Helsinki/Frankfurt/etc), периодическая смена), смешивание с обычным трафиком.
Лестница атакующего по сложности
| Уровень | Кто | Что может |
|---|---|---|
| 1 | Местный провайдер | Базовый DPI signature → закрыто Reality |
| 2 | Госрегулятор (РФ ТСПУ, Иран) | Active probing + ASN-banlist → закрыто Reality + decoy + (потенциально) ASN-rotation |
| 3 | Сильный регулятор (Китай GFW) | ML-based timing/volume detection → требует traffic padding (не покрыто) |
| 4 | NSA-class global adversary | Global passive observation + targeted-implant → требует Tor/multi-hop (не покрыто) |
Этот пакет закрывает уровни 1-2, частично 3. Уровни 3-4 требуют отдельных архитектурных решений.
Failure modes — когда стек ломается
- Цензор блокирует dest SNI (
www.googletagmanager.com). Вероятность низкая — Google domain слишком важен. Митигация: сменаDECOY_HOSTнаwww.cloudflare.comили другой. - Уязвимость в xray. Уровень атак на Go-binary с pure-software TLS — низкий (xray активно поддерживается, security-issues закрываются ≤30 дней).
- Compromise xray credentials.
state.envmode 0600, читается только root. Если root scompromised → утрачен и VPN, и узел Montana, и весь VPS. - Reality-protocol weakness обнаружен. Reality введён 2022, активно изучается. Известные проблемы исправляются upstream. Старые xray-версии могут содержать уязвимости — требуется auto-update (
unattended-upgradesдля Ubuntu или периодический ручнойxray update).
Рекомендации оператору
- Использовать VPN в дополнение к threat model приложения, не как замену.
- Хранить мнемонику узла Montana и VPN-state.env в разных местах (компрометация одного не даёт второго).
- Регулярно обновлять xray (
bash <(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh) @ install). - Мониторить
journalctl -u xray --since todayна аномальные failures. - Если VPS из «горячей» юрисдикции (US, RU, CN) — рассматривать как компрометированный по умолчанию и не доверять ему хранение секретов длительного срока.