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

07.06.2019

TOR считается одним из самых надежных и эффективных методов защиты анонимности онлайн и обхода цензуры в Интернете.

TOR - аббревиатура «The Onion Router» - или «многослойного раутера»

После установки прокси TOR на компьютер пользователя, TOR начинает использовать несколько уровней в системе частных компьютеров и шифрование интернет-трафика.


TOR устанавливает соединение со всеми возможными узлами связи в сети TOR

Пользователь пропускает данные чрез тройную серию узлов TOR

Каждый из которых имеет уникальный шифр


Узел входа

Распознает пользователя и активный узел сети

Узел передачи

Распознает узлы входа и выхода

Узел выхода

Распознает узел передачи и конечное направление

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


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


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

Что такое TOR?

TOR (аббревиатура англ. «The Onion Router» или «многослойного раутера») – использует сеть частных компьютеров, называемых еще узлами, которые пересылают и шифруют интернет-трафик. В целом эта система достаточно сложная и запутанная, поэтому обеспечивает хорошую защиту от слежения со стороны властей.

TOR начали разрабатывать еще в 90-х годах. Основой разработок стали исследования федерального агенства DARPA. Первоначально исследования проводились на средства управления научно-исследовательских работ ВМС США. Позднее в число спонсоров разработок вошел Совет управляющих вещанием США, куда входит и «Голос Америки».

С момента запуска TOR в 2002-м году вышло его несколько версий, каждая последующая из которых сужала возможные лазейки для слежки за пользователями. Тысячи программистов-волонтеров по всему миру создали основу сети TOR – частную рассеянную паутину, которая «взбалтывает» данные и защищает от слежения и блокирования.

Как работает TOR

Обычно при работе в Интернете данные передаются от вашего компьютера к цели (сайту или результатам поиска) по глобальной сети из общественных серверов. По своей структуре «всемирная паутина» – открытое, свободное пространство, позволяющее данным свободно передвигаться от одного компьютера к другому. Тем не менее, такой дизайн имеет ряд недостатков в части обеспечения безопасности.

Для сравнения, cеть TOR с первого же шага при работе в ней пропускает трафик исключительно через ее узлы – входа, передачи и выхода – каждый из которых обладает собственным шифром. Благодаря такой конфигурации ни один из компьютеров сети TOR не имеет данных об источнике запроса и его конечном направлении и даже шифрах сети, что позволят защитить информацию о пользователях.

Анонимная передача данных от одного узла к другому в подсети TOR зарекомендовала себя как надежный инструмент защиты, взломать который очень трудно. Передача данных через TOR подобна игре в кошки-мышки, при этом у мышки – тройной уровень защиты. Задача кота в этом случае становится очень сложной.

Плюсы работы в сети TOR

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

Возможные минусы TOR

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

Популярные браузеры Firefox, Chrome, Internet Explorer и другие имеют недостатки в системах защиты, которыми могут воспользоваться заинтересованные лица для того, чтобы получить личную информацию пользователей. Именно поэтому, вместо традиционных, настоятельно рекомедуется использовать специальный браузер, уже встроенный в TOR.

Браузер TOR также блокирует такие плагины как Java и Flash, которые не зашифрованы и могут стать лазейкой для осуществления слежения в Интернете.

Компьютеры пользователей также могут быть инфицированы вирусами и различными вредоносными программами – это одна из предполагаемых тактик, использованных Агенством национальной безопасности США (NSA) для взлома анонимности пользователей TOR. По этой причине TOR – значительно менее безопасный инструмент при работе в интернет-кафе, где на компьютерах уже может быть установлены программы слежения.

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

Хороший вариант решения этой проблемы – использование TOR вместе с VPN – безопасной сетью – на выходе. Это защитит вас, и доставит данные к конечной цели.

Подведем итоги

Если вы заинтересованы в защите личной информации и эффективном инструменте для обхода цензуры, TOR – отличный вариант.

Тем не менее, TOR – сложный и относительно медленный инструмент для работы в сети, поэтому тем, кому в этом процессе не хватает терпения, могут посчитать TOR не слишком подходящей программой.

Не стоит при этом забывать об одном: как следует из документов, «слитых» Эдвардом Сноуденом, аналитики Агенства национальной безопасности США назвали TOR «королем высокой безопасности, его Величеством Анонимностью в Интернете», добавив, что «что пока на этот трон других претендентов нет».

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

