id: Гость   вход   регистрация
текущее время 01:35 25/04/2024
Владелец: unknown (создано 24/06/2012 17:27), редакция от 12/08/2015 22:34 (автор: unknown) Печать
Категории: софт, анонимность, tor
https://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, 2, 3, 4, 5, ... , 12, 13, 14, 15, 16 След.
Комментарии [скрыть комментарии/форму]
— Гость (25/06/2012 16:04)   <#>
unknown, спасибо за подборку. Новость про «рано или поздно экситы будут блокировать двойное заворачивание в тор» в контексте поломанного функционала в TBB не очень радует.
— unknown (29/06/2012 22:32)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Support Tor Router/Transtor mode in Tor Browser — специально для любителей тор-рутеров, прозрачной торификации и просто нежелающих пользоваться связкой, предполагается, что в торбраузере должна быть предоставлена возможность работать отдельно от связки при нормальном взаимодействии с вышеперечисленным (рутерами, системным тором, прокси-соксификаторами).
— Гость (25/07/2012 16:27)   <#>
А зачем вообще заморачиваться с видалией? Не проще ли sudo pkill -1 tor?
Хотя в последнем случае, наверное, будут меняться цепочки под всеми юзерами одновременно. А с видалией разве не так?
— Гость (25/07/2012 16:36)   <#>
кстати, что-то туплю, но я не понял в этом куске кода

что такое blocked_myports – это переменная такая или что? Она в приведенном скрипте не определена, и в данном куске кода перед ней нет значка доллара.
При попытке выполнения скрипта ругается:
— Гость (25/07/2012 17:14)   <#>
unknown, а вот это правило из FAQ tor'а?
iptables -t nat -A OUTPUT -m owner --uid-owner anonymous -j DROP
Насколько я помню, у тебя было отмечено, что -j DROP в nat сейчас не работает, поэтому -J REDIRECT 127.0.0.1
Почему ты от него отказался?
— Гость (25/07/2012 18:55)   <#>
Изменение команды в start_torbrowser_script дисэйблит полностью кнопку New Identity, которая не только переключала цепочки, но и чистила кэш.
Насколько полно кэш очиститься штатными средствами фирефокса, если ее нельзя юзать?
— unknown (26/07/2012 10:27, исправлен 26/07/2012 10:31)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
А зачем вообще заморачиваться с видалией? Не проще ли sudo pkill -1 tor?

Я своим заторенным юзерам перекрыл такую возможность посредством SELinux.


Кроме того, Vidalia показывает, когда процесс перестройки цепочек завершается, что может занять от нескольких секунд до нескольких минут. Иначе если сделать kill, а пока цепочки не перестроены, соединения могут быть построены по старым. Не уверен правда именно в случае kill, но в случае newnym видалии что-то такое происходит.


что такое blocked_myports – это переменная такая или что? Она в приведенном скрипте не определена, и в данном куске кода перед ней нет значка доллара

Это пользовательская цепочка, которая должна была быть объявлена iptables -N blocked_myports; iptables -F blocked_myports. В эту цепочку предполагается вписывать и другие заблокированные порты, кому какие нужно под свои потребности. При копировании куска из скрипта эта строка, объявленная где-то выше, осталась незамеченной и сюда не попала. Спасибо, что заметили.


iptables -t nat -A OUTPUT -m owner --uid-owner anonymous -j DROP
Насколько я помню, у тебя было отмечено, что -j DROP в nat сейчас не работает, поэтому -J REDIRECT 127.0.0.1

Это тогда было первое пришедшее в голову решение. Если нельзя в этой цепочке заблокировать, то почему бы не редиректить на локалхост. Тогда ещё актуально было параллельно с iptables использовать и локальный прокси с выходом в тор (polipo/privoxy), он мог бы и подхватывать пакеты на своём порту. То, что он бы не подхватил, на этом порту бы тихо умирало. Но это не вполне предсказуемо. На локалхосте могут быть запущены ещё какие-то слушающие демоны. Возможно, пакеты уходили бы к ним с не вполне ясными последствиями. Надёжнее явно указать блокирование всего неотфильтрованного.


дисэйблит полностью кнопку New Identity, которая не только переключала цепочки, но и чистила кэш.
Насколько полно кэш очиститься штатными средствами фирефокса, если ее нельзя юзать?

Для этой цели теперь предлагается:


  1. Послать команду newnym в Видалии.
  2. Дождаться завершения построения новых цепочек.
  3. Перезапустить Torbrowser.
  4. Вручную рэндомным образом сменить размер окна торбраузера.

Предполагается, что этого достаточно.

