что такое socks5 proxy
Разбор. Как работает SOCKS-прокси: плюсы, минусы, отличия от других технологий
В современном интернете, где все острее встает вопрос обеспечения анонимности, многие люди начинают задумываться о том, какие инструменты для этого им использовать. Здесь часто возникает путаница, поскольку не все разбираются в аспектах существующих технологий. А их огромное количество, и даже решение одной и той же задачи сокрытия реального IP-адреса может быть реализовано по-разному.
Сегодня мы расскажем о технологии SOCKS-прокси, принципах ее работы, преимуществах и отличиях от других инструментов обеспечения анонимности в интернете.
Примечание: это разбор для тех, кто не совсем в курсе деталей работы этой технологии и ее отличий от других инструментов, в данном топике мы не претендуем на глубокий анализ.
Что это такое
SOCKS – это интернет-протокол, который используется для передачи пакетов с данными от сервера к клиенту с помощью промежуточного прокси-сервера. На сегодня это наиболее продвинутая массовая технология для организации прокси. При ее использовании трафик проходит через прокси-сервер, который использует собственный IP-адрес, с которого уже идет финальное подключение к нужному адресату.
Наиболее свежая спецификация протокола – это SOCKS5. Она использует UDP- и TCP-соединения для пересылки трафика. Также в SOCKS5 используются несколько способов аутентификации:
Зачем используют SOCKS-прокси
Существует несколько причин применения SOCKS-прокси, вот две главных:
Обход блокировок
Самое очевидное применение прокси – сокрытие реального IP-адреса с какой-то целью, например для обхода блокировок. Например, если определенный IP-адрес попал в черный список какого-то сайта, до для доступа к нему будет достаточно использовать прокси.
В некоторых случаях таким способом можно преодолеть и блокировки, наложенные государственными органами. Однако здесь есть свои ограничения – при использовании технологии DPI (deep packet inspection), трафик будет блокироваться на уровне интернет провайдера еще до того, как он дойдет до сайта. В этом случае просто прокси не поможет.
Важный момент. Некоторые HTTP-прокси могут работать только с веб-страницами, а SOCKS5 умеет обрабатывать любой трафик. Такие прокси работают на более низком уровне
Повышение скорости и производительности
Другие разновидности технологии SOCKS работали с протоколом TCP, а новые прокси умеют обрабатывать и UDP-трафик.
TCP – это протокол с гарантированной доставкой сообщений между клиентом и сервером. TCP – это протокол с гарантированной доставкой сообщений между клиентом и сервером. Кроме того, это потоковый протокол. В UDP доставка всех пакетов не является гарантированным условием, и это пакетный протокол. Его использование позволяет пересылать трафик быстрее, поскольку не тратится время на повторную отправку недошедших пакетов, и разбор пакетов данных осуществляется быстрее, чем потоков.
SOCKS5-прокси никогда не изменяют заголовки пакетов с данными, что случается при использовании прокси других типов. Это позволяет улучшить производительность при пересылке трафика. Впрочем, здесь есть и свои минусы – заголовки могут содержать и персональные данные пользователей, а значит их, в теории, можно будет узнать.
SOCKS и VPN: в чем разница
Не все прокси-провайдеры пишут об этом, но основная разница при использовании SOCKS и VPN заключается в уровне анонимности, которого можно добиться. В случае VPN все передаваемые данные шифруются, чего нет в случае SOCKS-прокси.
Важно понимать, что прокси позволяют скрывать IP-адрес и решать ряд других задач (вроде обхода блокировок), но сами по себе они не являются инструментом обеспечения приватности. Пользователя прокси можно вычислить и перехватить его трафик.
Однако использование прокси в комбинации с VPN позволяет добиться хорошей скорости работы и лучше защитить чувствительную информацию.
В чем разница между HTTPS Proxy и Socks Proxy
Прокси: что это такое
Как работают прокси
Каждый компьютер имеет уникальный идентификатор, известный как IP-адрес. Это как почтовый адрес, который помогает почтальону найти ваше место жительства, то есть позволяет отправлять правильные данные на нужный компьютер.
Без прокси-сервера IP-адрес виден в Интернете. Вместо того, чтобы компьютер или устройство перенаправляло прямые запросы на веб-страницу, прокси-сервер принимает запрос с устройства и отправляет его от имени компьютера. Затем ответ отправляется обратно на устройство через прокси-сервер. Таким образом, вы остаетесь анонимным, поскольку IP-адрес замаскирован.
Прокси-серверы могут работать с данными, отправляемыми с компьютера, и получать нужную информацию. Они также настраивают IP-адреса, чтобы скрыть вашу личность от веб-серверов, шифруют данные при передаче, и, наконец, блокируют доступ к некоторым веб-страницам.
Какие существуют типы прокси?
Прокси-серверы развиваются, чтобы соответствовать различным требованиям пользователей.
Прокси HTTP / HTTPS: что это и в чем между ними разница?
Даже с введением SOCKS5, HTTP и HTTPS остаются самыми популярными прокси. HTTP — это сокращение от Hypertext Transfer Protocol.
Основная цель использования HTTP-прокси — организовать работу браузеров и других программ, использующих протокол TCP. Другими словами, это программы, которые используют стандартные порты 80, 8080, 3128. Прокси HTTP и HTTPS работают довольно просто. Браузер отправляет запросы прокси-серверу на открытие определенного ресурса (URL). Затем сервер получает данные и отправляет их браузеру.
Разница между HTTP и HTTPS заключается в том, что первый является незащищенным прокси, а второй — защищенным. Прокси-серверы HTTPS, также называемые HTTP через TLS или SSL, используются для безопасных соединений, например, при отправке данных вашей кредитной карты и других конфиденциальных данных.
Применение прокси HTTP / HTTPS
Что такое прокси-сервер SOCKS?
SOCKS — это сокращение от Socket Secure, сетевого протокола, который направляет сетевой трафик через брандмауэр, тем самым облегчая связь с серверами. SOCKS, в отличие от HTTP / HTTPS, не модерирует HTTP-заголовок — серверы передают данные через себя, ничего не меняя.
Сегодня SOCKS — это самый продвинутый протокол передачи данных, специально разработанный для программ, которые не поддерживают использование прокси напрямую. Они работают со стандартными портами 1080 и 1081. Прокси-сервер SOCKS эволюционировал от исходного SOCKS до SOCKS4 и последнего усовершенствования SOCKS5.
Прокси-серверы SOCKS4 поддерживают только TCP-соединения, в то время как более новые серверы SOCKS5 поддерживают UDP, TCP, авторизацию по логину и паролю, а также удаленный DNS-запрос. Для справки, SOCKS — полностью анонимный прокси.
HTTP или SOCKS: что выбрать?
1. Функциональность
Эти типы прокси предлагают почти ту же функциональность, с той разницей, что прокси-сервер SOCKS находится на выделенном порту, а прокси HTTPS можно комбинировать с прокси-сервером HTTP или даже с HTTP-сервером (или другой гибридной конструкцией).
Еще одно преимущество прокси-сервера HTTPS заключается в том, что некоторые администраторы блокируют SOCKS-прокси и разрешают HTTP/HTTPS-соединения, поэтому становится возможным обходить ограничения NAT/брандмауэра с помощью HTTPS-прокси.
Прокси HTTP работают только с использованием протокола HTTP и лучше всего подходят для действий, связанных с получением информации и данных через браузеры. Прокси HTTP и HTTPS работают на более высоком уровне, чем прокси SOCKS. Это позволяет им декодировать трафик, отправляемый через TCP-соединение.
С другой стороны, прокси-серверы SOCKS не используют протокол HTTP, а значит любой может просматривать передаваемую информацию. Вот почему прокси-серверы SOCKS используются только для общих целей. Одна особенность прокси-серверов SOCKS заключается в том, что они очень универсальны и могут обрабатывать различные запросы, включая HTTP / HTTPS, SMTP POP3 и FTP. Следовательно, их можно использовать для пересылки электронной почты, обмена P2P, передачи файлов и многого другого.
2. Скорость и производительность
SOCKS имеет преимущество в скорости, особенно при передаче или загрузке данных в Интернете. Это причина, по которой подобные BitTorrent и другие программы для торрент-клиентов используют прокси-серверы SOCKS.
3. Безопасность и конфиденциальность
Прокси-серверы SOCKS предлагают лучшую безопасность и конфиденциальность благодаря методу туннелирования, который использует явное разрешение, называемое рукопожатием, для открытия и закрытия туннеля. При использовании прокси-сервера SOCKS вероятность того, что ваши данные будут просмотрены веб-сайтами, невысока.
Основная причина, по которой прокси-серверы HTTP не считаются безопасными, заключается в том, что они достаточно умны, чтобы понимать и декодировать трафик. Единственный способ использовать HTTP-прокси с гарантированной безопасностью — это установить туннельные соединения.
Самый безопасный и анонимный способ обойти запрет IP-адресов и замаскировать другие параметры — это браузер защиты от обнаружения. Это, пожалуй, самое быстрое и удобное, но недешевое решение вопроса гарантированной анонимности.
4. Совместимость
Прокси-серверы HTTP являются лучшими с точки зрения совместимости, поскольку они подключаются практически ко всем инструментам. Когда дело доходит до портов, важно отметить, что HTTP использует только порт 80, в то время как HTTPS использует порт 443.
К сожалению, для прокси-серверов SOCKS совместимость со сторонними инструментами не столь высока. Но хорошо то, что они предлагают универсальность, когда дело доходит до настроек. Порт прокси-серверов SOCKS по умолчанию — 1080, но, в отличие от HTTP и HTTPS, они могут использовать любой.
Подведем итоги
Сделать правильный выбор без сравнения сложно. Самое крупное отличие — способы работы с большими массивами данных. При использовании прокси-серверов HTTP/HTTPS применяются привычные схемы обработки и передачи информации — туннелирование и кэширование.
При использовании прокси-серверов SOCKS обеспечивается анонимность по умолчанию, обрабатывается совершенно весь сетевой трафик без отправки пользователю. Это позволяет сократить до нуля передачу данных во внешние сети, благодаря чему обнаружить IP-адрес пользователя невозможно.
Другое различие — применение. HTTP-прокси используются для обеспечения работы с сайтами через браузер, в то время, когда SOCKS более универсальны и обеспечивают совместимость с прочими протоколами.
Если прокси-сервер требуется для посещения заблокированных сайтов и социальных сетей, например, Одноклассники или ВКонтакте в Украине, используются HTTP/HTTPS, а для обеспечения анонимности, парсинга данных, SMM и SEO предпочтение следует отдавать SOCKS.
Защищённые прокси — практичная альтернатива VPN
В интернете есть достаточное количество информации по теме шифрования и защиты трафика от вмешательств, однако сложился некоторый перекос в сторону различных VPN-технологий. Возможно, отчасти он вызван статьями VPN-сервисов, которые так или иначе утверждают о строгом превосходстве VPN-решений перед прокси. При этом многие решения тех же VPN-провайдеров, не смотря на маркетинговое позиционирование в качестве VPN, технически являются прокси.
На практике прокси больше подходят для повседневной защиты веб-трафика, не создавая при этом неудобств в виде заметной потери скорости и неизбирательности туннелирования. То есть при использовании хорошего прокси не стоит необходимость его отключать для комфортного пользования интернетом.
В этой статье расказано о преимуществах защищённого прокси перед VPN и предложены различные реализации, готовые к использованию.
В чём различие между VPN и прокси?
VPN — это общее название технологий для объединения внутренних сетей на уровне сетевых пакетов или кадров через соединение, установленное поверх другой сети (чаще всего публичной).
Прокси — это серверное приложение, осуществляющее соединения или запросы от своего имени и сетевого адреса в пользу подключившегося к нему клиента, пересылая в результате ему все полученные данные.
VPN осуществляет пересылку полезной нагрузки, находящейся на третьем или втором уровне сетевой модели OSI. Прокси осуществляют пересылку полезной нагрузки между четвёртым и седьмым уровнями сетевой модели OSI включительно.
И VPN, и прокси могут иметь или не иметь шифрования между клиентом и сервером. Обе технологии пригодны для того, чтобы направить трафик пользователя через доверенный сервер, применяя шифрование по пути до него. Однако, подключение через прокси делает это более прямолинейным способом, не привнося дополнительную инкапсуляцию сетевых пакетов, серые адреса самой VPN сети и изменения таблицы маршрутизации, которые привносит VPN просто лишь для того, чтобы сетевой стек системы пользователя направил трафик через нужный сервер.
Преимущества прокси
Требования к прокси
Выбирая для себя реализацию защищённого прокси-сервера, я отметил несколько критериев, которым она должна удовлетворять:
Особенности obfs4
В спецификации протокола obfs4 есть места, которые вызывают вопросы. В рукопожатии со стороны клиента используется номер часа от начала эпохи UNIX, который потом участвует в HMAC-подписи. Сервер, принимая такой пакет от клиента проверяет его, подставляя номер часа по своему времени. Если всё верно, то отвечает своей частью рукопожатия. Для борьбы с разбросом часов сервер должен ещё проверять предыдущий и следующий час.
Зная такое характерное поведение, можно проверить сервер на границе следующего и послеследующего часа, воспроизведя одно из прошлых записанных рукопожатий со стороны клиента. Если сервер перестанет отвечать своей частью рукопожатия в это самое время, то это достаточное основание, чтобы судить, что сервер обслуживает протокол obfs4.
Судя по всему, автор со временем осознал эту проблему и в коде obfs4 реализована защита от обнаружения через воспроизведение. В спецификации она нигде не описана.
Однако, такая защита наоборот упрощает работу по блокировке протокола: сетевому фильтру достаточно в случае сомнений задержать отправку рукопожатия от клиента, перехватив её, а затем отправить сообщение с рукопожатием первым. Таким образом он спровоцирует защиту от воспроизведения уже против клиента, вынуждая сам сервер блокировать клиента.
Следующий момент, вызывающий сомнения это формат «кадра» с данными. Выглядит он следующий образом:
Первые два байта каждого кадра это длина пакета, гаммированная с ключом, который вычисляется от предыдущих ключей. Как он вычисляется ключ не столь важно, главное, что настоящая длина пакета подвергается операции побитового исключающего ИЛИ каким-то ключом. Это значит, что можно инвертировать бит в этой части данных и подмена не будет сразу замечена. Если инвертировать младший значащий бит этого поля, то длина кадра станет либо на единицу меньше истинной, либо на единицу больше. В первом случае это приведёт к сбросу соединения через небольшое случайное время из-за ошибки распаковки 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-сессий для удовлетворения поступающих запросов подключения с минимальной задержкой.
Следует особо отметить ключевую особенность: никакого стороннего ПО не нужно устанавливать на сервер — rsp работает как ssh-клиент с обычным сервером OpenSSH. Сервером может быть любая unix-подобная операционная система, а так же Windows и Windows Server (в новых версиях OpenSSH теперь доступен в компонентах системы).
Приведу сравнение скорости через сервер в США:
SOCKS5 внутри TLS
В случае с TLS очевидным решением было бы использовать stunnel или аналогичную TLS-обёртку для TCP-соединений с SOCKS5-сервером. Это действительно вполне хорошо работает, но возникает следующая проблема: рукопожатие TLS для каждого нового соединения занимает дополнительное время и появляется заметная на глаз задержка при установлении новых соединений из браузера. Это несколько ухудшает комфорт при веб-серфинге.
Для того, чтобы скрыть эту задержку, я подготовил специализированную замену stunnel на клиенте, которая поддерживает пул уже установленных, готовых к запросу TLS-соединений. Даже целых два — первый из них послужил прототипом:
HTTP-прокси внутри TLS aka HTTPS-прокси
Есть небольшая путаница в отношении сочетания слов «HTTPS» и «прокси». Есть два понимания такого словосочетания:
Примечательно, что ни в одном браузере нет простой возможности задать в настройках HTTPS-прокси через пользовательский интерфейс (то поле HTTPS-прокси, которое там есть, как раз относится к первому случаю). Но это не представляет собой большой трудности.
Поперебирав различные готовые варианты, я решил написать свой HTTP(S) прокси-сервер: dumbproxy.
Ключевой особенностью получившегося решения является то, что современные браузеры (Firefox и семейство Chrome, включая новый MS Edge) могут работать с ним без какого-либо дополнительного ПО на клиенте (см. руководство по настройке клиентов).
Следует отметить особенности реализации в отношении противодействия активным пробам со стороны DPI. HTTP-прокси легко распознать, подключившись к нему и осуществив попытку какого-либо запроса стороннего ресурса. Если прокси имеет авторизацию, то по стандарту он должен отвергнуть запрос с кодом 407, специфичным именно для HTTP-прокси, и предложить возможную схему для авторизации. Если прокси работает без авторизации, то он выполнит запрос, чем так же себя выдаст. Есть как минимум два способа решения этой проблемы (и оба они реализованы в dumbproxy).
Первый способ заключается в том, чтобы использовать аутентификацию клиентов по сертификатам ещё на этапе TLS-рукопожатия. Это самый стойкий метод, и это действительно корректная причина, по которой любой обычный веб-сервер мог бы отвергнуть клиента.
Второй способ заключается в том, чтобы скрыть от неавторизованных клиентов код ответа 407, возвращая вместо него любой другой ответ с ошибкой. Это вызывает другую проблему: браузеры не смогут понять, что для прокси требуется авторизация. Даже если браузер имеет сохранённый логин и пароль для этого прокси, ответ 407 важен для определения схемы авторизации, по которой эти учётные данные должны быть отправлены (Basic, Digest и т. д.). Для этого нужно позволить прокси генерировать ответ 407 на секретный запрос, чтобы браузер мог запомнить схему авторизации. В качестве такого секретного запроса используется настраиваемый секретный домен (не обязательно реально существующий). По умолчанию этот режим выключен. Подробности можно посмотреть в разделе об аутентификации.
Заключение
Я пользуюсь этими решениями уже один год и в итоге они мне полностью заменили VPN, вместе с этим сняв все проблемы, с которыми сопряжено его использование.
Надеюсь, что эта статья добавит к арсеналу читателей новые подходы к защите трафика и будет им полезной.
Типы Прокси HTTP, HTTPS, Socks
Прокси (в переводе с английского “proxy” – доверенное лицо) – это промежуточный транзитный веб-сервер, который используется как посредник между пользователем и конечным сервером.
Рассмотрим ситуацию, когда пользователь посещает веб-сайт Google.com через прокси. В этом случае пользователь отправляет запрос к прокси на открытие веб-сайта. Прокси от своего имени открывает веб-сайт Google.com и затем передает данные пользователю.
Виды и типы прокси
Прокси сервера бывают нескольких типов:
HTTP, HTTPS и Socks прокси используются чаще всего, поэтому рассмотрим их подробнее.
HTTP прокси
Принцип работы: программа или браузер посылает запрос прокси-серверу на открытие определенного URL ресурса. Прокси-сервер получает данные с запрашиваемого ресурса и отдает эти данные вашему браузеру.
HTTP прокси позволяют:
Виды прокси по анонимности
HTTP прокси по анонимности делятся на следующие виды:
HTTPS прокси
При использовании обычного HTTP прокси всю информацию, передаваемую через него, можно перехватить с помощью самого прокси или на более низком уровне.
Например, все Интернет-провайдеры перехватывают и логируют абсолютно всю вашу активность в сети Интернет. Эти логи хранятся провайдером и является обоснованным доказательством ваших действий в сети Интернет. Поэтому для безопасности личных данных применяется протокол HTTPS, при этом весь передаваемый трафик шифруется устойчивым к взлому алгоритмом.
Принцип работы: прокси-сервер соединяется с ресурсом и ваш трафик шифруется. При таком методе отсутствует возможность узнать, какая именно информация передается через прокси-сервер (это ограничивает применение прокси как фильтра). Также в процессе шифрации и дешифрации прокси участия не принимает. Этим занимается клиентская программа (браузер) и целевой сервер. Таким образом, HTTPS proxy занимается пассивной передачей зашифрованной информации и не производит никакой обработки передаваемой информации. Такой метод работы позволяет использовать HTTPS proxy для передачи практически любого TCP-протокола. То есть HTTPS прокси может использоваться и как POP3, SMTP, IMAP, NNTP прокси.
Socks прокси
Протокол Socks разрабатывался для программ, которые не поддерживают использование прокси напрямую. Стандартные порты 1080, 1081.
Данный протокол пережил множество изменений и на данный момент используются две версии протокола:
Socks не занимается модерацией HTTP-заголовков. Socks-сервер будет передавать информацию через себя в чистом виде. Поэтому все Socks серверы являются анонимными.
Socks прокси не передает информацию о вашем IP адресе. Веб-сайт не сможет определить использование прокси. Соединение с веб-сайтом будет абсолютно прозрачным, также как если бы вы работали с ним напрямую. При этом веб-сайт будет видеть IP адрес прокси, а не ваш реальный IP адрес.
Socks поддерживает все протоколы, включая HTTP, HTTPS, FTP.
Мы рекомендуем использовать Socks 5 прокси
Сравнение разных типов прокси
Таблица сравнения разных видов прокси.
HTTP | HTTPS | Socks |
---|---|---|
Кэширование страниц, быстрая загрузка | ||
Поддержка https (SSL) соединения | ||
Полностью анонимный протокол |
Откуда берутся прокси
Прокси – это программа, которая управляет запросами от пользователя к конечному серверу. Такая программа устанавливается на компьютере пользователя или на сервере.
Платные прокси настраиваются с целью получения материальной выгоды от продажи и чаще всего отличаются уровнем анонимности.
Бесплатные прокси
В Интернете существуют веб-сайты, где публикуются бесплатные прокси. С какой целью публикуются бесплатные прокси? Ответить на этот вопрос однозначно сложно. Бесплатные прокси можно использовать для обучения работе с прокси. Бесплатные прокси подходят вам, если анонимность не важна.
Причины появления бесплатных прокси:
Использование публичных прокси очень опасно. Так как мы уже знаем, что прокси может кешировать, собирать статистику по пользователям. Соответственно некоторые организации заинтересованы в размещении публичных прокси с целью слежения за пользователями.
Мы не рекомендуем использовать бесплатные публичные прокси.
Как использовать прокси
Если ваша цель – это анонимное использование сети Интернет, мы рекомендуем использовать только Socks 5 прокси.
Для целей парсинга данных, SMM, SEO и онлайн игр можно использовать HTTP/HTTPS прокси.
Прокси можно настраивать в браузере или через специальные программы.
Цепочки прокси
Прокси сервера можно выстраивать в цепочки. С точки зрения анонимности и скорости работы достаточно использовать цепочку из 2 прокси в разных странах. Данные будут последовательно проходить через 2 прокси.
Помните, что Интернет-провайдер может логировать и прослушивать ваш трафик через прокси.
Мы рекомендуем использовать VPN + 2 прокси для обеспечения вашей анонимности.