id: Гость   вход   регистрация
текущее время 17:38 29/03/2024
Владелец: unknown (создано 24/06/2012 17:27), редакция от 12/08/2015 22:34 (автор: unknown) Печать
Категории: софт, анонимность, tor
http://www.pgpru.com/Библиотека/Руководства/СетеваяАнонимность/ПродвинутоеИспользованиеTorвUnix/РаздельноеИспользованиеTorbrowserсСистемнымTorиПрозрачнаяТорификация
создать
просмотр
редакции
ссылки

Раздельный запуск Torbrowser от нескольких пользователей с общим системным Tor-процессом и локальная прозрачная торификация


Оглавление документа:

Цель варианта


  1. Использовать торбраузер с локальным системным тором вместо поставляемого в составе TBB.
  2. Осуществить одновременную работу нескольких пользователей системы через системный тор с построением различных цепочек для каждого пользователя посредством подключения к разным портам SocksPort и посредством прозрачной торификации на разные порты TransPort, DNSPort для других програм (опционально — для самого TBB использование прозрачной торификации устарело и не рекомендуется).
  3. Все пакеты, посланные из под конкретного пользователя торбраузером должны направляться файрволлом только на определённые порты локального хоста, связанные с работой системного тора. Это существенно исключает возможность утечки пакетов при уязвимостях в торбраузере, но существенно не защищает от преднамеренных целевых атак на данную конфигурацию.

Конфигурация тор


Остановите системный тор: /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 90559059 9060do

        $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 или отправкой сигнала системному тор-процессу.


 
На страницу: 1, ... , 7, 8, 9, 10, 11, ... , 16 След.
Комментарии [скрыть комментарии/форму]
— unknown (23/10/2014 14:21)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

И похоже, в экстренном порядке из-за очередных уязвимостей в SSL. Новую ветку не планировалось вводить так быстро в стабильное состояние, но на поддержку двух текущих сил могло и не хватить.
— unknown (30/01/2015 23:11, исправлен 30/01/2015 23:14)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Вроде, начиная с 4.0.3 в TorBrowser в стартовом скрипте появились такие коменты:


Честно говоря, всё это не впечатляет. Как-то не радует перспективаа давать браузеру пароль от системного тора. Да и прозрачная торификация работает через Transport лучше, чем через Socks. При многопользовательской конфигурации в разных иксах, виртуалках, физических машинах — надёжнее и безопаснее рулить системным тором из под специально выделенного пользователя, но не из того же браузера, которым ходишь.



Есть пользователи, которые являются тонкими ценителями такого стиля конфигурирования :)

— Гость (30/01/2015 23:16)   <#>
Ну вот наплевать им на обычных продвинутых юзеров, да. Разгадка кроется в том, что надо дать возможность рестартить цепочки из-под TBB, но не давать полный доступ к управлению Tor'ом.

Кстати, как принято менять дефолтный SOCKS в настройках? Например, без прозрачного торифицирования хочется указать системный Tor. TBB же при старте всегда будет пытаться сначала запустить свой Tor, и ему надо объяснить этого не делать (оно будет зарублено файерволлом).
— Гость (31/01/2015 09:57)   <#>

При прозрачной торификации разделение по цепочкам работает? Есть какие-то отличия от случая SOCKS'а?
— unknown (31/01/2015 12:35, исправлен 31/01/2015 12:49)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

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


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

— Гость (31/01/2015 15:40)   <#>

Я вас сейчас тоже спрашиваю про локальный, но без прозрачной торификации. В SOCKS Host надо прописать 127.0.0.1:9050 вместо 127.0.0.1:9150. Вроде в стартовом скрипте были какие-то строчки, которые можно закомментить, чтобы при старте firefox не ждал запуска локального Tor'а (а лучше — чтоб вообще его не запускал).


У меня тоже. ☺


А для разных юзеров за счёт чего разделение по цепочкам у вас получается? Самое простое — поднять Tor на нескольких портах одновременно и файерволлом проконтролировать, чтобы каждый юзер мог ходить только на свой порт. Однако, при прозрачной торификации не факт, что это сработает (хотя можно заворачивать траф от разных юзеров на разные Trans- и DNS-порты, но не знаю, поможет ли это разделению по цепочкам).
— Гость (01/02/2015 10:42)   <#>

А то! В случае взлома браузера firewall запрещающий ходить вне Тора уже не препятствует деанону. Эксплойту будет достаточно для получения реального IP дать запрос 'GETINFO address' на ControlPort.
— Гость (01/02/2015 13:15)   <#>

Можно защититься, если запускать Tor в виртуалке, но могут быть более тонкие атаки. К примеру, заставить Tor построить цепочку с выбором определённых узлов и т.п.*, т.е. деанон будет в любом случае.

