Прокси и их виды. Как работают прокси.

Прокси ("proxy" - доверенный, уполномоченный) - промежуточный сервер для передачи трафика между клиентом (пользователем) и конечным узлом (веб-сайтом).

proxy прокси

Прокси могут использоваться для достижения следующих целей.

  • Анонимный доступ к ресурсам в сети Интернет. При подключении к конечному узлу виден ip-адрес proxy-сервера, но не реальный адрес пользователя.
  • Получение доступа к ресурсам имеющим ограничение на количество подключений по ip-адресу (файлообменники и т.д.).
  • Обход блокировок в сети Интернет. При использовании proxy-сервера обращение идет не напрямую к заблокированному ресурсу, а сначала к proxy-серверу, который в свою очередь пересылает полученный ответ клиенту.

По используемым протоколам и уровням анонимности делятся на несколько видов.

HTTP прокси

Прокси подобного вида используют только протокол HTTP. В основном используются для веб-серфинга и являются самым распространенным видом. Работают с браузерами и некоторыми другими программами поддерживающими HTTP протокол.

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

Данный вид proxy подразделяется на несколько типов. Тип proxy определяет HTTP заголовок отправляющийся с каждым запросом от proxy-сервера.

Элитные (высоко анонимные) прокси

Элитный тип proxy не отправляет никаких HTTP заголовков, которые могли бы помочь в идентификации клиента, что обеспечивает высочайший (для прокси) уровень анонимности. В большинстве случаев вообще не удается определить даже факт их использования, поскольку на конечном узле все выглядит будто клиент подключен напрямую.

Анонимные прокси

Анонимные proxy в отличии от элитных, передают в HTTP заголовках информацию о использовании proxy-сервера, но не передают реальный ip-адрес клиента. На конечном узле видна информация о использовании proxy, но узнать ip-адрес клиента не получится.

Прозрачные и искажающие прокси

Прозрачные proxy в обязательном порядке передают реальный ip-адрес клиента и не обеспечивают никакой анонимности. Выступают только в роли посредника для передачи трафика и используются разве что для обхода блокировок.

Искажающие proxy передают неверный ip-адрес клиента или только его часть, но и этой части может хватить хотя бы для определения интернет-провайдера клиента. Обеспечивают минимальный уровень анонимности и довольно редко встречаются.

HTTPS (CONNECT) прокси

HTTPS прокси может подключаться к серверам работающим с SSL шифрованием благодаря методу CONNECT.  Данный метод подключения позволяет туннелировать протоколы более низкого уровня с помощью протокола HTTP. Таким образом SSL соединения передающиеся транспортным протоколом TCP могут передаваться посредством proxy-сервера.

Proxy-сервер в настройках которого разрешены подключения на 443-й порт методом CONNECT считается HTTPS-сервером. Если подобные подключения не разрешены, то подключиться к сайту использующему HTTPS не получится.

Работает это примерно следующим образом. Клиент соединяется с HTTP proxy-сервером поддерживающим метод CONNECT. От клиента к серверу посылается срока вида:

"CONNECT target_host:target_port HTTP/1.x\r\nUser-Agent: User Agent\r\n"

В ответ на это сервер может вернуть клиенту один из трех возможных ответов. Сервер или потребует авторизацию, или вернет состояние удачного соединения, или отдаст ошибку.

Если сервер затребовал авторизацию:

HTTP/1.x 407 Proxy auth required
Proxy-agent: Proxy Agent
Proxy-authenticate:...
<Empty line>

То следующим шагом клиента будет такой ответ:

CONNECT target_host:target_port HTTP/1.x
User-agent: User Agent
Proxy-authorization: basic password_in_base64_encoding
<Empty line>

При удачном соединении сервер вернет следующее:

HTTP/1.0 200 Connection established
Proxy-agent: Proxy Agent
<Empty line>

Таким образом открытие туннеля для передачи данных по схеме CLIENT -> SERVER SERVER -> CLIENT будет выглядеть так:

CONNECT target_host:target_port HTTP/1.x
User-agent: User Agent
<Empty line>
HTTP/1.x 407 Proxy auth required
Proxy-agent: Proxy Agent
Proxy-authenticate: ...
<Empty line>
CONNECT target_host:target_port HTTP/1.x
User-agent: User Agent
Proxy-authorization: ...
<Empty line>
HTTP/1.x 200 Connection established
Proxy-agent: Netscape-Proxy/1.1
<Empty line>
<Data tunneling to both directions begins>

Открытый туннель может использоваться не только как клиент - proxy канал, но и как proxy - proxy канал. HTTPS прокси позволяют выстраивать цепочки для передачи данных.

При использовании SSL соединений все пользовательские данные и HTTP заголовки находятся внутри зашифрованных TCP-пакетов. Поэтому HTTPS proxy-сервер не может их изменять, следовательно такой вид прокси всегда будет анонимным.

SOCKS прокси

SOCKS прокси являются самым прогрессивным протоколом передачи данных. Протокол разрабатывался специально для программ не могущих использовать прокси напрямую. В последней версии протокола SOCKS5 появилась поддержка авторизации пользователей по логину и паролю и поддержка передачи UDP-пакетов.

Поскольку SOCKS находится на более низком уровне чем HTTP, то такие сервера не могут модифицировать HTTP заголовки, а следовательно они анонимны по умолчанию. На конечном узле не получится определить ваш реальный ip-адрес, как и факт использования proxy, только ip-адрес SOCKS proxy-сервера и ничего больше.

SOCKS сервера могут объединяться в цепочки, тем самым повышая анонимность пользователя и поддерживают практически все протоколы передачи данных, что делает использование SOCKS proxy-сервера самым лучшим выбором, как для анонимности, так и для обхода блокировок.

Установка и настройка SOCKS5 прокси-сервера Dante.

Установка и настройка HTTP/HTTPS прокси-сервера Tinyproxy для Ubuntu 16.04.

Установка и настройка HTTP/HTTPS прокси-сервера Tinyproxy для Ubuntu 18.04.

Ответить:

Please enter your comment!
Please enter your name here