Tor обход блокировки. Прозрачный обход блокировок и доступ к сети Tor. Чего хотят добиться Госдума с Роскомнадзором

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

На самом деле все уже придумали за нас и мы будем использовать готовое решение.

Знакомьтесь – это Tor.

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

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

С теорией на этом закончим и перейдем к установке и настройке системы.

Заходим на страничку загрузки системы Tor , где выбираем вариант с русским интерфейсом и скачиваем файл установки. Размер файла около 25 мегабайт.


Запускаем скаченный файл, выбираем место установки и жмем кнопку Extract

После завершения установки никаких новых ярлыков у нас на рабочем столе не появится, поэтому открываем каталог, в который мы ставили систему, и запускаем из него файл Start Tor Browser.exe


Откроется окно программы в котором будет отображаться процесс подключения


Если в вашей сети доступ в Интернет осуществляется через прокси сервер, то процесс подключения у вас остановится на этапе создания шифрованного подключения


Жмём на кнопку Настройки


В появившемся окне переходим на вкладку Сеть

Настраиваем все, как показано на рисунке, указав свой адрес прокси и порт

Жмем на кнопку Выход


Заново запускаем Start Tor Browser.exe

Ждем пока произойдет подключение к системе Tor


После этого у вас откроется встроенный в систему браузер Firefox, через который вы и сможете анонимно посещать любые сайты



Зачем нужен VPN

С помощью VPN-сервисов можно обходить блокировки сайтов, которые не работают в России (например, Spotify). Но это не единственное, зачем они нужны. Удаленные работники и сотрудники филиалов подключаются по VPN к корпоративным сервисам, тем самым они не ставят данные компании под угрозу. Люди, которые выходят в интернет через общественный Wi-Fi и боятся, что их данные перехватят, тоже используют VPN, чтобы защититься от злоумышленников.

Как же он работает? Если обычно компьютер подключается к интернету через сервер провайдера, то VPN-сервис настраивает туннель между вашим компьютером и удаленным сервером. Таким образом вы выходите в интернет обходным путем. Все данные внутри туннеля шифруются, поэтому провайдер и хакеры не знают, куда вы заходите под VPN-соединением и что делаете в интернете. При этом сайты не видят истинный IP-адрес вашего компьютера, поскольку вы работаете под чужим адресом. VPN (Virtual Private Network) создает безопасную частную сеть внутри незащищенного интернета.

Как его будут блокировать?

Саркис Дарбинян : «Есть множество способов, которыми может воспользоваться человек: изучить вопрос и с легкостью настроить собственный VPN, использовать иные решения, такие как Psiphon, Tor, турборежимы браузеров, плагины, приобрести иной VPN-сервис, который заботится о пользователях и предпринимает оперативные меры».

К чему приведет блокировка?

Артем Козлюк : «Практически весь бизнес завязан на VPN. Под угрозу встают виртуальные частные сети любых предприятий, от мелких до крупных. Сбои в работе VPN могут произойти в любой момент из-за некорректной работы по правоприменению нового закона. Мы бесконечное число раз видим, как Роскомнадзор исполняет эти законы. Во-первых, они неграмотно написаны с технической стороны, во-вторых, в процессе правоприменения Роскомнадзор наращивает эту техническую безграмотность до новых масштабов».

Маркус Саар : «До сих пор не ясно, как будет происходить проверка и контроль. VPN, в отличие от формы анонимайзера, - это закрытая сеть, и для доступа к ней необходимо приобрести платную подписку и установить ПО. Причем у некоторых сервисов нет своего ПО, и необходимо настраивать подключение вручную, используя конфигурационные файлы, ключи и сертификаты. Второй вопрос - насколько рационально «бить» по технически подкованным пользователям, которые дошли до использования VPN, Tor и других инструментов. Ведь если они один раз нашли в себе силы и желание обойти цензуру, то сделают это снова и снова».

Саркис Дарбинян : «Блокировка операторами связи VPN-трафика однозначно означает колоссальный ущерб всему корпоративному сектору, цифровой экономике страны и понижение защищенности российских граждан в глобальной цифровой среде перед лицом иностранных спецслужб, корпораций и злоумышленников, использующих уязвимости для слежки и похищения данных. Закрыть на 100% возможность передавать и получать информацию по VPN не удавалось еще никому, даже в азиатских и мусульманских странах с репрессивными режимами. У провайдеров есть списки IP-адресов самых популярных VPN, которые они с какой-то периодичностью обновляют и блокируют. Но VPN-трафик тоже научился маскироваться. Провайдер VPN может создавать новые IP-адреса хоть каждую минуту (плюс бесконечный IPv6), поэтому делать это будет все сложнее и дороже».

