Below is a formatted version of the article extracted from the OCR content, with improved readability. I've cleaned up the text, removed extraneous OCR artifacts (like page breaks and "Printed using PDFCrowd" lines), corrected minor errors, and structured it with clear headings and paragraphs. The original structure and content are preserved, but the formatting is enhanced for better comprehension.
# Интернет-цензура и обход блокировок: не время расслабляться
**Автор:** Deleted-user
**Дата публикации:** 17 января 2023, 00:17
**Время чтения:** 10 минут
**Просмотры:** 176K
**Теги:** VPN, proxy, блокировки сайтов, цензура интернета
**Хабы:** Информационная безопасность, Сетевые технологии, Исследования и прогнозы в IT
**Лицензия:** Creative Commons BY-NC-SA
---
## Вступление
*Disclaimer: Практически всё, описанное в статье, не является чем-то принципиально новым или инновационным — оно давно известно, придумано, используется в разных странах мира, реализовано в коде и описано в научных и технических публикациях. Поэтому никакого ящика Пандоры я не открываю.*
Нередко на Хабре в темах, посвящённых блокировкам ресурсов, встречаются забавные заявления вроде: «Я настроил TLS-VPN, теперь буду смотреть что хочу, и цензоры мой VPN не заблокируют» или «Я использую SSH-туннель, значит всё ок, не забанят же они весь SSH целиком». Что ж, давайте проанализируем опыт других стран и подумаем, как же оно может быть на самом деле.
---
## 0. Базовый VPN: WireGuard и OpenVPN
Итак, допустим, мы купили у какого-то сервиса или, как подкованные пользователи, установили в личном облаке/VPS и настроили VPN-сервер для себя. Например, популярные WireGuard или OpenVPN. Знаете что? WireGuard — это такой прекрасный протокол, который всеми своими пакетами просто кричит: «Смотрите все, я — VPN!» И это не удивительно, ведь авторы на сайте проекта прямым текстом пишут, что обфускация не входила и не будет входить в их цели и планы.
Соответственно, на оборудовании DPI (оно же ТСПУ) при небольшом желании протокол WireGuard выявляется и блокируется на раз-два. IPsec/L2TP — аналогично. С OpenVPN то же самое — это, наверное, вообще первый протокол, который китайцы научились выявлять и банить на своём «Великом китайском фаерволе» (GFW). *We are fucked.*
---
## 1. TLS-VPN: SSTP, AnyConnect, SoftEther
Окей, допустим, мы сделали выводы и вместо совсем уж очевидных протоколов решили использовать TLS-VPN, такие как SSTP, AnyConnect/OpenConnect или SoftEther. Трафик в них ходит внутри TLS, начальная установка соединения производится по HTTP — что должно быть неотличимо от обычного подключения к любому сайту. Ну, как сказать…
В случае с MS SSTP цензоры, желая выяснить, чем вы занимаетесь, просто сделают запрос на ваш сервер с URL `/sra_{BA195980-CD49-458b-9E23-C84EE0ADCD75}/` с HTTP-методом `SSTP_DUPLEX_POST`, как это описано в стандарте протокола. Сервер радостно подтвердит в ответ, что он действительно MS SSTP VPN.
SoftEther VPN в ответ на GET-запрос с путём `/vpnsvc/connect.cgi`, типом `application/octet-stream` и пейлоадом `VPNCONNECT` выдаст код 200 и предсказуемый бинарный блоб с рассказом о том, кто он такой.
AnyConnect/OpenConnect при обращении по `/` или `/auth` ответят характерной XML-структурой. И от этого вы не избавитесь никак — это определено в протоколах, и именно через эту логику работают VPN-клиенты. *We are fucked.*
---
## 2. Reverse-прокси и SNI
Ясно, мы будем умнее. Поскольку у нас TLS, давайте поставим перед VPN-сервером reverse-прокси (например, HAProxy) и будем разруливать всё по SNI (Server Name Identification): подключения с определённым доменом в запросе отправляем на VPN-сервер, а все остальные — на безобидный сайт с котиками. Можно даже спрятаться за CDN — не забанят же они весь CDN, и наш трафик из общего потока не выцепят, правда?
Правда, есть одно «но». В нынешних версиях TLS поле SNI не шифруется, и цензоры легко его подсмотрят, сделав запрос с нужным именем домена. На расширение Encrypted Client Hello (ECH), ранее известное как eSNI, рассчитывать не стоит: во-первых, оно всё ещё в состоянии Draft и неизвестно, когда будет принято повсеместно, а во-вторых, цензоры могут просто заблокировать все соединения TLSv1.3 с ECH, как это сделали в Китае. Проблемы индейцев шерифа не волнуют. *We are fucked.*
---
## 3. Патчи и китайская артиллерия
Шутки в сторону, мы настроены решительно. Например, пропатчили OpenConnect-сервер, чтобы он принимал подключения только со специальным словом в URL (AnyConnect/OpenConnect-клиенты это позволяют), а всем остальным отдавал правдоподобную заглушку. Или настроили аутентификацию по клиентским сертификатам.
Или же подключаем тяжёлую артиллерию от китайцев, которые на обходе блокировок собаку съели. Shadowsocks (Outline) отпадает, ибо версии до 2022 года уязвимы к replay-атакам и active probing’у. Но вот V2Ray/XRay с плагином VMess и VLess поверх WebSockets или gRPC, либо Trojan-GFW — это то, что надо. Они работают поверх TLS, могут делить порт с HTTPS-вебсервером, и без секретной строчки, которую не подслушать, выявить туннель и подключиться к нему вроде бы нельзя. Всё хорошо?
Давайте подумаем. Каждый TLS-клиент передаёт серверу набор параметров: версии TLS, шифры, расширения, эллиптические кривые. Это называется ClientHello fingerprinting. Отпечаток OpenSSL отличается от GnuTLS, отпечаток Go — от Firefox. И когда с вашего адреса фиксируются частые и долгие подключения к «сайту» с библиотекой GnuTLS (не используемой в браузерах, но используемой в OpenConnect) или с мобильного через V2Ray на Go, *we are fucked*. Такое детектирование работает в Китае и Туркменистане.
---
## 4. Маскировка под браузеры
Ладно. Допустим, мы пересобрали V2Ray-клиент с uTLS, которая маскируется под популярные браузеры. Или взяли исходники браузера, выдрали сетевой стек и написали свой прокси-клиент, неотличимый от обычного TLS. Или замаскировали трафик под SSH, использовали OpenVPN с XOR-патчем, или KCP/Hysteria с маскировкой под DTLS.
Короче, у нас что-то редкое и незаметное. Всё хорошо? Ну как сказать. Помните «пакет Яровой»? Тот самый, что требует сохранять метаданные сессий и дампы трафика? Многие смеялись: «Что им дадут гигабайты зашифрованных данных?» А вот что.
Вы используете туннель, смотрите запрещённые сайты. А потом случайно заходите через туннель на отечественный сервис, сотрудничающий с государством (VK, Mail.ru, Яндекс) или кликаете на honeypot-ссылку. Цензоры видят трафик к неизвестному серверу и запросы с того же IP к подконтрольному сервису. Размеры пакетов и тайминги совпадают. *We are fucked again.*
---
## 5. Rule-based доступ и паттерны трафика
Не так уж плохо. Мы настроили rule-based доступ: ходим по туннелю только туда, куда надо, а остальное — по обычному интернету. Правда, добавлять новые ресурсы в список — тот ещё геморрой, особенно если это для родителей, читающих «иноагентов». Но это мелочи.
Допустим, используем SSH-туннель. Он проработает недолго. Почему? Паттерны трафика. У ssh-as-console, ssh-as-ftp и ssh-as-proxy они разные и выявляются нейросетью. В Китае и Иране такое «неправильное» использование SSH режут до черепашьей скорости. То же с TLS-inside-TLS — эвристики и машинное обучение справляются. *We are still fucked.*
---
## 6. Random padding и collateral damage
Ладно. Мы добавили random padding — «дописывание» мусора случайной длины в конец пакета, чтобы сбить наблюдателей. Или бьём пакеты на кусочки (и получаем проблемы с MTU). Или убираем лишний слой шифрования внутри туннеля, чтобы выглядеть как обычный TLS (правда, с кучей тонких уязвимостей). Happy end?
А тут начинается интересное. С развитием технологий обхода растёт *collateral damage* — случайный ущерб. В Китае TLS-inside-TLS с random padding выявляют с точностью 40%, но ложные срабатывания шерифа не волнуют. Shadowsocks obfs4 можно детектировать по статистике нулей и единичек (1:1 у шифрованного трафика). Или банят адреса с долгими подключениями к непопулярным сайтам. Роскомнадзор блочил подсети Telegram, Иран запретил Chrome TLS к облакам, Туркменистан заблокировал треть IP-адресов мира. *We are fucked.*
---
## Заключение: что делать?
Большая часть описанного — не теория, а реальность, используемая в мире и описанная в публикациях. Обход блокировок — это борьба щита и меча, игра в кошки-мышки. Если ваш VPN работает, вы лишь на полшага впереди. Не расслабляйтесь: изучайте опыт Китая, присматривайтесь к цензуроустойчивым решениям (Ne14People, No Thought is a Crime, XTL5, GFW Report). Разработчики могут помочь проектам и предложить идеи.
Рано или поздно государство может перейти к административным мерам (монополия на насилие). В РФ есть законы о запрете VPN, в Китае «убедили» разработчиков Shadowsocks, в Иране завели дела за VPN. Но это другая история.
Я хотел вставить мрачные киберпанк-картинки, но надеюсь, до этого не дойдёт. Всё в наших руках.
**Поддержите автора:** пожертвуйте в «Подари жизни», «Дом с маяком» или «Антон тут рядом».
---
*Текст отформатирован для удобства чтения, орфография и пунктуация исправлены где необходимо, структура сохранена.*