Что такое PROXY. Установка и настройка. Инструкция
Proxy (прокси) в переводе с английского – “представитель, уполномоченный, посредник”.
Proxy-сервер – это сервер-посредник.
Как работает технология?
Сравним трафик с посылкой. Пользователь отправляет посылку по какому-то адресу, но не самостоятельно, а через третье лицо, чтобы не раскрывать свою геопозицию и имя. Удобно и просто.
Но помимо обеспечения конфиденциальности в сети, Proxy-серверы имеют еще и много других функций.
Минусы технологии:
- Proxy-серверы узконаправлены, и каждый тип интернет-соединения требует свой тип сервера.
- Основная проблема большинства Proxy – безопасность, ведь не все Proxy-серверы обеспечивают дополнительную шифровку трафика.
Использование такого Proxy-сервер сравнимо с передачей данных третьему лицу без шифра. Такое возможно, если доверяете агенту, как себе.
Важно! Не используйте бесплатные Proxy-серверы с сомнительной репутацией.
2. Отличия Proxy от VPN
- Технология VPN использует шифрование и передает именно зашифрованную информацию по туннелю, а Proxy – нет.
- 100% сетевого трафика, проходящего через VPN, защищено, через Proxy – лишь интернет-трафик.
- Запросы Proxy отправляет, как посредник, VPN туннелирует весь объем сетевой активности вплоть до операционной системы.
Для допуска сотрудников к корпоративным базам данных организации могут использовать VPN, чтобы трафик не перехватывали. В этом случае провайдер увидит не полноценную историю использования, а только то, что пользователь подключался к VPN.
3. Виды Proxy
- Прозрачный Proxy – самый примитивный вид. В браузере не прописываются настройки. Такой Proxy просто ловит идущий HTTP-трафик. Пользователь не ощущает, что работает через Proxy-сервер.
В качестве примера можно рассмотреть отслеживание развлекательных сайтов в сети образовательных организаций.
- Анонимный Proxy не отправляет IP-адрес пользователя на целевой ресурс. Подходящий вариант для пользователя, который заботится, чтобы таргетированная реклама отслеживала его действия и местоположение.
- Proxy высокой анонимности не направляет IP-адрес и персональные данные пользователя, не определяет себя в качестве Proxy. Периодическое обновление IP-адреса позволяет сохранить приватность. Такой тип Proxy-сервера применяется в браузере TOR. Инициатора запроса сложно отследить из-за постоянного обновления IP-адреса.
- Искажающий (distorting) Proxy работает подобно анонимному, с единственным исключением – отправляет заведомо ложный IP-адрес. Используется для обхода отдельных ограничений доступа к контенту.
- Резидентный (residential) Proxy работает через реальные (белые, статические) IP-адреса. Для серверов это выглядит, как запросы от обычных клиентов. Альтернатива резидентному – data center proxy, у которого IP-адреса не привязаны к устройству. Облачные провайдеры обладают высокоскоростным интернет-соединением. Но если один сервер размещает несколько сотен Proxy-серверов, то им будут присвоены идентичные IP-адреса.
- Публичный (public) Proxy – достаточно небезопасный вид. Может отпасть в любой момент, чувствителен к хакерским атакам. Списки бесплатных публичных Proxy найти легко, но найти приемлемый публичный Proxy практически невозможно.
- Частный (private) Proxy используется одномоментно только одним пользователем, но перед использованием происходит проверка достоверности данных. Такая версия публичного Proxy более надежна и может иметь высокую анонимность или прозрачность, как, например, резидентный или data center Proxy.
- Общий (shared) Proxy – один из наиболее дешевых видов Proxy-серверов. Арендная плата за сервер распределяется между пользователями, которым предоставляется одновременный доступ к нему.
- Ротационный (rotating) Proxy для каждого нового пользователя выделяет новый IP. Значит один и тот же IP-адрес не применяется больше одного раза. Ротационный сервер обладает высоким уровнем приватности и безопасности.
- SSL-Proxy работают, как HTTPS-запросы – запросы от пользователя к серверу защищены шифрованием.
- Обратный (reverse) Proxy демонстрирует иной подход к проксированию. Здесь скрывается не IP пользователя, а IP-адрес сервера, куда направляется запрос. Инструмент предназначен для контроля доступа к серверу и ограничения неконтролируемого доступа к базе данных, а также для снижения трафика благодаря кэшированию информации.
4. Где искать Proxy
Многие сервисы Proxy предлагают комбинации различных видов Proxy. Бывают случаи, когда резидентные, SSL-Proxy и высоко анонимные соединены в один сервис.Сервисы, на которых можно выбрать подходящий вариант:
- https://smartproxy.com/
- https://www.megaproxy.com/
- https://whoer.net/webproxy
- https://www.proxysite.com/
- https://hide.me/en/proxy
- https://www.kproxy.com/
- https://www.vpnbook.com/webproxy
5. Что делать, если у вас в стране заблокируют интернет внутри страны
Представим ситуацию, когда ряд иностранных ресурсов попадает под блокировку, доступ к ним вы не можете получить или получаете чрезвычайно медленно. У вас есть несколько вариантов решения этой проблемы:
- Создаем свое VPN-подключение через арендованный в другой стране виртуальный сервер.
- Настраиваем VPN-подключение через платный коммерческий VPN.
- Используем Proxy-сервер.
Любой из этих способов восстановит подключение к ресурсу, в случае если доступ перекрывается провайдером.
6. Что делать, если интернет заблокируют извне
Такая ситуация практически невозможна.
3 июня 2011 года была принята резолюция ООН, признающая доступ в интернет базовым правом человека. Таким образом, отключение тех или иных регионов от интернета является нарушением прав человека.
В наших соцсетях много полезной информации и ламповая атмосфера, присоединяйтесь! Сайт TTM Academy Telegram Дзен Medium Вконтакте YouTube
Настройка прокси в Google Chrome на Windows
Для настройки HTTP или Socks прокси в браузере Google Chrome на Windows зайдите в раздел Настройки.
В строке поиска введите «прокси» и откройте настройки прокси-сервера.