Российские власти о запрете сервисов для обхода блокировок. Под его действие попадает браузер Tor, использующий множественную подмену IP-адресов, но его не так-то просто одолеть. В Tor предусмотрена защита от блокировок с помощью так называемых «мостов».

Как обойти блокировку Tor:

1. Запустите браузер Tor и перейдите по адресу bridges.torproject.org.

2. Нажмите Get bridges и введите символы с изображения (скорее всего, получится не с первого раза).

3. Скопируйте список выданных мостов.



4. Нажмите на иконку Tor слева от адресной строки и выберите "Tor Network Settings".

5. Выберите "My Internet Service Provider (ISP) blocks connections to the Tor network" («Мой провайдер интернета блокирует соединение с сетью Tor»).

6. Нажмите "Enter custom bridges" («Ввести мосты вручную»).

7. Вставьте скопированные ранее мосты и нажмите OK.

8. Перезапустите браузер Tor. Теперь вы можете посещать сайты, которые были заблокированы в Tor вашим провайдером.

Если у вас не получается зайти на bridges.torproject.org, отправьте письмо с любым содержанием на адрес

Что если вам хочется ходить в сеть без надуманных ограничений, но не хочется каждый раз в браузере подменять прокси? Что если вы хотите заходить и на запрещенные сайты, и на обычные, и чтобы при этом скорость, с которой открываются обычные сайты, не страдала? Что если вам интересно знать что творится в удалённых частях глобальной сети?

Исходя из этих соображений нам нужно чтобы:

  • Обычные сайты открывались как обычно
  • Запрещенные сайты открывались через Tor без настроек
  • Все сайты в зоне.onion тоже открываются без настроек

С одной стороны, требования противоречивые. А другой стороны, чего не сделаешь ради удобства!

Можно было бы вспомнить различные способы и средства для обхода DPI , но если не хочется ни о чем таком думать, а скорей даже хочется настроить и забыть, то аналогов Tor для решения поставленной задачи в части простого доступа к заблокированным сайтам нет.

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

Что нам нужно?

Для начала нам нужен или роутер, или сервер, работающий в качестве прозрачного моста, пропускающего через себя весь трафик. Это может быть и существующий сервер, это может быть и коробочка с Raspberry Pi. Могут подойти и обычные компактные роутеры с Linux, если на них в принципе можно поставить необходимые пакеты.

Если подходящий роутер у вас уже есть, то настраивать отдельно мост не нужно и можно .

Если же установка Tor на ваш роутер представляет проблему, то вам понадобится любой компьютер с двумя сетевыми интерфейсами и Debian Linux на борту. Его вы в конечном счёте подключите в разрыв сети между роутером, который смотрит во внешний мир, и вашей локальной сетью.

Если не до серверов и роутеров, то возможно .

Настроим мост

Настройка моста в Debian проблемы не представляет. Вам понадобится программа brctl , которая есть в пакете bridge-utils:

apt install bridge-utils

Постоянная конфигурация для моста задаётся в /etc/network/interfaces . Если вы делаете мост из интерфейсов eth0 и eth1 , то конфигурация будет выглядеть так:

# Отметим интерфейсы как настраиваемые вручную iface eth0 inet manual iface eth1 inet manual # Мост поднимается автоматически после перезагрузки auto br0 # Мост с получением IP по DHCP iface br0 inet dhcp bridge_ports eth0 eth1 # Мост со статическим IP iface br0 inet static bridge_ports eth0 eth1 address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1

Вам нужно выбрать какую-то одну конфигурацию для моста: с динамическим IP или статическим.

Обратите внимание что на этом этапе не обязательно включать сервер в разрыв сети. Можно обойтись и одним подключенным интерфейсом.

Попросим систему применить новые настройки:

service networking reload

Теперь можно проверить существование моста командой brctl show:

# brctl show bridge name bridge id STP enabled interfaces br0 8000.0011cc4433ff no eth0 eth1

Посмотреть выданный IP адрес, и проверить вообще факт выдачи какого-то IP по DHCP или статически, можно командой ip:

# ip --family inet addr show dev br0 scope global 4: br0: mtu 1500 qdisc noqueue state UP inet 192.168.1.2/24 brd 192.168.1.255 scope global br0

