Раздельный запуск Torbrowser от нескольких пользователей с общим системным Tor-процессом и локальная прозрачная торификация
Цель варианта
- Использовать торбраузер с локальным системным тором вместо поставляемого в составе TBB.
- Осуществить одновременную работу нескольких пользователей системы через системный тор с построением различных цепочек для каждого пользователя посредством подключения к разным портам SocksPort и посредством прозрачной торификации на разные порты TransPort, DNSPort для других програм (опционально — для самого TBB использование прозрачной торификации устарело и не рекомендуется).
- Все пакеты, посланные из под конкретного пользователя торбраузером должны направляться файрволлом только на определённые порты локального хоста, связанные с работой системного тора. Это существенно исключает возможность утечки пакетов при уязвимостях в торбраузере, но существенно не защищает от преднамеренных целевых атак на данную конфигурацию.
Конфигурация тор
Остановите системный тор: /etc/init.d/tor stop. Если в текущей версии с этим есть проблемы, используйте kill.
Закомментируйте в конфиг-файле /etc/tor/torrc опцию SocksListenAddress 127.0.0.1. Она устарела, по умолчанию тор слушает только локальные соединения.
В случае проблем с запуском /etc/init.d/tor start, можно в ответ на соответствующие ошибки добавлять опции:
Для прозрачной торификации по умолчанию и для работы через SocksPort тора используются опции:
Следует добавить нужное количество дополнительных портов:
Поскольку порт 9051 занят, то добавим опции управляющего порта:
Управляющий порт м.б. использован для работы с программой tor-arm, показывающий статистику соединений с сетью tor и позволяющей менять цепочки для всех соединений.
Запуск тор /etc/init.d tor start не должен приводить к ошибкам и должен показывать, что все внесённые в конфиг порты работают нормально.
Настройка iptables
Во многих системах по-умолчанию используется сложный механизм инициализации, конфигурирования и хранения конфигов iptables. Подразумевается, что этот механизм отключен, а вместо него используется шелл-скрипт, который пользователь поддерживает самостоятельно. В Debian/Linux он может быть размещён, например, в /etc/network/if-pre-up.d. Здесь приведены только фрагменты такого скрипта, относящиеся к рассматриваемому варианту торификации.
Закроем снаружи все открытые тор-порты, даже если они принимают только локальные соединения:
# $IPTABLES -- переменная содержит путь к iptables, обычно:
IPTABLES="/sbin/iptables"
# $INET_IFACE -- внешний сетевой интерфейс, обычно:
INET_IFACE="eth0"
# blocked_myports -- пользовательская цепочка для заблокированных портов
iptables -N blocked_myports; iptables -F blocked_myports
for PROTOCOL in TCP UDP; do
for PORT in $(seq 53 58) $(seq 9040 9045) \
$(seq 9050 9055) 9059 9060; do
$IPTABLES -A blocked_myports -i $INET_IFACE -o !lo -p $PROTOCOL \
--dport $PORT -j DROP
done
done
$IPTABLES -A INPUT -p TCP -j blocked_myports
$IPTABLES -A INPUT -p UDP -j blocked_myports
Сделаем исключение из обработки для пакетов идущих на локальный хост.
$IPTABLES -t nat -A OUTPUT -o lo -j RETURN
$IPTABLES -t nat -A OUTPUT -d 127.0.0.1 -j RETURN
Правило для первого анонимного пользователя:
#Разрешим соединение с SOCKS-портом
$IPTABLES -t filter -A OUTPUT -d 127.0.0.1 -p tcp -m owner \
--uid-owner anonym_1 --dport 9051 -j ACCEPT
###Прозрачная торификация [начало]###
#
#Не требуется при работе TBB
#Может быть использована для одновременной работы других програм
#При отсутствии необходимости эти опции м.б. закоментированы
# Прозрачная торификация TCP на порт 9041
$IPTABLES -t nat -A OUTPUT -p tcp -m owner --uid-owner anonym_1 \
-m tcp -j REDIRECT --to-ports 9041
$IPTABLES -t filter -A OUTPUT -d 127.0.0.1 -p tcp -m owner --uid-owner anonym_1 \
-m tcp --dport 9041 -j ACCEPT
#Прозрачная торификация DNS на порт 54
$IPTABLES -t nat -A OUTPUT -p udp -m owner --uid-owner anonym_1 \
-m udp --dport 53 -j REDIRECT --to-ports 54
$IPTABLES -t filter -A OUTPUT -d 127.0.0.1 -p udp -m owner --uid-owner anonym_1 \
-m udp --dport 54 -j ACCEPT
#
###Прозрачная торификация [конец]###
#Больше этому пользователю ничего не разрешено:
$IPTABLES -A OUTPUT -m owner --uid-owner anonym_1 -j REJECT
По аналогии, правило для второго анонимного пользователя (с закоментированной прозрачной торификацией):
$IPTABLES -t filter -A OUTPUT -d 127.0.0.1 -p tcp -m owner \
--uid-owner anonym_2 --dport 9052 -j ACCEPT
#Прозрачная торификация закоментирована
# $IPTABLES -t nat -A OUTPUT -p tcp -m owner --uid-owner anonym_2 \
# -m tcp -j REDIRECT --to-ports 9042
#$IPTABLES -t filter -A OUTPUT -d 127.0.0.1 -p tcp -m owner --uid-owner anonym_2 \
# -m tcp --dport 9042 -j ACCEPT
#$IPTABLES -t nat -A OUTPUT -p udp -m owner --uid-owner anonym_2 \
# -m udp --dport 53 -j REDIRECT --to-ports 55
#$IPTABLES -t filter -A OUTPUT -d 127.0.0.1 -p udp -m owner --uid-owner anonym_2 \
# -m udp --dport 55 -j ACCEPT
$IPTABLES -A OUTPUT -m owner --uid-owner anonym_2 -j REJECT
Разрешим выход наружу самому системному тору:
TOR_UID="debian-tor"
$IPTABLES -A OUTPUT -m owner --uid-owner $TOR_UID -j ACCEPT
Использование tor-arm
Использование пакета Vidalia с системным Tor нецелесообразно из-за полного сворачивания её поддержки. Рекомендуется завести отдельно пользователя, включить его в группу tor-arm и запускать из под него утилиту tor-arm.
Следует избегать запуска tor-arm из под пользователя debian-tor, несмотря на то, что такая рекомендация имеется в пакете и долгое время оставалась неисправленной.
Настройка торбраузера
Начиная с четвёртой версии браузер позволяет автоапдейт. Но в ранних версиях четвёртой ветки стабильность и безопасность этого механизма не гарантировалась. Даже после его стабилизации безопаснее скачивать браузер вручную и проверять контрольные суммы, заверенные подписями GnuPG. Список рекомендуемых версий доступен по ссылке. Скачивание возможно с адреса
Скачанные файлы с подписями и суммами можно разместить в отдельном каталоге и проверить скриптом:
#! /bin/sh
echo > tbbchecklog.txt
sha256sum -c sha256sums-unsigned-build.txt 2>&1 | grep OK >> tbbchecklog.txt
echo >> tbbchecklog.txt
for a in sha256*.asc ; do
gpg --verify $a sha256sums-unsigned-build.txt >> tbbchecklog.txt 2>&1 ;
echo >> tbbchecklog.txt
done
echo >> tbbchecklog.txt
gpg --verify tor-browser-linux64*.asc >> tbbchecklog.txt 2>&1
echo >> tbbchecklog.txt
Перед ручным обновлением рекомендуется экспортировать старые закладки в файл, удалить старый распакованный каталог TBB. Впоследствии возможно импортировать закладки из файла обратно в новый распакованный браузер (вкладки: Bookmarks — Show all Bookmarks — Import and Backup).
Существует вероятность уязвимости в браузере, приводящая к утечке закладок. Поэтому следует рассмотреть целесообразность хранения определённых закладок торбраузера для конкретного анонимного профиля.
В распакованном каталоге TBB удалите расширение запуска Tor из связки:
Запустите TBB:
Зайдите в настройки: Edit → Preferences → Advanced → Network → Settings
И выберите опции:
Для другого пользователя следует выбирать другой порт, в соответствии с настройками файрволла. Следует также обращать внимание на возможность сброса этих настроек при перезапуске.
В адресной строке браузера нужно набрать about:config, для внесения некоторых опций, перечисленных в скрипте запуска start-tor-browser:
# extensions.torbutton.custom.socks_host 127.0.0.1
# extensions.torbutton.custom.socks_port <SocksPort>
# extensions.torbutton.inserted_button true
# extensions.torbutton.launch_warning false
# extensions.torbutton.loglevel 2
# extensions.torbutton.logmethod 0
# extensions.torbutton.settings_method custom
# extensions.torbutton.socks_port <SocksPort>
# extensions.torbutton.use_privoxy false
# app.update.auto false
В торбраузере, начиная с версии 4.5, организована корректная работа с SOCKS-портом, при этом для разных доменов выбираются разные исходящие узлы и существует возможность менять исходящий узел для каждой вкладки при помощи опции New Tor Circuit for this Site в Torbutton. При этом из-за удаления плагина tor-launcher, предназначенного для запуска локального (несистемного) Tor, часть опций tor-button будет недоступна. В связи с этим рекомендуется настраиваеть торбраузер на работу с системным тором именно через SOCKS-порт, а не через прозрачную торификацию. Прозрачная торификация может быть использована для этого же пользователя для работы с другими программами, но ей лучше не пользоваться при повышенных требования анонимности из-за опасениях утечки профилирующих и идентифицирующих данных, а также по другим возможным причинам.
После сохранения изменений следует перезапустить TBB. В разных вкладках на разных доменах TBB должен показывать разные IP-адреса, а при проверке через одинаковые домены — соответственно одинаковые в пределах жизни цепочки. Проверку наличия обновлений можно периодически осуществлять и вручную, например по основной ссылке рекомендуемых версий и скачивания новой версии.
Можно запустить два и более TBB из под разных пользователей одновременно. При одновременной проверке они должны показывать разный IP-адрес исходящих узлов при проверке на одном и том же домене.
При работе из-под одного пользователя для смены профиля рекомендуется перезапустить браузер и сменить все цепочки программной tor-arm или отправкой сигнала системному тор-процессу.
комментариев: 9796 документов: 488 редакций: 5664
В TBB из коробки — один тор-клиент, один браузер,
один фюрер. Если через тор начнут ломиться разные программы, как их развести по разным портам и цепочкам? Как удалённо управлять перестройкой цепочек? Как выбирать, что всё-таки можно выпустить, хотя и с профилированием по заголовкам, а что нужно заблочить?Т.е. придёться на самой пользовательской машине городить настройки локального файрволла, который бы работал в паре с тем, который на роутере. В итоге, теряется идея волшебной коробочки, чтобы «воткнул и всё работает» с любой пользовательской ОС.
Тяжело даже представить, насколько это (не)реалистичный подход.
Не совсем понял зачем нужен разнос по портам и цепочкам, но это тоже делается на роутере средствами nat и редиректора (я использовал redsocks). Запусть несколько Торов на разных портах, редиректор на нескольких портах. Порты назначения --dport ассоциировать с портами редиректора, а их в свою очередь с портами Тора. Управлять перестройкой цепочек стандартным способом – скриптами по ssh, но для домохозяек можно и веб-интерфейс прикрутить.
Назначить для разных программ разные порты, которые будет слушать Tor. В этом случае, как говорят легенды, цепочки не будут пересекаться.
Вы посты хотя бы за текущий день читайте, прежде чем предлагать, а то порой доходит до смешного.
Ваша ссылка на другую тему (хотя и близкую по смыслу), всё подряд действительно не читаю.
Фильтрация по протоколам высокого уровня
— злоничего не даст, т.к. зловред всегда может сымитировать любой протокол, если захочет.Какие-то (ftp) просто отправить на помойку и перестать насиловать труп. Для того, что идёт поверх UDP, развивать другие протоколы (Tor UDP не умеет). И, вообще, TCP-протоколы, не являющиеся HTTP/HTTPS — большое зло для анонимности, их следует избегать:
Я бы больше полагался на фильтрование по ролям, а порты — плюшка внагрузку сверху, если надо. Роль — некоторый анонимный профиль, связанный с учётной записью. Если запись скомпрометирована, то зловред всегда найдёт выход наружу, если открыт хотя бы один порт, поэтому не стоит серьёзно полагаться на изоляцию по портам. Если пересечение чего-то с чем-то критично, эти «чего-то» надо разносить по разным юзерам, как минимум, но лучше — по разным виртуалкам.
За тем, чтобы экситы не могли связать разные ваши анонимные роли в одну. Если через одну и ту же цепочку идёт всё, то связывание становится почти тривиальным.
Если формално обсуждать такой наворот, то можно заметить, что он плохой, т.к. полагается на незлонамеренность программ. Зловред от какой-то из ролей может подцепиться к любому порту на роутере. Чтобы это исключить, нужна или авторизация или блокировка средствами файерволла на самой машине. Первое плохо тем, что одна роль сможет узнавать, на каких портах работает другая роль, а это утечка информации и уникального идентификатора, сильно облегчающего атакующему связывание ваших разных анонимных ролей в одну. А второе плохо, во-первых, тем же (вторая роль видит список портов и IP первой роли, если только не используются виртуалки или разные ПК для разных ролей), а, во-вторых, уже озвученным
Мы же обсуждаем защиту не только от ISP.
В самом Tor какие-то механизмы авторизации уже есть, но дело не в этом. Надёжно фильтровать по приложениям можно, только разнеся их по разным юзерам, иначе зловред легко может покрысить нужные кредентиалсы из настроек других программ, запущенных под тем же юзером.
Зря, кстати. Очень советую. Ценная информация тут ровным слоем размазывается по всем веткам.
P.S.: Для понимания рисков и угроз ознакомьтесь с этим уже сильно устаревшим баяном. Как показывают
абрикосысливы Сноудена про АНБ, оно пошло именно по предполагавшемся пути: эксплуатация уязвимостей в программах и запуск троянов.комментариев: 9796 документов: 488 редакций: 5664
В связи с новостью о выходе стабильной ветки 3.5.
1. Скачиваем (чем хотите, хоть предыдущей версией TBB):
2. Распаковываем после проверки подписи:
3. При запуске он будет пытаться запустить локальный тор, что нам не надо.
Идём в:
Удаляем:
После этого сам браузер отлично запускается без локального Tor, идём в свойства Torbutton, выбираем Transparent Torification (Requires custom transproxy or Tor router).
Нажимаем OK.
Набираем в адресной строке about:config.
Видим предупреждение: "This might void your warranty!"
Нажимаем кнопку: "I'll be carefull, I promise!"
В поле search набираем: torproject
Параметры:
меняем на:
остальные оставляем как есть, в т.ч.:
Т.к. эта стартовая страница сама по себе теперь никуда при (ре)старте не лезет.
Остальное вроде также как в теперь уже устаревшей версии FAQ.
По мере тестирования FAQ будет поправлен.
Ну, и стандартное замечание общего характера: лучше выбирать не «Transparent Torification», а «Use custom proxy settings», где указать порты системного Tor'а. Когда все программы прозрачным образом лезут через один и тот же Tor и одни и те же цепочки, это не есть хорошо:
Судя по этим комментариям, разделения цепочек1 по программам/пользователям/системам (ОС) можно добиться, если выполнено хотя бы в одном из следующих:
Я бы всем программам указывал прокси вручную и дополнил iptables правилами, которые бы логировали все попытки что-либо отправить сеть, минуя легитимные прокси.4
1Сам тип разделения тоже настраивается.
2Например, одна работает по протоколу SOCKS-4, а другая по SOCKS-5.
3До конца не понял, работает ли этот механизм сейчас вообще, а также, как он связан с выбором пароля для ControlPort.
4А прозрачная торификация таким утечкам вообще двери нараспашку открывает. Непосредственного и моментального деанона при этом, конечно, не будет, но аудит будет нулевым. Лучше не только тихо блокировать или тихо перенаправлять всё в Tor, но и знать о всех подозрительных действиях в системе. Эшелонированный подход к безопасности говорит как раз об этом.
комментариев: 11558 документов: 1036 редакций: 4118
С ControlPort он точно не связан. Речь о стандартной SOCKS-аутентификации, которую Tor может использовать для разбивки подключающихся к нему программ по разным группам. ControlPort — отдельный механизм аутентификации для доступа конкретно к управлению Tor-клиентом.
комментариев: 9796 документов: 488 редакций: 5664
Опция "new identity" при прозрачной торификации не работает. Вместо неё приходиться закрывать Torbrowser, сбрасывать цепочки каким-либо внешним способом и запускать Torbrowser заново. При этом он каждый раз лезет заново за проверками версий, это он только соединение с тором не определяет для экономии трафика (могу ошибаться). Проще иногда вручную сюда заглядывать. И с тех пор, как в торкнопке глючила настройка разных торбраузеров на разные торпорты (выставляете один порт, а работает через другой), то на это выработалась стойкая аллергия. Представьте, что вы выставляете разные порты внутри программ (главное самому ещё при этом не ошибиться), а они слетают в дефолтное состояние и разные программы начинают работать на одном порту. Проще завести кучу пользователей и твёрдо их снаружи разруливать файрволлом. Так надёжнее, логичнее и нагляднее — все настройки в одном месте, доступном только руту.
Иногда с отдельного профиля можно и не проксифицируемые. Например, почта забирается/отправляется через pop3s/smpts. Отпечатки сертификатов почтового сервера от подмены сверяются до передачи пароля от ящика. Свою личность (псевдоним) и почтовую программу от сервера (и эксита) в ряде случаев можно не скрывать. Но, например, таким образом не показывается провайдеру, когда и на какой почтовый сервер ходит пользователь, а серверу и получателю писем пользователь не показывет свой IP (местоположение). Профиль для почты запущен от соответственно отдельно заведённого в системе пользователя, который не связан с тор-браузером. Также от профилей других пользователей (осторожно) можно использовать массу других программ, которые не проксифицируются.
Могут быть доверенные (собственные) скрытые сервисы, с которыми можно соединяться вообще любыми программами и пр. Сценариев нестандартного применения, которые можно аккуратно использовать, может быть масса.
Поставьте себя на место следящей стороны и посмотрите, какую реальную информацию она может вытащить, а затем принимайте решения. Да, можно при этом себе ногу прострелить, поэтому рядовым пользователям по умолчанию таких опций не показывают.
Firewall жеВы сами всё сказали:Кстати, может быть, реально извернуться так, чтобы во всех программах был указан один и тот же порт Tor'а, а firewall раскидывал соединения на этот порт от разных юзеров по разным dst-портам (редиректы, перенаправления, rdr). Минус этого — фаейрволл, его глюки и ваши ошибки в его правилах становятся единой точкой отказа. Плюсы — в том, что враждебным друг по отношению к другу профилям трудно будет себя пересчитать, т.к. у всех будут одинаковые настройки.*
Возможно, ваш MTA показывает, но локальный IP. Кстати, не у всех локальный IP небелый.
Я вашу мотивацию понял. У меня в голове была другая картина: необходимость воспользоваться проксёй для выхода в сеть есть дополнительный препон-уловка для зловреда, которого запустят в вашем профиле. К примеру, у вас есть, как вы описываете, один профиль, из-под которого читается только почта. А что будет, если у противника есть exploit на ваш почтовый клиент или программу? Он получает все права. Если этот эксплоит массовый, а не против вас лично, он может не сообразить, что надо узнать настройки проксей в каком-нибудь
*Лень гуглить, но все, наверно, помнят историю с немецкими танками во времена ВОВ, количество которых было успешно определено противником по их заводским номерам.
комментариев: 9796 документов: 488 редакций: 5664
Будут скомпрометированы данные, обрабатываемые почтовой программой этого профиля, но противник ничего не узнает о других профилях, например, в которых крутятся только торбраузеры.
комментариев: 9796 документов: 488 редакций: 5664
Зачем его в группу добавлять? Ему доступа по сети к порту управления Tor'ом разве недостаточно?
комментариев: 9796 документов: 488 редакций: 5664
Т.е. в Linux рекомендуется cookie? Я смотрю на вывод ps, там как раз хэш указан.