Внешний вид следующего окна может отличаться в зависимости от версии Windows. Нажмите на кнопку.

Выполните следующие шаги:
- Включите прокси
- IP адрес подключения
- Порт подключения
- Отметьте галку
- Сохраните прокси

Прокси с авторизацией по логину и паролю
Если используется прокси с авторизацией, то окно с вводом логина и пароля появится сразу, как только откроете любой сайт в Интернете.

Рекомендации от сервиса TheSafety.US
Хотим обратить внимание на то, что настройка прокси производится непосредственно в самой операционной системе Windows.
Если вы используете VPN, то возникнет нежелательная ситуация, когда трафик сначала пойдет на прокси сервер и только затем на VPN (цепочка: прокси + VPN). Хотя оптимальным вариантом с точки зрения безопасности и анонимности считается цепочка: VPN + прокси.
Socks прокси с авторизацией может не работать в Windows.
VPN и прокси сервис защищает своих клиентов с 2006 года, используя надежные технологии в области анонимности передачи данных в Интернете.
Что такое прокси-сервер и как его настроить
Разбираемся, что такое прокси-сервер и какие его классификации существуют.

Прокси-сервер — это промежуточное звено между пользователем и сайтом. Если прокси-сервер не используется, веб-сайт может определить пользователя по IP-адресу, который способен раскрыть, например, его местоположение.
Как работает прокси-сервер