Если с IP адресами всё в порядке, то уже можно попробовать включить сервер в разрыв сети...

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

Если что-то работает не так же, как раньше, или вообще не работает, стоит сначала решить проблемы, лишь потом переходить к настройке собственно Tor.

Настроим демон Tor

Установка Tor выполняется обычно. Установим также базу данных привязки к странам:

apt install tor tor-geoipdb

В конец файла конфигурации /etc/tor/torrc нужно дописать директивы для включения функции прокси-сервера:

VirtualAddrNetworkIPv4 10.0.0.0/8 AutomapHostsOnResolve 1 TransPort 0.0.0.0:9040 DNSPort 0.0.0.0:5300

Перезапустим Tor и проверим что DNS в нашей конфигурации работает на каком-нибудь известном сайте:

# service tor restart # dig +short facebookcorewwwi.onion @localhost -p 5300 10.11.127.156

Последняя команда должна вывести IP из подсети 10.0.0.0/8 .

При перезапуске Tor по делу ругается на использование публичного IP для TransPort и DNSPort , которые в самом деле могут быть доступны посторонним. Исправим это недоразумение, разрешив только соединения из локальной сети (в моём случае это 192.168.1.0/24):

iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 9040 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 5300 -j ACCEPT iptables -A INPUT -p tcp --dport 9040 -j DROP iptables -A INPUT -p udp --dport 5300 -j DROP

Последние два правила можно пропустить если у вас для цепочки INPUT по умолчанию стоит правило DROP .

Настроим доступ для всей локальной сети

Чтобы все устройства в сети смогли зайти на сайты в Tor нам нужно переадресовать все запросы к выделенной сети 10.0.0.0/8 на порт встроенного прокси-сервера Tor:

iptables -t nat -A PREROUTING -p tcp -d 10.0.0.0/8 -j REDIRECT --to-port 9040 iptables -t nat -A OUTPUT -p tcp -d 10.0.0.0/8 -j REDIRECT --to-port 9040

Два правила для цепочек PREROUTING и OUTPUT мы добавляем чтобы схем работала не только с устройств в сети, но и с самого сервера. Если не требуется чтобы эта схема работала с самого сервера, то добавления правила в цепочку OUTPUT можно пропустить.

Переадресация DNS запросов к зоне.onion

Эту проблему можно было бы решить либо заменой DNS сервера на свой в DHCP ответах клиентам, либо, если у вас в сети не принято использовать локальный DNS сервер, перехватом всего DNS трафика. Во втором случае не нужно будет ровным счетом ничего настраивать, но все ваши клиенты, и вы в том числе, потеряете возможность делать произвольные запросы к произвольным серверам. Это очевидное неудобство.

Мы же будем переадресовать лишь DNS запросы, упоминающие домен.onion , на порт встроенного DNS сервера, оставляя все остальные запросы в покое:

iptables -t nat -A PREROUTING -p udp --dport 53 -m string \ --hex-string "|056f6e696f6e00|" --algo bm -j REDIRECT --to-ports 5300 iptables -t nat -A OUTPUT -p udp --dport 53 -m string \ --hex-string "|056f6e696f6e00|" --algo bm -j REDIRECT --to-ports 5300

Магическая строка 056f6e696f6e00 связана с особенностями передачи точки в DNS запросах : она передаётся в виде длины следующей после неё строки. Потому в начале нашей магической строки стоит 0x05 для пяти символов в слове onion . В конце строки стоит нулевой байт 0x00 потому что корневой домен (точка) имеет нулевую длину .

Такой подход позволяет ваши пользователям (и вам самим) пользоваться какими им удобно DNS серверами, а также запрашивать информацию у любых DNS серверов без посредников. Вместе с тем никакие запросы в зоне.onion не будут попадать в открытый интернет.

Теперь попробуйте достучаться до какого-нибудь популярного сайта в сети Tor с любого устройства в локальной сети. Например, так:

$ curl -I facebookcorewwwi.onion HTTP/1.1 301 Moved Permanently Location: https://facebookcorewwwi.onion/

Отладка и решение возможных проблем

Если хочется убедиться что никакие DNS запросы к.onion не идут дальше сервера, то их отсутствие можно проверить так:

ngrep -q -d br0 -q -W byline onion udp port 53

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

Если Firefox не видит.onion

Если вам это мешает, а перспектива случайной деанонимизации вас не волнует (ведь мы уже не пускаем DNS запросы к.onion в открытый интернет), отключить эту настройку можно в about:config по ключу network.dns.blockDotOnion .

