Принцип работы Amnezia
Что такое Amnezia?
AmneziaVPN – бесплатный open-source мультипротокольный VPN клиент с функцией настройки собственного VPN сервера, или другими словами self-hosted VPN.
Как Amnezia создает VPN на базе VPS?
При первом подключении, приложение автоматически генерирует новую пару ключей для протокола и формирует запрос на сертификат (Certificate Signing Request, CSR). Запрос на сертификат, включающий открытый ключ, затем передаётся на сервер для подписи и выдачи соответствующего X.509 сертификата, обеспечивающего аутентификацию и безопасность соединения.
Каким образом Amnezia подключается к созданному VPN?
После внесения пользователем IP логина и пароля от VPS приложение подключается к серверу по SSH, устанавливает Docker и запускает серверные контейнеры Amnezia. Для каждого протокола подключения запускается отдельный контейнер, генерируются ключи и корневой сертификат. После того как сервер настроен, можно подключаться с помощью VPN к этому серверу.
Как работает маскировка трафика?
Маскировка трафика есть у протоколов Shadowsocks, OpenVPN over Cloak и XRay Reality . AmneziaWG также имеет защиту от обнаружения, но работает по другому принципу.
Shadowsocks
Shadowsocks основан на прокси-протоколе SOCKS5, который защищает соединение с помощью шифра AEAD — примерно по тем же принципам, что и туннель SSH. Соединение ShadowSocks сложно идентифицировать потому что оно практически идентично обычному соединению HTTPS. Однако некоторые системы анализа трафика все-таки умеют распознавать соединение ShadowSocks, поэтому в странах с высоким уровнем цензуры мы рекомендуем использовать AmneziaWG.
OpenVPN over Cloak
В связке OpenVPN over Cloak за маскировку трафика отвечает плагин Cloak. Он может изменять метаданные пакетов таким образом, что он полностью маскирует VPN-трафик под обычный Web-трафик, а также защищает VPN от обнаружения методом Active Probing. Это делает его очень устойчивым для обнаружения и блокировки. Сразу после получения первого пакета данных Cloak аутентифицирует входящее соединение. В случае сбоя аутентификации плагин маскирует сервер под фейковый веб-сайт, а ваш VPN становится незаметным для систем анализа.
XRay Reality
Работа XTLS-Reality основывается на тех же принципах, что и работа Cloak - VPN маскируется под web трафик, с применением защиты от active probing. Основой работы является то, что на этапе TLS-хендшейка в момент чтения ClientHello протокол может отличить клиента от цензора. Если опознан клиент (“свой”), сервер работает как прокси, а если цензор (“чужой”), то TLS подключение передается на какой-нибудь другой абсолютно реальный хост с TLS, на который не распространяются блокировки. Таким образом, клиент или цензор, желающий методом active probing проверить, а что же прячется на том конце, получит настоящий TLS-сертификат от этого сайта и настоящие данные с этого сервера.
AmneziaWG
AmneziaWG работает в рамках обратной совместимости. То есть реализация AmneziaWG позволяет изменить некоторые статичные параметры в WireGuard, по которым этот протокол обычно и распознают системы DPI. А если оставить эти параметры по умолчанию (равными 0), то протокол работает как обычный WireGuard.
В AmneziaWG изменены заголовки всех пакетов: пакета рукопожатия (Initiator to Responder), и ответного пакета (Responder to Initiator), пакета данных, а также специального пакета “Under Load” – это рандомные значения, но их можно самостоятельно поменять в настройках.
Так как заголовки у каждого пользователя разные, то написать универсальное правило на основе заголовков для систем отслеживания, чтобы вычислить протокол и заблокировать, просто невозможно.
Еще одно слабое место WireGuard - это размеры пакетов авторизации. В AmneziaWG к каждому auth-пакету дописываются рандомные байты, чтобы изменить их размер. Так “init и response пакеты” рукопожатия дополнительно имеют “мусор” в начале данных, размер которого определяются значениями S1 и S2. По умолчанию инициирующий пакет рукопожатия имеет фиксированный размер (148 байт), а после добавления мусора, его размер будет равен 148 байтам +S1.
В реализации AmneziaWG предусмотрен и еще один трюк для более надежной маскировки. Перед началом сессии Amnezia отправляет некоторое количество “мусорных” пакетов, чтобы в край запутать системы DPI. Количество таких пакетов и их минимальный и максимальный размер в байтах тоже задается в настройках, параметрами Jc, Jmin и Jmax.
При высоком уровне интернет-цензуры в вашем регионе, советуем использовать с первого подключения только AmneziaWG.