На картинке выше описан примерный порядок работы. Когда вы используете прокси-сервер, вы добавляете дополнительный уровень между вашим устройством и веб-сайтом:
- Сначала компьютер устанавливает соединение с прокси-сервером и отправляет запрос о подключении к желаемому сайту.
- Прокси-сервер принимает запрос, после чего модифицирует его, заменяя данные клиента своими.
- Далее он отправляет запрос на сайт и получает ответ, который отображает клиенту.
Термины «прокси-сервер» и «IP-адрес прокси» имеют разное значение, хотя они часто используются как взаимозаменяемые.
Прокси-сервер — это машина, которая содержит прокси IP-адреса.
IP-адрес прокси — это индивидуальный IP-адрес, который используется для сокрытия вашего реального «айпишника».
Прокси-сервер обрабатывает ваши запросы, но скрывает множество идентифицирующей информации: в ее числе исходный IP-адрес, геолокация, откуда пришел запрос, данные операционной системы (ОС) и многое другое. В общем, он помогает предотвратить легкое отслеживание вас третьими лицами, или так называемое «вычисление по IP». Работа прокси-сервера осуществляется на уровне приложений модели OSI (L7).
Типы прокси-серверов
На данный момент существует множество типов прокси-серверов. Выделим основные.
Публичный прокси
Эти типы прокси известны как открытые прокси. Это бесплатные прокси, которыми одновременно пользуются много людей. Обычно их можно найти на сайтах, публикующих обновленные списки прокси-серверов. Очевидным преимуществом открытых прокси является то, что они бесплатны. Но недостатки перевешивают: эти прокси-серверы медленные, небезопасные и ненадежные.
Приватный прокси
Такие прокси более быстры и безопасны, чем предыдущие. Компании, предоставляющие частные прокси, могут предлагать и другие функции, услуги, такие как WAF (web application firewall), VPN и прочие, а также техподдержку клиентов. Частный прокси может быть выделенным и общим.
Выделенный прокси
Такой вид предоставляется через высокопроизводительные серверы с выделенными ресурсами. Эти прокси позволяют подключаться и отправлять запросы только одному клиенту, решая проблему «шумных соседей» или черного списка. Последнее актуально для бесплатных прокси, когда один из ранее использовавших его пользователей допустил попадание IP-адреса в блок-лист сайта.
Прозрачный прокси
Вид прокси-сервера, который позволяет подключаться к нему без дополнительных настроек. Принцип его работы заключается в том, что весь трафик с порта клиента перенаправляется на порт прокси-сервера, посредством статических маршрутов на самом устройстве или на маршрутизаторе.
Есть и более специфические разновидности прокси.
HTTP-прокси
Это тип прокси-сервера, который действует как сервер-посредник между клиентом и веб-сервером. Если вы используете HTTP-прокси, то при отправке запроса на веб-сайт происходит следующее: запрос попадает не на сайт, а на прокси-сервер в виде обычного текста. После этого прокси-сервер анализирует его и посылает новый запрос на сайт, используя данные из запроса, но изменяя ваш IP-адрес (по желанию). Веб-сайт получает его и отправляет ответ на прокси-сервер, после чего сервер пересылает ответ пользователю.
Прокси с использованием SSL
При использовании SSL-прокси создается только одно TCP-соединение. Это отличает его от HTTP-прокси, который создает два соединения: одно от клиента к прокси, другое от прокси к веб-серверу.
Когда пользователь инициирует веб-запрос, он посылает запрос CONNECT на веб-сервер и создает TCP-канал, по которому проходит запрос. Одним из преимуществ SSL-прокси перед HTTP-прокси является то, что их можно использовать для доступа к ресурсам как HTTPS-, так и HTTP-серверов. Этого нельзя сделать с HTTP-прокси, который можно использовать только для доступа к ресурсам HTTP-сайтов. Если пользователь попытается получить доступ к HTTPS-сайту с помощью HTTP-прокси, соединение с сайтом не будет считаться безопасным.
CGI-прокси
Прокси Common Gateway Interface (CGI) извлекает веб-контент из интернета от имени клиента. CGI-прокси используется через веб-браузер и выглядит как обычный веб-сайт. Чтобы воспользоваться им, достаточно ввести URL-адрес назначения, и CGI отобразит результаты, как если бы он был отправителем запроса. CGI-прокси работает через зашифрованную веб-форму, встроенную в другую веб-страницу с использованием SSL. CGI-прокси используются для анонимного просмотра веб-страниц и разблокировки сайтов с региональными ограничениями.
SOCKS-прокси (SOCKets Secure)
SOCKS — это еще один интернет-протокол. Он расшифровывается как SOCKet Secure и обычно используется для задач с интенсивным трафиком, таких как потоковая передача контента или обмен P2P.
SOCKS использует соединение TCP, которое предназначено для отправки и получения пакетов данных через интернет, а также для гарантии успешной доставки ресурсов по сети. При использовании SOCKS-прокси интернет-трафик направляется через прокси-сервер по TCP-соединению от имени клиента. Как и большинство других типов прокси, SOCKS скрывают IP-адрес клиента и работают в обход географических ограничений.
Для чего нужен прокси сервер
Ответим на вопрос, зачем нужен прокси. Помимо анонимизации в интернете, с помощью прокси-серверов решаются следующие задачи:
- Фильтрация доступных ресурсов. Эта опция позволяет отсечь доступ к некоторым ресурсам — например, закрыть сотрудникам доступ к соцсетям в рабочее время. При такой работе часть запросов отбрасывается и не транслируется. Также в сочетании с SWG (Secure Web Gateway), который может включать в себя, например, антивирусы, программы для обеспечения безопасности электронной почты, прокси-сервер может обеспечить дополнительную защиту ИБ.
- Ускорение работы интернета. Загрузка сайтов может производиться при помощи кэша на прокси-сервере. Кэширование и сжатие данных — эта технологическая возможность прокси-сервера схожа с режимом «Турбо» в браузерах. При ее работе загрузка ресурсов с сайта производится не напрямую на компьютер пользователя, а сначала на сервер, где она сжимается. После в уменьшенном объеме ресурсы передаются пользователю. Функция будет полезна, если вы используете тариф с ограничением трафика или при медленном соединении.
- Безопасность. При помощи прокси-сервера есть возможность настроить блокировку запросов с потенциально вредоносных сайтов.
- SEO-мониторинг. SEO-прокси используются для обхода фильтров и ограничений, наложенных поисковыми системами.
- Доступ к запрещенному контенту. Обход блокировок на государственном уровне. Иногда сайты блокируют доступ по geoIP — такие блокировки также помогает обойти proxy-сервер.
Proxy или VPN?
Вопрос неоднозначный. Данные технологии предоставляют схожие возможности по анонимизации пользователя в сети, но имеют ряд различий.
Во-первых, они работают на разных уровнях модели OSI — это существенное различие между proxy-сервером и VPN.
Популярные протоколы VPN, такие как PPTP, L2TPv3 и IPsec, работают на уровне 3 (сетевой уровень). Конечно, VPN использует уровень 4 для установления связи. Например, PPTP использует TCP (уровень 4), а L2TP и IPsec используют TCP и UDP (уровень 4) для создания туннеля. Но, как только туннель VPN создан, его протоколы работают так же, как сетевые интерфейсы. Работа на L3 означает, что VPN принимает весь ваш трафик (DNS, HTTP, P2P, VoIP и т.д.), независимо от номера порта или приложения, и шифрует его. Прокси же работает на 5-7 уровне.
Во-вторых, в их основе лежат разные технологии, обеспечивающие безопасность соединения.
Уровень конфиденциальности в VPN зависит от криптографической мощности механизма шифрования. Существуют различные алгоритмы шифрования — 3DES, AES и RSA. Они определяют, как данные скрываются в сообщении. Эти механизмы используют набор ключей и шифров (128 или 256 бит) для сокрытия информации и находят применение в различных протоколах безопасности. Примерами протоколов шифрования VPN являются PPTP, L2TP, SSTP, IKEv2, OpenVPN, IPSec, WireGuard и другие.
Прокси-серверы, с другой стороны, не предназначены для шифрования данных. По своей концепции прокси-серверы маскируют ваш IP-адрес своим, но не шифруют данные. Для компенсации отсутствия шифрования можно использовать прокси-серверы с SSL, но этот обходной путь требует технических знаний. У прокси-серверов нет накладных расходов на шифрование, поэтому они обычно быстрее VPN. Хотя серфинг интернета с VPN едва ли повлияет на ваш пользовательский опыт. Задержки касаются трафика с самой высокой нагрузкой, такого как потоковое видео, передача файлов P2P или игры.
Наконец, отличается стоимость реализации VPN и прокси.
Найти дешевые VPN для общих ресурсов и даже бесплатные (в некоторых случаях) можно, но цена на VPN для бизнеса может увеличиваться в долгосрочной перспективе. Поддержка VPN для крупного предприятия потребует большей инфраструктуры, поддержки, обслуживания и мониторинга. Локальный прокси-сервер, как правило, обходится более дешево для компаний, однако сложно представить компанию, которая пользуется ими в чистом виде.
Риски использования прокси
При использовании прокси-серверов существуют определенные риски. Так, важно тщательно относится к выбору поставщика услуг. При использовании, например, общедоступных прокси не вводить пароли от учетных сетей, так как это будет равносильно передаче данных «прямо в руки» злоумышленникам.
Стоит учитывать, что могут происходить «сливы» данных пользователей владельцами прокси, которые могут попасть в руки мошенников или контролирующих органов. Поэтому важно не вводить личные данные, логины пароли от сайтов при использовании сторонних, а тем более бесплатных прокси.
Как и где выбрать сервер
Существует множество поставщиков прокси-серверов. Единого рецепта для выбора самого безопасного и лучшего нет. Стоит следовать стандартным рекомендациям: прочесть отзывы, поискать статьи в интернете и удостовериться, что с поставщиком не связано громких скандалов, сравнить цену с рыночной (если прокси дешевле рынка, тут что-то нечисто).
Если вы хотите максимально безопасный вариант, лучше настроить прокси-сервер самостоятельно. Для этого нужно арендовать сервер, подготовить инфраструктуру и ПО, произвести установку и настройку прокси-сервера. Подробнее про то, как это сделать, читайте тут.
Десятки готовых конфигураций со скидкой
Выберите дешевый сервер для самостоятельной настройки прокси.
Подключение к прокси-серверу: инструкции
Настройка для операционных систем
Первым шагом мы рассмотрим настройку прокси на ОС Windows, Linux и Mac.
Прокси-сервер на Windows
Для настройки на Windows вам потребуется зайти в поиск и написать Прокси либо перейти в Параметры → Сеть и интернет → Прокси-сервер.