Как правило, в базовой прошивке роутер умеет раздавать интернет на один или несколько LAN-портов, а также обслуживать собственную беспроводную сеть. Более продвинутые модели зачастую включают один или несколько портов USB, куда можно подключить, например, принтер или флэшку с файлами.

Однако всё богатство возможностей этого железа открывается при использовании открытых прошивок. Для новичков - dd-wrt, для более продвинутых - серия open-wrt и прочие wrt-based.
В настоящей статье речь пойдёт о настройке анонимизированной wifi-точки на базе роутера Asus RT-N16 с прошивкой dd-wrt и optware.

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

Итак, имеем роутер с прошитым dd-wrt. У этой специфической модели, увы, нет поддержки Open-wrt (или, по крайней мере, не было на тот момент, когда это потребовалось. Сейчас уже появилась бета, но она пока что не претендует на стабильность).

Что потребуется ещё? Если ограничиться только лишь tor, то, возможно, ничего. Можно обойтись без всего optware и даже без внешней флэшки. Нужно лишь найти, куда упихать в роутер около 1,5Мб бинарника. Я, тем не менее, поднимал у себя не только лишь точку доступа, а полноценный домашний сервер, основной задачей которого было поддерживать сеть (основные службы - DNS, DHCP), раздавать интернет, содержать небольшую (гигабайт этак на 500) файлопомойку с доступом по NFS (ну, звиняйте. Windows не использую, поэтому SAMBA не нужна), самостоятельно пополнять эту файлопомойку свежими торрентами, хостить несколько веб-морд для разных поделок (весь фарш: - lighttpd, php, mysql и даже sphinx), служить failsafe-сервером для загрузки Ubuntu по сети (чтобы при надобности в «мёртвое тело» вставлять не флэшку с образом, а сетевой кабель). И, видимо, всё (а может и забыл чего). Для того, чтобы внешне всё было красиво и с минимумом проводов - жёсткий диск на 640гб для всего задуманного был помещён прямо внутрь роутера, и свободного места тем самым существенно прибавилось. А tor на роутере ставился, скорее, из любопытства. Однако - прижился и стабильно работает.

Для установки и настройки необходим доступ к роутеру через telnet или (что гораздо безопаснее) через ssh. Доступ можно устроить (или подсмотреть) в веб-интерфейсе dd-wrt.
Сперва устанавливаем tor:

Root@DD-WRT:~# ipkg install tor

Затем правим его конфиг. В случае с optware он располагается в /opt/etc/torrc. Опять же, замечу, что путь к конфигу по умолчанию вовсе не является обязательным. Программу всегда можно запустить с другим файлом конфигурации, но его придётся явно указывать в опциях запуска. В этом плане путь по умолчанию всё же проще, покуда делает запуск программы более лаконичным.

Конфиг по умолчанию хорошо прокомментирован, и основную настройку можно произвести, просто читая эти комментарии, без всяких сторонних руководств. В моём случае роутер обслуживает домашнюю сеть 192.168.1.0/24. В ней я решил сделать классический tor с доступом как через прокси socks5 на порту 9100. Помимо этого я решил сделать анонимизированную точку доступа, которая пустит пользователей в сеть 192.168.2.0/24, где вся связь с внешним миром будет лишь через tor (прозрачный прокси), либо просто обрублена. Иными словами - мы имеем wifi-точку, подключившись к которой мы никак не попадём ни к соседям из той же сети (192.168.2.0/24), ни в мою домашнюю сеть (192.168.1.0/24), ни на локальные сервисы роутера. А можем попасть только в интернет, причём только анонимным образом (через tor).

Для этого в конфиге прописаны следующие локальные параметры:
Для домашней сети:

SockListenAddress 192.168.1.5:9100

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

Для анонимной сети:

TransPort 9040
TransListenAddress 192.168.2.1
DNSPort 9053
DNSListenAddress 192.168.2.1

В анонимной сети клиенты никуда подключаться не будут, а указанные порты и адрес нужны лишь для настройки правил iptables.

Помимо этих настроек также имеет смысл назначить адрес виртуальной сети:

VirtualAddrNetwork 10.192.0.0/10