— Гость (26/07/2012 16:10)   <#>
Что касается сетевого интерфейса, на ноуте используется – eht0 или wlan0, иногда еще и gsm/4g модемы со своими интерфейсами.
Как лучше это прописать в правилах iptables? Или безопасности ради лучше каждый раз прописывать руками используемый интерфейс или переинициализировать скрипт?
P.S. unknow, не поделищься продвинутым конфигом фаервола? (ессно, убрав из него все лишнее)
P.P.S. Также ждем статью по SELINUX!!!
— Гость (26/07/2012 17:09)   <#>
В связи с существующей конфигурацией и текстом статьи есть следующие технические и редакционные вопросы:
1. А что с soks-портами? Мы их не разрешаем каждому пользователю? И как увязаны soks-порты, trans-порты и цепочки?
Как показала моя практика, даже из под прозрачно торифицированного юзера, на всякий случай, лучше клиенты настраивать на soks-порты (правда, в старой конфигурации он был один) – чтобы избежать деанонимизации при случайном сбросе настроек iptables, при некореектных настройках некоторых клиентов (так, icedove при прозрачной торификации, неуказании прокси сокс-порта и неуказании в конфиге специального значения "высирает" ip-адрес компьютера, хорошо у меня непубличный был, а то бы один раз у меня произошел бы деанон).
2. У тебя в примере anonuser_2 и webuser касаются тех же правил. Наверное, их стоит унифицировать.
3. Как я понимаю, правила для анонимного юзера на порт 9040 и для второго юзера на порт 9042 (не 9041) взяты просто для примера, никакого "разрыва" устраивать не надо?
— unknown (26/07/2012 18:04, исправлен 26/07/2012 18:05)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

  1. Пока из-за того, что все торбраузеры от разных пользователей ненастраиваемо стучатся в один socksport 9050 приходиться использовать этот порт на все торбраузеры по очереди. И ни для каких программ больше.
  2. У тебя в примере anonuser_2 и webuser касаются тех же правил. Наверное, их стоит унифицировать.
    Очередная ошибка копипастинга :-) Вместо webuser исправлено на anonuser_2.
  3. Для наглядности можно оставить. Был ещё для примера пользователь без TBB, но его убрал.

Да ничего такого, чтобы как-то особенно критично влияло именно на анонимность особо не накручиваю.


У меня на одном компе с горем пополам работает. На другом, с такими же настройками, с теми же самыми подброшенными мной скомпиленными модулями пользоваться невозможно. Может в следующей версии дистра там будет нечто, про что нестыдно писать статью или радиус кривизны рук уменьшится до приемлемого уровня.

— Гость (26/07/2012 18:37)   <#>
А как все-таки соотносятся открытые SoksPort'ы и TransPort'ы c DNS'портами по цепочкам?
Соответствует ли истине утверждение, что первый указанный в torrc soks-порт идет в той же цепочке, что и первый указанный trans-порт и первый указанный dns-порт, вторые, третьи, четвертные и т.д. соответственно?
Ведь если все перемешается, это может быть крупная дыра в безопасности/анонимности.
— Гость (26/07/2012 18:38)   <#>
И на какой soks-порт тот же icedove настраивать?
А то сбросишь так настройки фаервола, забыв закрыть клиент, и палево...
— Гость (26/07/2012 18:43)   <#>
И как правильно при новой схеме торифицировать root'а, чтобы враг не видел обновления и т.п.?
По старой схеме у меня все работало, сейчас дал такие настройки:

– у меня вообще перестало все в сеть выходить, такое ощущение, что последнее правило "режет" всех юзеров остальных, непонятно почему.
Убрал его торификацию – все опять заработало.
— Гость (27/07/2012 02:19)   <#>
У Вас, кстати, не написано как настраивать саму видалию.
Поставил vidalia из репозиториев, никак не настраивал, запустил – коннкетиться с Tor и управляет им странным образом.
Хотя я не вписал пароль в настройках видалии. Правда там вписан (автоматом) /etc/tor/torrc – возможно он оттуда берет настройки?
P.S. Не очень мне нравиться эта видалия, пользователь может управлять Tor'ом, это раз. Даже позволяет править системный torrc из-под юзера! Это вообще я не понимаю как:

Второе, непонятно почему она работает по системе аутентификации "пароль" без указания ей пароля. Стоит галка "сгенерировать случайным образом", но в torrc я же руками хэш пароля вписывал
!
— unknown (27/07/2012 10:05, исправлен 27/07/2012 11:02)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Пароль не нужен. Работает через CookieAuthFile для всех пользователей, которые включены в группу debian-tor (в случае debian). Кого включить в эту группу — спрашивается при установке debian-пакета.


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


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


Соответствует ли истине утверждение, что первый указанный в torrc soks-порт идет в той же цепочке, что и первый указанный trans-порт и первый указанный dns-порт, вторые, третьи, четвертные и т.д. соответственно?
Ведь если все перемешается, это может быть крупная дыра в безопасности/анонимности.

На каждый порт назначается одна или несколько цепочек. Цепочки разных портов между собой не смешиваются. Дополнительными опциями torrc можно задавать правила несмешивания цепочек и в пределах одного порта (например, пытаться выбирать разные цепочки для разных приложений, хотя это и ненадёжный механизм).


Через саму видалию можно посмотреть процесс построения цепочек.
Если я правильно смотрел этот процесс, то получается ещё забавнее. Они независимы. Если у торбраузеров всё идёт через SOCKS, то для TransPort/DNSPort/SokcsPort запросы идут по разным цепочкам.


Т.е., приложение получило адрес через DNS по одной цепочке (и один исходящий узел), а затем идёт TCP-соединение через другую цепочку (и вероятнее всего другой эксит). Но два приложения не смешиваются. Если у кого есть время, можете поделиться более подробными наблюдениями.


Как кому больше нравится выбирать компромисс между безопасностью, удобством и изобретательностью в настройках, конечно. Но я бы принципиально делал только статичные настройки. Никаких изменений и перезагрузок правил файрволла в процессе работы. Чтобы не было так: захотели поработать анонимно — надо подгружать одни правила, захотели поработать неанонимно и быстро — надо загружать другие. Для анонимной работы заведён отдельный пользователь и все правила для него вбиты железно. Рут в эту концепцию принципиально не вписывается. Можно руками временно для него включать/отключать прокси-переменную в консоли для polilpo/privoxy, если надо сделать небольшое обновление системы, например. Не особо надеясь при этом на анонимность. И строго сверяя все подписи обновлений.

На страницу: 1, 2, 3, 4, 5, ... , 12, 13, 14, 15, 16 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3