Для Linux
Для настройки прокси на Linux вам понадобится зайти в Настройки, после чего нажать на шестеренку напротив пункта Сетевой прокси.


Стоит учитывать, что задать логин и пароль для подключения так просто не получится. Для этого следует выполнить следующие шаги:
- Открыть для редактирования файл /etc/environment, введя команду sudo nano /etc/environment.
- Перейти в конец файла и добавить строки типа:
Название протокола_proxy=”Название протокола://user:pass@proxy:port/”.
- Перезагрузить систему.
Для MacOS
Для настройки прокси на MacOS вам потребуется открыть Safari, после чего зайти в пункт Preferences (или Настройки).
После этого перейти в пункт Дополнения и нажать кнопку Изменить настройки.

Можно также перейти в окно настройки прокси другим способом. Нажмите на значок Wi-Fi или интернета и выберите Настройки → Wi-Fi.
Выбрать подключенную сеть и нажать Подробнее.
Далее перейдем во вкладку Прокси. Здесь следует выбрать нужный тип прокси-сервера, указать IP и порт. При необходимости — ввести логин и пароль для доступа.

Настройка сервера прокси в браузере
Для настройки прокси в браузере механизм будет схожим. Например, для браузера Google Chrome будет достаточно зайти в настройки и написать в строке поиска Прокси, выбрать пункт открыть настройки прокси сервера для компьютера После этого браузер переадресует вас в настройки прокси-сервера Windows или другой операционной системы.