Мобильный Safari и.onion

Программы под iOS, включая Safari и Chrome, в принципе игнорирует.onion при работе по такой схеме. Как исправить эту проблему в рамках такой схемы мне неизвестно.

Провайдер подменяет IP в DNS

Некоторые провайдеры из экономических соображений, вместо блокировки сайтов по IP или через DPI, лишь подменяют IP для DNS запросов по списку запрещенных сайтов.

Простейшим решением этой проблемы будет переход на сервера Google Public DNS . Если это не помогает, а значит ваш провайдер перенаправляет вообще весь DNS трафик на свой сервер, то можно перейти на использование Tor DNS, в свою очередь переадресовав весь трафик на него:

iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5300 iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 5300

В моей сети используются IP из 10.0.0.0/8

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

Кроме того, не обязательно использовать сразу весь диапазон - можно ограничиться и подсетью. Например, подойдет 10.192.0.0/10 .

Обход блокировок через Tor

Для выхода на заблокированные сайты через Tor прежде всего нужно убедиться что вы не меняете шило на мыло, используя выходные узлы подверженные тем же ограниченияем что и вы в силу географического нахождения. Это можно сделать указав в torrc выходные узлы в каких странах нельзя использовать.

ExcludeExitNodes {RU}, {UA}, {BY}

Обновляем реестр

Реестр не стоит на месте и список заблокированных сайтов пополняется. Потому вам нужно время от времени выгружать актуальный список IP и добавлять его в ipset . Лучше всего это делать не выгружая весь список целиком каждый раз, а выкачивая только изменения, например, отсюда c GitHub .

#!/bin/bash set -e mkdir -p /var/local/blacklist cd /var/local/blacklist git pull -q || git clone https://github.com/zapret-info/z-i.git . ipset flush blacklist tail +2 dump.csv | cut -f1 -d \; | grep -Eo "{1,3}\.{1,3}\.{1,3}\.{1,3}" | tee /var/local/blacklist/blacklist.txt | xargs -n1 ipset add blacklist

Возможно удалять и добавлять только изменившиеся в списке IP, для чего вам может пригодится git whatchanged .

Если вам подходит скрипт выше, то ему самое место в /etc/cron.daily/blacklist-update . Не забудьте дать этому файлу права на выполнение.

chmod +x /etc/cron.daily/blacklist-update

Сохраняем настройки

apt install iptables-persistent

dpkg-reconfigure iptables-persistent

К сожалению, такого же удобного пакета для ipset пока нет, но эта проблема решается скриптом /etc/network/if-pre-up.d/ipset:

#!/bin/sh ipset -exist create blacklist hash :ip cat /var/local/blacklist/blacklist.txt | xargs -n1 ipset add -exist blacklist

Обязательно нужно дать и этому скрипту права на выполнение:

chmod +x /etc/network/if-pre-up.d/ipset

При следующей перезагрузке этот скрипт выполнится и восстановит список заблокированных IP.

Если забыть о серверах...

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

Нет проблем! В этом случае все даже проще. Хватить добавить эти три строчки в torrc:

AutomapHostsOnResolve 1 TransPort 9040 DNSPort 5300

Затем эти два правила для iptables:

iptables -t nat -A OUTPUT -p tcp -d 127.192.0.0/10 -j REDIRECT --to-port 9040 iptables -t nat -A OUTPUT -p udp --dport 53 -m string \ --hex-string "|056f6e696f6e00|" --algo bm -j REDIRECT --to-ports 5300

И можно проверять. Доступ к заблокированным сайтам настраивается по инструкции выше.

Ложка дёгтя

Несмотря на простоту и удобство этот подход наследует часть недостатков сети Tor.

На запрещенные сайты в сети вы заходите от имени выходных узлов , что даёт администраторам выходных узлов принципиальную возможность наблюдать ваш трафик и ваши пароли, если для доступа к целевому сайту не используется шифрование (должны быть https в начале адреса или зеленый замочек 🔒 в адресной строке).

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

Если вы заходите на какой-то сайт по незащещённому соединению, через Tor ли напрямую, нужно всегда иметь ввиду что ваши логины и пароли в принципе могут оказаться в папке с литерами на столке у человека в погонах.

Вот и все!

Что-то все еще непонятно? Что-то нужно исправить или что-то особенно понравилось? Напишите ниже в комментариях.

