Раздельный запуск 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
А зачем вам ланчер и его настройки? Он удаляется перед первым запуском безвозвратно за ненадобностью, а раз его нет, то и его настройки не появляются.
Строго говоря, не все. Т.н. third parties не сохраняются, а вот cookie для логина на pgpru.com сохраняются. Возможно, зависит, что сайт https. И можно их список через network settings посмотреть и вручную почистить. Но лучше эту опцию не включать.
Ещё: рестарт браузера в такой конфигурации не приводит к смене цепочек для доменов. Так что нужно после рестарта сбрасывать все цепочки через tor-arm или kill -s SIGHUP.
комментариев: 9796 документов: 488 редакций: 5664
Подробнее от Мозиллы.
С другой стороны, подробнее про Tor Undiscoverability
Старый тикет на тему.
Насколько я понимаю, теперь это всё не критично при использовании файрволла хоть с прозрачкой, хоть без. Даже если сайт сможет заставить торбраузер обратиться на эти порты, то файрволл не пропустит этого в обход тор.
P.S.: теперь по умолчанию поисковая (мета)система https://search.disconnect.me/, как было написано в блоге:
За тем, что чем меньше вмешиваемся в дефолтный бандл, тем лучше. Если б можно было штатно отключить запуск, это было бы лучше, чем недокументированным образом удалять ланчер
на свой страх и риск.Это понятно, раз доступа к ControlPort нету. Нужно и то и другое:
- Закрываем браузер.
- Рестартим цепочки.
- Открываем браузер.
Боюсь, как бы там не было задержек, из-за которых цепочки могут не полностью рестартнуться, а то браузер воспользуется старыми.Спасибо, смысл понятен.
ОК, надо будет затестить.
А зачем его закрывать?
Рестарт системного tor можно сделать armом или речь не о системном?
Чтоб почистить куки, историю, кэш, аутентификационные данные для авторизации на SOCKS-портах и всё тому подобное, что есть во временных файлах браузера, когда он запущен, но на диск не пишется.
О системном. Можно tor-arm'ом, но можно и через сигнал:
комментариев: 9796 документов: 488 редакций: 5664
Например, какие-то параметры SSL, которые можно посмотреть в сессии, на диск не сохраняются, но не поменяются пока не перезапущен браузер.
По поводу записи на диск. Есть какой-то непонятный баг. Сначала запись у меня была включена, затем всегда отключена. Так вот, даже при отключенной записи, если перезапустить торбраузер и открыть пустую вкладку, то на ней почему-то отображались снэпшоты и адреса посещённых страниц pgpru.com. Ни от чего другого не сохранилось, а от pgpru.com отображалось. Почистил историю через network settings — не помогло. Позакрывал мышкой все эти снэпшоты (или слипноты, как они правильно называются?), больше пока ничего такого не появлялось.
Вы раньше писали, что пользуетесь закладками. Я ими не пользуюсь уже лет десять, но всё же, по моим представлениям, они не должны уничтожаться перезапуском браузера. В некоторых неанонимных браузерах закладки, собственно, и отображались в виде «снэпшотов».
комментариев: 9796 документов: 488 редакций: 5664
Дело не в закладках. Допустим, у меня в закладках pgpru.com. Почему тогда в снимки попали все страницы, которые я на нём посещал, включая ссылку на редактирование этого руководства? А с других сайтов, которые (не) были в закладках — ничего? Может из-за сочетания https и cookie?
Я замечаю много странных глюков в работе TorBrowser'а. Например, иногда в youtube почему-то меняются шрифты на страницах, и ничего кроме зачистки директории TBB после этого не помогает. Чтобы не забивать себе голову всей массой того, что и как может быть внутри браузера размером в десятки мегабайт, можно воспользоваться виктимно-криминальным методом, он позволяет сильно не думать о том, что там и как происходит внутри:
Действительно, браузер — программа сложная. Вместо того, чтоб анализировать, её проще сразу записать в жётский криминал без права надолго сохранять свои данные на диск и применять к ней соответствующие методы.
Амнезию под рутом можно делать как всему $HOME, так и только конкретным TBB-директориям, куда распаковывался браузер. Даже под одним юзером можно иметь несколько таких директорий, каждая со своими настройками и для своей группы сайтов. Это не так безопасно, как разделение по юзерам, но если одновременно разные TorBrowser'ы не используются, а между сменами TorBrowser'ов всегда делается смена цепочек, это уже что-то. А если сделана полная амнезия (для $HOME и /tmp) и перелогин, то можно считать, что это мало чем уступает работе из-под другого пользователя (разве что корреляции будут из-за отсутствия одновременной работы на сайтах из разных групп).
комментариев: 1079 документов: 58 редакций: 59
Я правильно понимаю: завел юзера, ограничил профиль и из своего профиля через su запускаешь TBB из под нужного юзера, да? Как все стирается потом?
Что за сетка такая?
Хорошо ли su использовать? Где такое написано?
комментариев: 1060 документов: 16 редакций: 32
Один из поддиапазонов для частных сетей.
Чудеса местного поиска.