Статьи

Анонимность в Интернете: прокси-серверы, SOCKS-прокси, http-прокси

29.04.2013

/

Обеспечение анонимности в Интернете становится все более горячо обсуждаемой и актуальной темой в наши дни. "Борьба с цензурой", "Рост количества кибер-преступлений", "Частная жизнь и персональные данные", "Законодательный запрет средств анонимизации в РФ", – подобные тренды в различных формулировках слышны все чаще. Краеугольным камнем всех этих направлений, вызывающим постоянные дискуссии, является понятие: "Анонимность".


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

Для начала проведем небольшой обзор подходов для обеспечения анонимности в Интернете, а именно рассмотрим принципы работы прокси-серверов.

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

Проанализируем возможность использования прокси-серверов, в том числе и "так называемых SSL", для обеспечения анонимности. Глобально любой прокси-сервер – это сервер, выступающий посредником между клиентом и ресурсом.

В разрезе обеспечения анонимности прокси-серверы бывают:

  • HTTP- (веб)-прокси-серверы. Такие серверы пропускают через себя только HTTP-траффик, по умолчанию добавляя в передаваемый траффик данные о применении прокси;
  • SOCKS-прокси-серверы. SOCKS — это сетевой протокол, позволяющим приложениям прозрачно использовать сервисы за межсетевыми экранами. В отличие от HTTP-прокси-серверов, SOCKS передает всю информацию, ничего не добавляя от себя, этим достигается "более высокий уровень анонимности" по сравнению с HTTP-прокси. Протокол SOCKS находится на сеансовом уровне модели OSI, этим достигается независимость от высокоуровневых протоколов: HTTP, FTP, РОРЗ и др., что и позволяет SOCKS пропускать через весь траффик, а не только HTTP. SOCKS вытеснил со временем специализированные FTP-, IRC-прокси и др.

Отдельно стоит упомянуть так называемые "анонимайзеры" или CGI-прокси, реализуемые с помощью скриптов на веб-сервере и представляющие клиенту веб-страницу, где он вводит адрес ресурса. После открывается страница запрошенного сайта, но адресом ее будет адрес CGI-прокси. Для работы с такими прокси не надо менять настроек браузера, но и обладают такие сервисы значительно меньшими возможностями.

Общая схема работы всех прокси-серверов заключается в следующем. Сначала клиент подключается к прокси-серверу и запрашивает какой-либо ресурс, расположенный на другом сервере. Затем прокси-сервер подключается к указанному серверу, получает ресурс у него, сохраняет в свой кэш и передает его клиенту, либо возвращает клиенту ресурс из своего кэша (если такой кэш есть). Исторически прокси-серверы предназначались для фильтрации и кэширования траффика, предоставления доступа в Интернет, а не для обеспечения анонимности.

Общая схема работы прокси-сервера представлена на рисунке 1.

Рисунок 1 – Схема работы прокси-сервера

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

Для анализа уязвимостей прокси-серверов приведем цитату из официальной справки Tor, где приводится объяснение, почему цепочки прокси-серверов небезопасны: https://trac.torproject.org/projects/tor/wiki/doc/TorFAQ...

Прокомментируем некоторые пункты:


"Первый узел Tor не видит адреса последнего узла, потому что он не может расшифровать сообщение для второго узла. Если хотя бы одному узлу можно верить, соединение безопасно (согласно принципу "луковой" маршрутизации).

Если вы используете "elite" или "anonymous" прокси-серверы или даже Socks-прокси, то:

  • Все соединения между вами и прокси-сервером незашифрованные.
  • Не путайте это с самой технологией SSL, но давайте представим, что вы подключаетесь к web-серверу, защищенному с помощью SSL:

Ваш пакет для первого прокси в цепочке из 5 серверов будет выглядеть так:

"Привет Proxy1, можешь ли ты переправить мое сообщение: "forward to Proxy3; forward to Proxy4; forward to Proxy5; forward to https://encrypted.google.com 'c8e8df895c2cae-что-нибудь-еще-здесь-(зашифрованное)-166bad027fdf15335b' "для Proxy2? Спасибо!"

  • Вы видите, что ваш траффик надежно зашифрован, и может быть расшифрован только на https-сервере, но каждый прокси-сервер в цепочке увидит адреса предыдущего и последующего узла.
  • То есть не существует способа зашифровать подобную информацию, нельзя сделать свою "луковую" маршрутизацию с помощью прокси. Протоколы прокси-серверов (http, socksX) не поддерживают шифрование".

Слово "SSL" рядом с именем прокси-сервера в большинстве случаев означает лишь то, что с помощью этого сервера можно получить доступ к https-ресурсам.

Продолжим цитирование:


"Вы вынуждены доверять каждому промежуточному узлу в цепочке. Возникает второй вопрос об открытых прокси, кто их владелец?

  • Большинство из них просто неправильно настроены, то есть их владельцы не знают об этом и совсем не хотят, чтобы кто-то еще их использовал.
  • Многие из них скомпрометированы и заражены вредоносным кодом.
  • Некоторые из них являются honeypot’ами, записывающими все действия или реализующими некоторые атаки: dns-спуфинг, ssl-спуфинг и т.д.
  • Лишь малая часть из них содержится просто щедрыми людьми, которые хотят сделать мир лучше и дать людям анонимность по аналогии с большинством администраторов серверов Tor".


Для понимания важной слабости HTTP-прокси-серверов рассмотрим такое понятие, как HTTP-заголовки. HTTP-заголовок – это строка в HTTP-сообщении с некоторыми параметрами вида: "Имя: значение". Например, следующее поле: "Date: Sat, 12 Dec 2012 15:41:52 GMT" возвращает от сервера клиенту текущее время и дату. Заголовков существуют достаточно много, ими при взаимодействии между собой обмениваются клиенты и сервера.

Нам интересен следующий заголовок: HTTP_X_FORWARDED_FOR, который поддерживается большинством прокси-серверов и, по сути, является стандартом для получения сервером оригинального адреса клиента при доступе к серверу через HTTP-прокси. И вот в этом заголовке, если его не фильтровать, передается вся цепочка прокси-серверов от начала до конца, например:

  • HTTP_X_FORWARDED_FOR: client1, proxy1, proxy2 …;
  • HTTP_X_FORWARDED_FOR: 129.78.138.66, 129.78.64.103.

Также к заголовкам, разглашающим деанонимизирующую информацию, относятся: HTTP_VIA, HTTP_FORWARDED и др.

Подобные заголовки должны фильтроваться, в мире существуют провайдеры, предоставляющие правильно настроенные анонимизирующие веб-прокси-серверы (например, на основе программы Privoxy, прокси-сервера, позволяющий фильтровать http-заголовки) или SOCKS-серверы, не передающие в расширенных заголовках пакетов информацию об адресе клиента. Так называемые "elite"-прокси или "high-anonymity"-прокси передают заголовок REMOTE_ADDR с адресом прокси-сервера, что позволяет адресату считать прокси-сервер настоящим клиентом.

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

Именно из-за указанных сложностей цепочки только из веб-прокси-серверов для обеспечения анонимности использовать не рекомендуется. При выборе между платным "SSL"/"Anonymous"/"Elite"/"SOCKS"-сервером и платным VPN-сервером свой выбор стоит остановить именно на VPN-сервисе. Как правило, веб-прокси-серверы, с точки зрения анонимности, подходят, в основном, для накручивания голосов в некорректно настроенных системах онлайн-голосований и других подобных задач.

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