С подобной инициативой - свободного интернета на наших глазах становится меньше. При этом большинство пользователей уверены, что Tor и VPN ограничить никак нельзя. Мы спросили по этому поводу совета у Михаила Лисняка, создателя медитативного сервиса по отслеживанию котировок валют и цен на нефть Zenrus и преподавателя Moscow Coding School, на чей курс сегодня стартовала запись .

VPN - если в двух словах - это создание виртуальной сети поверх другой сети, например нашего интернета. То есть между пользователем и VPN-сервером создаётся шифрованный канал, по которому пользователь подключается к другой сети, и оказывается, что человек из Москвы выходит в интернет, как будто он из, например, Амстердама. Мы сейчас рассматриваем один из вариантов VPN, который относится к инфоповоду, вообще различных типов и применений намного больше, но принципы работы у них абсолютно те же.

Tor - система маршрутизации на основе шифрования и распределённой сети узлов-посредников (ими могут быть и обычные пользователи Tor). При подключении к Tor клиент собирает список доступных узлов-посредников, выбирает несколько из них и по очереди шифрует каждый посылаемый пакет ключами выбранных узлов. Далее этот зашифрованный несколькими ключами пакет посылается на первый (входной) узел-посредник. Тот расшифровывает свой ключ и отправляет пакет дальше, второй узел расшифровывает свой и так далее. В конце последний узел расшифровывает последний «слой» и отправляет пакет наружу, в интернет. Можно представить это себе как луковицу, с которой каждый последующий узел снимает слой. Собственно, так Tor и расшифровывается - The Onion Routing, то есть «луковая маршрутизация». Так как почти на всём пути пакета он зашифрован и никто, кроме входного узла, не знает отправителя пакета, система обеспечивает анонимность и защищённость трафика.

Но заблокировать работу Tor можно. Во-первых, Tor-клиент должен каким-то образом получить список входных узлов. Для этого клиент подключается к корневому реестру этих узлов. Если заблокировать доступ к этому корневому серверу, клиент не сможет получить список входных узлов сети и не сможет, естественно, подключиться к сети. Есть ручной способ получения узлов (например, через почту), но это, во-первых, не очень удобно, а во-вторых, при обнаружении органами надзора адресов этих узлов они всё равно сразу могут быть заблокированы.

Кроме того, существует такая система, как DPI - система анализа и фильтрации пакетов. Сейчас постепенно эта система внедряется в России у провайдеров. Она довольно дорогостоящая, поэтому не все провайдеры её используют. Но это пока. Думаю, в ближайшем будущем все магистральные провайдеры её установят. Эта система может анализировать трафик на низком уровне, определять тип этого трафика (даже зашифрованного, но не получая самого содержимого), фильтровать его и, если нужно, отдавать на блокировку. Сейчас эти системы уже умеют определять Tor-трафик по определённым признакам. Tor в ответ придумал систему маскировки трафика (obfsproxy), но постепенно и его учатся определять. А пользоваться всем этим становится всё сложнее и сложнее обычному пользователю.

Если власти захотят, то заблокируют всё для подавляющей массы пользователей. Особо упёртые гики смогут найти лазейки, но для обычного пользователя это не вариант

То есть запретить в целой стране Tor можно с помощью всё того же DPI. Когда введут уголовную ответственность за использование подобного софта, быстро проведут несколько показательных процессов, и на этом в основной массе всё закончится. Никаких вменяемых замен Tor пока нет. Тот же i2p банится точно так же. Сейчас блокировать Tor непросто, дорого, но вполне реализуемо, если государство этого сильно захочет.

В общем, всё уже придумано и используется, например, в славном Китае. Известные узлы блокируются, трафик анализируется DPI, и определившиеся пакеты блокируются (а информация об отправителе доносится куда следует). Плюс есть система «опережающего подключения», когда подозрительный пакет к какому-нибудь серверу на Великом файерволе «подвешивается», а файервол сам делает такой же запрос к этому серверу и анализирует ответ. А дальше по различным критериям определяется, можно или нельзя.

Если власти захотят, то заблокируют всё для подавляющей массы пользователей. Конечно, особо упёртые гики смогут найти лазейки, их будут прикрывать, будут находиться новые лазейки - это же вечный процесс, как это происходит с вирусами и антивирусами. Но для обычного пользователя это не вариант. Кроме того, всегда остаётся возможность ввести белые списки либо просто закрыть весь внешний интернет полностью. Но надеюсь, до этого не дойдёт.