Этот адрес необходим в случае перехода по внутренним анонимным сервисам (т.н. "hidden service") тор-сети. Это адреса сайтов, располагающиеся в домене.onion. Такого домена в реальной жизни нет; однако будучи в tor, их собственный DNS распознаёт такие адреса и выводит вас к нужному ресурсу, спрятанному где-то в глубине сети. При этом фактический ip-адрес такого сайта скрыт, и узнать его невозможно. В этом случае для программ, которые сперва разрешают адрес узла через DNS, а потом подключаются к полученному ip-адресу, tor-демон создаёт временный адрес из указанной маски виртуальной сети. Иными словами, при попытке подключиться к какому-нибудь узлу superpuper.onion он «разрешится» в адрес, например, 10.192.0.1. И программа, подключаясь к этому адресу, будет через «луковые слои» tor-шифрования достигать нужного ресурса.

Что касается настройки «публичной» части конфига - там всё, согласно комментариям в самом файле.
В результате этих настроек мы получим демона, который
1) является proxy-socks с адресом 192.168.1.5:9100
2) является прозрачным proxy с адресом 192.168.2.1, причём помимо tcp-трафика умеет обрабатывать DNS-запросы.

С локальным socks-прокси всё ясно. Просто настраиваем любой браузер в домашней сети на выход в интернет через указанный прокси - и всё работает.

Ничуть не сложнее доступ с удалённой машины (у нас же есть ssh-консоль на роутер - значит, ничего не мешает просто пробросить порт:

Ssh -L localhost:9100:192.168.1.5:9100 homerouter

И после этого на той машине заработает Socks5 по адресу localhost:9100.

Теперь настраиваем точку доступа.

Для этого в gui dd-wrt заходим во вкладку wireless и там добавляем виртуальный интерфейс. Имя придумайте сами (я назвал бесхитростно: tor_network). Конфигурация сети - unbridged (т.е. точка не имеет связи с другими интерфейсами и как бы образует свой собственный замкнутый мирок). Запрещаем там же маскарадинг и мультикаст и назначаем адрес сети: 192.168.2.1/255.255.255.0. Затем на вкладке wireless security настраиваем, если нужно, доступ к точке. Я в своём случае поставил «disabled», т.е. создал открытую точку.

Таким образом у нас на роутере работают одновременно две разные сети: домашняя (защищённая WPA2) и вновь созданная tor_network, которая изначально открыта. Впрочем, это не даёт никому никаких привилегий, поскольку подключившись к этой открытой сети мы никуда не попадём:)

Двигаемся дальше. На вкладке Setup/Networking ищем в самом низу раздел DHCPD и добавляем запись для интерфейса wl0.1 (это, собственно, и есть железячное имя нового виртуального wifi-интерфейса), чтобы он назначал адреса из подсети 192.168.2.0/24. Скажем, 50 адресов начиная со 100 вполне хватит.

Теперь подключаясь к нашей открытой точке мы получим внутренний ip-адрес.
Осталось лишь подключить эту точку к прозрачному tor.
Это делается с помощью iptables:

CRNET="192.168.2.0/24"
TORCMD="iptables -t nat -A PREROUTING -i wl0.1"
TORPORT="9040"
TORDNS="9053"

# transparent tor for tor_network wireless
$TORCMD -p udp --dport 53 -j REDIRECT --to-ports $TORDNS
$TORCMD -p udp --dport 67 -j RETURN
$TORCMD -d $CRNET -j DROP
$TORCMD -p tcp --syn -j REDIRECT --to-ports $TORPORT
$TORCMD -j DROP

Что делаем?
1. Редиректим весь udp-трафик на 53-й порт (dns) на порт нашего демона.
2. Пропускаем спокойно весь udp-трафик на 67-й порт (там висит dhcp)
3. Весь остальной трафик во внутреннюю открытую сеть, откуда бы он ни был, отсекаем.
4. Редиректим весь tcp-трафик на порт прозрачного прокси нашего демона.
5. Весь остальной трафик открытой сети отсекаем.

Этот скрипт можно вставить в Administration/commands и сохранить как firewall-скрипт.

Проверяем работу: подключаемся к точке tor_network и открываем адрес

Задумались над тем, как работать в сети анонимно? Не желаете, чтобы вас «узнавали по IP». Для этого существует решение – the onion router (TOR). Эта программка поможет вас защитить от наблюдения за вами в Internet при помощи анализа потока данных. Т.е., при использовании этого приложения никто, кроме вас, ни сможет узнать, кто вы, где вы находитесь и что посещаете в Internet.

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