Придётся делать вручную: смена личины в браузере — потом перестройка цепочек руками в консоли через pkill -1. Правда, это перестроит цепочки для всех, а нужно, чтоб только для конкретного юзера, который работает через конкретный SocksPort. Впрочем, это, наверно, тоже разруливается: для каждого юзера можно по отдельности перестраивать цепочки? Не похоже, что ControlPort можно задать в нескольких инстенсах в конфиге, типа per user. Может быть, это разруливается каким-то иным способом, unknown больше в теме в этом плане.

*Если через ControlPort действительно можно менять любые настройки torrc, то это так.
— unknown (01/02/2015 18:33)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Control-портов тоже можно включить несколько, но какой в этом смысл — непонятно. При смене личины действительно она (в смысле набор цепочек) меняется для всех портов, по отдельным портам/пользователям это не разруливается.


Для разных портов по-умолчанию тор раздаёт разные наборы цепочек, неважно — это SocksPort, TransPort или DNSPort.
— Гость (01/02/2015 19:50)   <#>

Ясно, так и думал.


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


Выше упоминалось, что может быть авторизация на порте управления, причём, возможно, разные группы user:pass. Если это так, то Tor мог бы сбрасывать только цепочки, привязанные к конкретному «аккаунту».

Имхо, у задачи есть 2 архитектурных решения: либо сделать для каждого юзера свой Tor, но предусмотреть механизмы общей БД и взаимодействия между Tor'ами, входящими в одну группу, либо сделать один Tor, но в нём — многопользовательская среда, у каждого «юзера» свой порт для работы, свой порт управления и т.д. + должен у кого-то быть рутовый (администраторский) доступ к Tor-демону. Имхо, второй способ реализации тяжелее первого, но Tor пошёл именно по второму.

На текущий момент многопользовательская среда через один Tor-демон — не вполне работающая штука. ☺ Как изначально всё начиналось (одна нация, один язык один юзер, один профиль, один Tor-домен), так во многом и продолжается.
— unknown (01/02/2015 20:01)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

В механизме образования цепочках нет понятия «юзеров» и нет способа адресации к ним.

Цепочки привязаны к портам. Дополнительными опциями их можно привязать к исходящим портам и адресам после эксита (это не рекомендуется для браузеров, разве что для почтовых программ или какого-нибудь ssh). Можно было бы использовать и один управляющий порт, только через него указывать какую цепочку поменять. Но поскольку типов привязок цепочек м.б. так много, то непонятно, как обозвать некую цепочку, какую придумать для них систему имён, чтобы можно было на них указывать и не запутаться. В tor-проекте вроде никаких идей насчёт этого даже не выдвигалось.
— Гость (01/02/2015 20:26)   <#>
Я всё понимаю, но идеологически «юзеры» уже есть — это группа цепочек, ассоциированных с чем-либо (с конкретным Socks-портом, с конкретным Trans-портом и т.д.). Осталось это довести до ума. Когда вам нужно сменить цепочку, вы ведь не знаете, какую менять, так? Ваш Control-порт мог бы давать список, ассоциированный с вашим портом, и по желанию можно чтоб было рестартить одну конкретную или все. Просто так или иначе, но постепенно всё равно сведётся к тому, что нужны юзеры и авторизация для них, а Tor должен различать трафик по юзерам. Ad hoc делёжка цепочек по портам — это пока ещё не полноценный костыль, потому что нету аналогичного ad hoc'а для управления группами цепочек, ассоциированными с конкретным портом.
— unknown (02/02/2015 13:55, исправлен 02/02/2015 13:57)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Есть только опция разделения цепочек даже по одному SOCKS-порту, но с разным паролем для авторизации на нём:


IsolateSOCKSAuth
Don’t share circuits with streams for which different SOCKS authentication was provided. (On by default; you can disable it with NoIsolateSOCKSAuth.)

И отмена разделения цепочек по портам с использованием вместо этого групп:


SessionGroup=INT
If no other isolation rules would prevent it, allow streams on this port to share circuits with streams from every other port with the same session group. (By default, streams received on different SOCKSPorts, TransPorts, etc are always isolated from one another. This option overrides that behavior.)

А управления сменой определённых цепочек нет.

— Гость (02/02/2015 17:20)   <#>

INT — это 0 или 1? Какие у него допустимы значения, и что они значат?


Наверно, на низком уровне можно передать какую-то команду на ControlPort, которая будет рестартить конкретную цепочку; правда, не факт, что можно будет связать цепочки с портами, но и это неисключено.
— unknown (02/02/2015 17:46)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Толком не разъяснено. Что-то они хотели сделать дополнительно, но похоже, что это маргинальные опции. Из разряда «если мы их поломаем в очередной версии, то никто даже не заметит».
На страницу: 1, ... , 7, 8, 9, 10, 11, ... , 16 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3