20.02 // Corridor: простой способ фильтрации утечек Tor-трафика на внешнем роутере


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

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


Пользователь Rusty Bird предложил простое решение[link1] — набор скриптов corridor[link2].

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

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

  1. Для этого на роутере запущен клиент Tor, который собирает данные статистики (консенсуса) тор-узлов. Также могут обрабатываться данные бридж-узлов.
  2. Данные передаются в Linux ipset только для сторожевых и корневых узлов (при необходимости — ещё и мостовых).
  3. Файрволл iptables разрешает для проходящего трафика только TCP-соединения и только с узлами из п. 2.

Принцип работы corridor требует двух сетевых интерфейсов (одним из них м.б. Wi-Fi), при этом он не защищает от атаки, в которой злонамеренное ПО, внедрившееся на компьютер пользователя, передаёт его IP-адрес или идентифицирующие данные на злонамеренный сторожевой узел Tor, который сотрудничает с этим клиентом вредоносного деанонимизирущего ПО. Для этого пользователь может подстраховываться дополнительными средствами, например такими, как виртуальные машины.

Набор shell-скриптов проекта выглядит крайне простым. В будущем автор предлагает упростить расшаривание Wi-Fi соединений — все обращения к портам 80 и 443, не относящиеся к Guard, DA и bridge узлам, будут перенаправляться на страницу Torproject.org (или на страницы выбора tails.boum.org, guardianproject.info, f-droid.org). Возможно включение DHCP-сервера для внутренней сети, чтобы к роутеру без проблем могло подключаться множество пользователей. Также автор считает перспективным использование установочных пакетов для минисистем Raspberry Pi / BeagleBone Black.

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

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

Автор предупреждает, что Corridor является неотлаженной концепцией с возможно невыявленными уязвимостями и не имеет официальной поддержки со стороны Torproject.

Источник: Corridor, a Tor traffic whitelisting gateway[link2], Tor-talks mailing list[link1].

Ссылки
[link1] https://lists.torproject.org/pipermail/tor-talk/2014-February/032152.html

[link2] https://github.com/rustybird/corridor