Как это работает и зачем это нужно

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

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

Работа технологии TOR

Что можно сделать при помощи TOR:

  • Посещение сайтов, которые заблокировало ваше правительство, провайдер или системный администратор.
  • Можно работать через прокси-сервер.
  • Если у вас заблокирован трафик ваших IM (ICQ, Mailru-агент, джоббер и д.р.), то с помощью TOR их можно запустить.
  • TOR не нужно устанавливать. Поэтому не стоит бояться запрета на установку программ, выставленную вашим системным администратором.

Работа с TOR

Скачиваем приложение

TOR, как и любое другое приложение лучше скачать с официального сайта – torproject.org.

Заходим на сайт, находим картинку с надписью – Download Tor и жмем по ней.

Кнопка для скачивания TOR

На странице, которая откроется, в правом нижнем углу выбираем нужный вам язык меню программы.

Жмем кнопку оранжевого цвета с надписью – Download. Размер установочного файла примерно 22 мБ.

Устанавливаем приложение

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

Выбор места распаковки

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

Т.к. программа не требует установки то ее можно распаковать на любой носитель информации и в дальнейшем производить запуск с любого компьютера.

Выбрав нужный каталог, жмем кнопку – Extract. Ждем какое-то время, пока архив распакуется.

Распаковка приложения

По завершению распаковки в выбранном вами месте должна появиться папка – Tor Browser.

Папка – Tor Browser

Внутри этой паки находится файл – Start Tor Browser. Он и используется для запуска программы.

Файл запуска программы

Запускаем приложение

Здесь все просто. Дважды клацаем на – Start Tor Browser. Ждем пока программа будет выполнять нужные ей действия.

Процесс запуска программы

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

Меню программы

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

Теперь при запуске, программа будет находиться в трее и будет иметь три значения:

  • «Желтая луковица» – приложение запускается.
  • «Зеленая луковица» – приложение работает.
  • «Зачеркнутая луковица» – приложение остановлено.

Браузер – Mozilla Firefox должен показывать окно как на картинке ниже.

Работа Mozilla Firefox

Если вы видите у себя такое окно, значит TOR работает. Но его действие будет распространяться лишь на браузер – Mozilla Firefox. И если его закрыть, то и TOR завершит свое действие. Поэтому, «мозилу» можно свернуть в трей и настроить другой браузер на работу с TOR.

Настройка браузера Opera для работы с TOR

Для того чтобы понять работает ли TOR на вашем браузере, следует перейти по ссылке – https://check.torproject.org/?lang=ru.

Вот что должна показать Opera.

Сообщение браузера Opera

Чтобы заставить Opera работать с TOR, зайдите в ее настройки.

Настройка Opera

Для этого нажимаем кнопочку – Opera (обведена синим прямоугольником, картинка выше), в выпадающем меню выбираем пункт – Настройки (обведен красным прямоугольником), а в нем – Общие настройки (обведен зеленым прямоугольником). Также можно нажать сочетание клавиш – Ctrl + F12.

Попадаем в настройки Opera.

Меню настроек Opera

Здесь выбираем вкладку – Расширенные, затем пункт – Сеть.

Меню – Сеть

В меню – Сеть, жмем кнопку – Прокси-серверы. В появившемся окне заполняем все, как показано на картинке ниже.

Меню – Прокси-серверы

Заполнив необходимые поля, жмем – Ок и перезагружаем браузер.

Производим проверку браузера на работу с TOR (переходим по ссылке указанной выше). Должна быть такая картинка.

Работа Opera

Все, теперь работать в сети можно анонимно. Учитывайте, лишь, то, что скорость работы будет не слишком высокой, т.к. ваши запросы будут идти не по прямому пути, а через сервера TOR.

The Onion Router

Мы уже писали что использовать TOR не есть хорошо но пользователи все равно спрашивают как его лучше настроить. Исходя из таких просьб я решил выложить статью как установить и настроить TOR на роутер. Для этого необходимо купить любой роутер на который можно установить OpenWRT, многие роутеры серии TP-Link, которые имеют свободное место в памяти, позволяют это сделать. Сам много писать не люблю поэтому сделаю копипаст))

Установка TOR на OpenWRT

Для установки tor на OpenWrt достаточно выполнить

Opkg install tor

Если вы собираете пакеты для себя вручную, либо хотите встроить этот пакет прямо в прошивку то на этапе конфигурации прошивки OpenWRT нужно выбрать:

