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

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

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

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

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

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

• Source: lists.torproject.org/pipermail/tor-talk/2014-February/032152.html
• Soft: github.com/rustybird/corridor