Для браузер Mozilla Firefox следует также перейти в настройки и в строке поиска написать Настройки сети. После выбора этого пункта вам станут доступны настройки соединения.

Схожая настройка происходит и в браузере Opera. Вам следует написать в поле поиска Прокси, после чего выбрать пункт Открыть настройки прокси-сервера для компьютера.

Аналогичный процесс и для браузера Microsoft Edge:

Настройка прокси-сервера для телефонов или планшетов на Android и iOS
Для настройки прокси-сервера в ОС Android и iOS перейдите в меню настроек. Далее выберите подключения: для Android раздел может называться по-разному, в зависимости от оболочки, на IOS это Wi-Fi. Затем зайдите в настройки сети и включите ручную настройку прокси.

Чтобы отключить прокси, следует выполнить шаги в обратном порядке. То есть зайти либо в настройки браузера, либо в настройки системы. Если вы хотите настроить прокси на роутере, то однозначного решения нет. Все будет зависеть от конкретной модели устройства. Сам же алгоритм будет выглядеть аналогично настройке на других системах.
Заключение
Прокси-сервер будет полезен при желании пользователя частично анонимизировать себя или получить доступ к контенту, по каким-то причинам закрытому на территории государства. Также с его помощью компании могут блокировать доступ к социальным сетям для своих сотрудников, отфильтровывать нежелательный трафик и защищать периметр сети.
Но при использовании бесплатных или непроверенных решений стоит соблюдать правила безопасности и быть готовым к тому, что ваши запросы и всю содержащуюся в них информацию могут обнародовать.
Защищённые прокси — практичная альтернатива VPN