Network ---> tor

Для сборки в виде пакета, или

Network ---> <*> tor

Для того чтобы встроить пакет прямо в прошивку.

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

1. Обязательно настройте и синхронизируйте время чеpез ntp. Tor использует системное время для каких то своих действий. Неправильная дата может привести к проблемам при старте tor или к его не корректной работе.

2. При установке tor должен создать пользователя tor и группу tor. При создании группы инсталлятор у меня допустил ошибку и в файле /etc/group не поставил перенос строки для группы tor. Скорее всего это у меня единичный баг, однако будьте внимательны.

3. Проверьте все права на файлы необходимые tor они должны иметь маску 755 и принадлежать tor:tor
Настройка TOR.

Открываем конфигурационный файл /etc/tor/torrc и правим:

1. Если вы хотите чтобы все компьютеры которые подключены к роутеру (неважно по кабелю или wifi) имели возможность получить доступ к TOR через SOCKS proxy необходимо раскоментировать и проправить строку:

SocksListenAddress 192.168.120.1:9100 # listen on this IPort also

Где 192.168.120.1 – ip адрес вашего роутера для локальной сети, а 9100 – порт на котором будет socks сервер для сети tor.

2. Опциями SocksPolicy можно явно указать какие ip адреса будут иметь (или не иметь) доступ к socks серверу. В файле конфигурации эти опции закомментированы – рекомендую их раскомментировать и настроить под себя.

3. Если по каким то причинам tor не стартует воспользуетсь опцией Log для выяснения проблемы.

Собственно больше никаких настроек не нужно, и можно запускать tor.
Запуск Tor

Запускаем тор следующей командой:

/etc/init.d/tor start

Если tor уже запущен либо при старте возникают ошибки вида:

Could not bind to 127.0.0.1:9050: Address already in use. Is Tor already running?

Необходимо остановить tor:

И запустить его заново как написано выше.

Если лог включен, то признаком успешного запуска и подключения к сети tor будет строка:

Feb 21 19:12:17.034 Tor has successfully opened a circuit. Looks like client functionality is working.
Feb 21 19:12:17.035 Bootstrapped 100%: Done.

Однако есть ряд программ которые не умеют работать с socks протоколом. Эту проблему можно решить средствами самого tor + iptables. Для этого необходимо включить в tor режим прозрачного проксирования. В таком случае на подключенных к роутеру машинах вообще никаких настроек делать не нужно. Весь трафик будет сразу проходить через tor.
Использование прозрачного прокси в Tor

Для этого в конфигурационном файле /etc/tor/torrc правим:

AutomapHostsOnResolve 1
TransPort 9040
DNSPort 53

Тем самым прозрачный прокси будет слушать порт 9040.

Перезапускаем tor:

Killall -9 tor
/etc/init.d/tor start

Настройка iptables

Далее необходимо весь трафик завернуть на этот порт. Для этого необходимо использовать iptables с опцией REDIRECT –to-port. Для использования этой опции необходимо дополнительно собрать и установить пакет iptables-mod-nat-extra. В противном случае вы получите ошибку вида:

Iptables v1.4.6: unknown option `--to-ports"

Установить пакет можно тривиально выполнив

Opkg install kmod-ipt-nat-extra

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

-> Network
-> iptables
iptables-mod-nat-extra

После установки пакета необходимо “завернуть” трафик на прозрачный прокси сервер:

Iptables -t nat -A PREROUTING -p tcp -d ! 192.168.120.1 --dport 80 -j REDIRECT --to-ports 9040

Что означает – перебрасывать весь трафик идущий на 80-й порт (и не адресованый для 192.168.120.1) на порт 9040, на котором как раз и находится прозрачный прокси.

Тоже делаем и для dns запросов:

Iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53

Остальной udp трафик прийдется либо пропускать без анонимизации, либо резать.

Собственно все. Весь трафик приходящий на роутер будет перенаправлен в сеть tor без каких – либо настроек компьютеров в вашей локальной сети! Все ваши действия в сети будут анонимны.

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

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

  • Обычные сайты открывались как обычно
  • Запрещенные сайты открывались через 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 ли напрямую, нужно всегда иметь ввиду что ваши логины и пароли в принципе могут оказаться в папке с литерами на столке у человека в погонах.

Вот и все!

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