В интернете есть достаточное количество информации по теме шифрования и защиты трафика от вмешательств, однако сложился некоторый перекос в сторону различных VPN-технологий. Возможно, отчасти он вызван статьями VPN-сервисов, которые так или иначе утверждают о строгом превосходстве VPN-решений перед прокси. При этом многие решения тех же VPN-провайдеров, не смотря на маркетинговое позиционирование в качестве VPN, технически являются прокси.
На практике прокси больше подходят для повседневной защиты веб-трафика, не создавая при этом неудобств в виде заметной потери скорости и неизбирательности туннелирования. То есть при использовании хорошего прокси не стоит необходимость его отключать для комфортного пользования интернетом.
В этой статье расказано о преимуществах защищённого прокси перед VPN и предложены различные реализации, готовые к использованию.
В чём различие между VPN и прокси?
VPN — это общее название технологий для объединения внутренних сетей на уровне сетевых пакетов или кадров через соединение, установленное поверх другой сети (чаще всего публичной).
Прокси — это серверное приложение, осуществляющее соединения или запросы от своего имени и сетевого адреса в пользу подключившегося к нему клиента, пересылая в результате ему все полученные данные.
VPN осуществляет пересылку полезной нагрузки, находящейся на третьем или втором уровне сетевой модели OSI. Прокси осуществляют пересылку полезной нагрузки между четвёртым и седьмым уровнями сетевой модели OSI включительно.
И VPN, и прокси могут иметь или не иметь шифрования между клиентом и сервером. Обе технологии пригодны для того, чтобы направить трафик пользователя через доверенный сервер, применяя шифрование по пути до него. Однако, подключение через прокси делает это более прямолинейным способом, не привнося дополнительную инкапсуляцию сетевых пакетов, серые адреса самой VPN сети и изменения таблицы маршрутизации, которые привносит VPN просто лишь для того, чтобы сетевой стек системы пользователя направил трафик через нужный сервер.
Преимущества прокси
- В условиях реальной сети с потерями практическая скорость прокси зачастую выше, чем у VPN-решений. Это вызвано тем, что при проксировании TCP-соединений ретрансмиты на участках клиент-прокси и прокси-целевой узел происходят независимо. Прокси имеет свои TCP-буферы и кратковременные задержки ввода-вывода в обе стороны не сказываются на передаче с противоположной стороны. VPN же работает только на сетевом уровне (IP) и потерянные сегменты TCP будут пересылаться по всей длине пути от VPN-клиента до целевого сервера.
- Гибкость. Проще настроить избирательное проксирование. Использование прокси можно ограничить конкретными приложениями, в браузере — конкретными доменами. Можно использовать несколько разных прокси для разных адресов назначения одновременно.
- Трудно обнаружить с помощью DPI, в том числе DPI осуществляющими активные пробы. Однако, для этого необходима некоторая донастройка. В случае с прокси через TLS, такое соединение можно выдать за обычное HTTPS-соединение. В случае с VPN факт его использования виден даже пассивному DPI. Даже если это Wireguard.
- Нет целого класса проблем с внезапно прервавшимся VPN-соединением. В худшем сценарии VPN-соединение может прерваться и пользователь не заметит, что его трафик уже не защищён и/или он уже работает со своего «домашнего» IP-адреса. В случае с прокси такие проблемы исключены.
- Нет принципиальной возможности проводить атаки, пускающие трафик мимо VPN-туннеля. Пример такой проблемы.
- Не нужны высокие привилегии в системе ни для клиента прокси, ни для сервера. Это может быть весьма полезно в случаях, когда у Вас нет высоких прав в системе.
Требования к прокси
Выбирая для себя реализацию защищённого прокси-сервера, я отметил несколько критериев, которым она должна удовлетворять:
- Обязательное шифрование и защита целостности данных внутри соединения.
- Надёжная и проверенная криптография. Доморощенные криптопротоколы крайне нежелательны.
- Устойчивость к DPI, в том числе к активным пробам. В идеале протокол должен внешне выглядеть неотличимо от протоколов, к которым обычно не возникает претензий. Например, как HTTPS.
- Отсутствие мультиплексирования нескольких TCP-соединений внутри одного. Причина этого требования такова: нежелательно, чтобы скорость нескольких соединений была ограничена скоростью одного TCP-соединения. Кроме того, при мультиплексировании нескольких соединений внутри одного приостановка получения данных из одного внутреннего (подвергнутого мультиплексированию) соединения может застопорить все остальные на неопределённое время. Для этого достаточно, чтобы со стороны прокси-сервера ожидало отправки больше данных, чем суммарный размер буфер отправки клиента-демультиплексора и буфер приёма сокета у застопорившего приём приложения. В частности такого эффекта можно иногда добиться, начав качать большой файл через SSH SOCKS5 прокси ( ssh -ND 1080 ), и поставив скачивание на паузу. При неудачном стечении обстоятельств никакой трафик через туннель больше не будет принят. Более подробно о проблеме head-of-line blocking.
- Отсутствие привязки к поставщику или сервису.
| Наименование | Резюме |
|---|---|
| OpenSSH dynamic port forwarding ( ssh -ND 1080 ) | Использует мультиплексирование: низкая скорость, задержки |
| shadowsocks | Провал DPI |
| obfs4 | По внешнему виду он удовлетворяет всем требованиям, но есть моменты, вызывающие сомнения |
Особенности obfs4
В спецификации протокола obfs4 есть места, которые вызывают вопросы. В рукопожатии со стороны клиента используется номер часа от начала эпохи UNIX, который потом участвует в HMAC-подписи. Сервер, принимая такой пакет от клиента проверяет его, подставляя номер часа по своему времени. Если всё верно, то отвечает своей частью рукопожатия. Для борьбы с разбросом часов сервер должен ещё проверять предыдущий и следующий час.
Зная такое характерное поведение, можно проверить сервер на границе следующего и послеследующего часа, воспроизведя одно из прошлых записанных рукопожатий со стороны клиента. Если сервер перестанет отвечать своей частью рукопожатия в это самое время, то это достаточное основание, чтобы судить, что сервер обслуживает протокол obfs4.
Судя по всему, автор со временем осознал эту проблему и в коде obfs4 реализована защита от обнаружения через воспроизведение. В спецификации она нигде не описана.
Однако, такая защита наоборот упрощает работу по блокировке протокола: сетевому фильтру достаточно в случае сомнений задержать отправку рукопожатия от клиента, перехватив её, а затем отправить сообщение с рукопожатием первым. Таким образом он спровоцирует защиту от воспроизведения уже против клиента, вынуждая сам сервер блокировать клиента.
Следующий момент, вызывающий сомнения это формат «кадра» с данными. Выглядит он следующий образом:
+------------+----------+--------+--------------+------------+------------+ | 2 bytes | 16 bytes | 1 byte | 2 bytes | (optional) | (optional) | | Frame len. | Tag | Type | Payload len. | Payload | Padding | +------------+----------+--------+--------------+------------+------------+ \_ Obfs. _/ \___________ NaCl secretbox (Poly1305/XSalsa20) ___________/
Первые два байта каждого кадра это длина пакета, гаммированная с ключом, который вычисляется от предыдущих ключей. Как он вычисляется ключ не столь важно, главное, что настоящая длина пакета подвергается операции побитового исключающего ИЛИ каким-то ключом. Это значит, что можно инвертировать бит в этой части данных и подмена не будет сразу замечена. Если инвертировать младший значащий бит этого поля, то длина кадра станет либо на единицу меньше истинной, либо на единицу больше. В первом случае это приведёт к сбросу соединения через небольшое случайное время из-за ошибки распаковки NaCl secretbox.
Второй случай более интересный: сервер будет ждать ещё один байт для того, чтобы начать распаковку криптобокса. Получив ещё ровно один байт он также сбросит соединение из-за ошибки распаковки криптобокса. Это поведение можно считать специфичным для obfs4 и можно судить, что мы с высокой вероятностью имеем дело с ним. Таким образом, удачно разрушив одно из соединений клиента, можно с примерно 50%-ным шансом обнаружить obfs4.
Конечно, определение границ одного кадра в потоке тоже может представлять непростую задачу, но нет чётких гарантий, что нерешаемую. В случае обмена короткими сообщениями границы одного кадра могут совпасть с границами TCP-сегмента.
Ну и последняя особенность заключается в том, что сам по себе протокол внешне не похож ни на один из общепринятых. Он спроектирован с предположением, что DPI играет по правилам и незнакомые протоколы просто не трогает. Суровая реальность может показать, что это не так.
По всем этим соображениям я воздержался от использования obfs4.
TLS и SSH в качестве криптографического транспорта
Разумно было бы воспользоваться стандартными защищёнными сетевыми протоколами вроде TLS или SSH для обёртывания соединений с прокси. Действительно, к таким протоколам обычно не возникает претензий со стороны DPI, потому что ими может быть зашифрован легетимный трафик. Что же касается активных проб со стороны DPI, этот вопрос можно решить в частном порядке, в зависимости от конкретного протокола прокси.
Ниже будут представлены несколько готовых решений на базе этих протоколов, пригодных для повседневной постоянной защиты трафика.
SOCKS5 внутри SSH
Вариант с использованием функции dynamic port forwarding у OpenSSH рассматривался выше, но он имеет большие проблемы со скоростью. Единственный способ избавиться от мультиплексирования соединений — это использовать альтернативную реализацию клиента SSH, который обеспечивал бы каждое проксируемое соединение отдельной SSH-сессией.
Я проделал такую работу и реализовал его: Rapid SSH Proxy. Эта реализация обеспечивает каждое проксируемое соединение отдельной SSH-сессией, поддерживая пул подготовленных SSH-сессий для удовлетворения поступающих запросов подключения с минимальной задержкой.
Порядок работы с ним такой же, как у ssh -ND 1080 : на стороне клиента запускается локальный SOCKS5-прокси, принимающий соединения и напрявляющий их в туннель через SSH-сервер.
Следует особо отметить ключевую особенность: никакого стороннего ПО не нужно устанавливать на сервер — rsp работает как ssh-клиент с обычным сервером OpenSSH. Сервером может быть любая unix-подобная операционная система, а так же Windows и Windows Server (в новых версиях OpenSSH теперь доступен в компонентах системы).
Приведу сравнение скорости через сервер в США:
| OpenSSH | rsp |
|---|---|
![]() |
![]() |
SOCKS5 внутри TLS
В случае с TLS очевидным решением было бы использовать stunnel или аналогичную TLS-обёртку для TCP-соединений с SOCKS5-сервером. Это действительно вполне хорошо работает, но возникает следующая проблема: рукопожатие TLS для каждого нового соединения занимает дополнительное время и появляется заметная на глаз задержка при установлении новых соединений из браузера. Это несколько ухудшает комфорт при веб-серфинге.
Для того, чтобы скрыть эту задержку, я подготовил специализированную замену stunnel на клиенте, которая поддерживает пул уже установленных, готовых к запросу TLS-соединений. Даже целых два — первый из них послужил прототипом:
- Pooling TLS Wrapper
- steady-tun
- Связка из реверс-прокси haproxy и SOCKS5-прокси dante, настроенная на защиту от активных проб со стороны клиентов, не прошедших аутентификацию по сертификату: github.com/Snawoot/ptw/tree/master/docker_deploy
- Мой форк go-socks5-proxy со встроенной поддержкой TLS: github.com/Snawoot/socks5-server
HTTP-прокси внутри TLS aka HTTPS-прокси
Есть небольшая путаница в отношении сочетания слов «HTTPS» и «прокси». Есть два понимания такого словосочетания:
- Обычный HTTP-прокси без шифрования, который поддерживает метод HTTP CONNECT и через который может успешно работать HTTPS.
- HTTP-прокси, принимающий TLS-соединения.
Примечательно, что ни в одном браузере нет простой возможности задать в настройках HTTPS-прокси через пользовательский интерфейс (то поле HTTPS-прокси, которое там есть, как раз относится к первому случаю). Но это не представляет собой большой трудности.
Поперебирав различные готовые варианты, я решил написать свой HTTP(S) прокси-сервер: dumbproxy.
Ключевой особенностью получившегося решения является то, что современные браузеры (Firefox и семейство Chrome, включая новый MS Edge) могут работать с ним без какого-либо дополнительного ПО на клиенте (см. руководство по настройке клиентов).
Следует отметить особенности реализации в отношении противодействия активным пробам со стороны DPI. HTTP-прокси легко распознать, подключившись к нему и осуществив попытку какого-либо запроса стороннего ресурса. Если прокси имеет авторизацию, то по стандарту он должен отвергнуть запрос с кодом 407, специфичным именно для HTTP-прокси, и предложить возможную схему для авторизации. Если прокси работает без авторизации, то он выполнит запрос, чем так же себя выдаст. Есть как минимум два способа решения этой проблемы (и оба они реализованы в dumbproxy).
Первый способ заключается в том, чтобы использовать аутентификацию клиентов по сертификатам ещё на этапе TLS-рукопожатия. Это самый стойкий метод, и это действительно корректная причина, по которой любой обычный веб-сервер мог бы отвергнуть клиента.
Второй способ заключается в том, чтобы скрыть от неавторизованных клиентов код ответа 407, возвращая вместо него любой другой ответ с ошибкой. Это вызывает другую проблему: браузеры не смогут понять, что для прокси требуется авторизация. Даже если браузер имеет сохранённый логин и пароль для этого прокси, ответ 407 важен для определения схемы авторизации, по которой эти учётные данные должны быть отправлены (Basic, Digest и т. д.). Для этого нужно позволить прокси генерировать ответ 407 на секретный запрос, чтобы браузер мог запомнить схему авторизации. В качестве такого секретного запроса используется настраиваемый секретный домен (не обязательно реально существующий). По умолчанию этот режим выключен. Подробности можно посмотреть в разделе об аутентификации.
Заключение
Я пользуюсь этими решениями уже один год и в итоге они мне полностью заменили VPN, вместе с этим сняв все проблемы, с которыми сопряжено его использование.
Надеюсь, что эта статья добавит к арсеналу читателей новые подходы к защите трафика и будет им полезной.
P.S. Если вам важна анонимность вашего адреса в интернете, не забудьте выключить WebRTC в своём браузере. Провериться на утечки IP-адреса можно здесь.


