id: Гость   вход   регистрация
текущее время 17:17 28/03/2024
Владелец: spinore (создано 24/06/2012 22:23), редакция от 26/05/2013 06:29 (автор: spinore) Печать
Категории: софт, анонимность, tor, операционные системы
создать
просмотр
редакции
ссылки

Настройка Tor-роутера под BSD (transparent Tor-proxy как anonymizing middlebox)


Пример, приведённый в официальном Tor-faq, на текущий момент не применим для OpenBSD PF из-за смены синтаксиса, и, на мой взгляд, содержит ряд неточностей. Ниже привожу пример настройки с дополнительным закручиванием гаек в PF. Цель — прозрачно выпускать несколько локальных подсетей в Tor, где каждая из них будет привязана к своему Tor-клиенту (в рассматриваемом примере две подсети).


Пусть выходной сетевой интерфейс — fxp0, а входные — vr0 и vr1. Тестировались только OpenBSD и NetBSD. При установке Tor из портов пользователь tor (_tor) и группа tor (_tor) создаются автоматически в NetBSD (OpenBSD). Далее с помощью vipw добавляем аналогичного юзера для второй подсети (достаточно сменить UID, сохранив ту же группу, имена пользователей для удобства можно упорядочить как, например, tor1 и tor2). Для tor-пользователей создаются конфигурационные файлы наподобие таких:

$ cat torrc_1 
SocksPort 9050 
SocksListenAddress 127.0.0.1 
RunAsDaemon 1
DataDirectory /tmp/tor_1
User tor1
AutomapHostsOnResolve 1
Log notice file /tmp/tor_1.log
VirtualAddrNetwork 10.192.0.0/10
TransPort 9060
DNSPort 5353
$ cat torrc_2 
SocksPort 8050 
SocksListenAddress 127.0.0.1 
RunAsDaemon 1
DataDirectory /tmp/tor_2
User tor2
AutomapHostsOnResolve 1
Log notice file /tmp/tor_2.log
VirtualAddrNetwork 172.16.0.0/12
TransPort 8060
DNSPort 5363
и кладутся в нужную директорию1. Автозапуск при загрузке системы делается прописыванием в /etc/rc.local строчек наподобие
/usr/local/bin/tor -f /path/to/torrc_1
/usr/local/bin/tor -f /path/to/torrc_2
для OpenBSD и
/usr/pkg/bin/tor -f /path/to/torrc_1
/usr/pkg/bin/tor -f /path/to/torrc_2
для NetBSD.

Вопреки сказанному в Tor-faq, прав на чтение /dev/pf достаточно не только для OpenBSD, но и для NetBSD, потому назначаем:
# chgrp tor /dev/pf
# chmod g=r /dev/pf
Нижеследущий конфиг был проверен на работоспособность в NetBSD 5.0.2, NetBSD 5.1 и OpenBSD 4.52:
# переменные:
in0  = "vr0"
IPin0 = "IP_НА_vr0"
net0 = "СЕТЬ_НА_vr0"
TransPort0 = "9060"
DnsPort0 = "5353"
 
in1  = "vr1"
IPin1 = "IP_НА_vr1"
net1 = "СЕТЬ_НА_vr1"
TransPort1 = "8060"
DnsPort1 = "5363"
 
out0  = "fxp0"
IPout0 = "IP_НА_fxp0"
 
lh  = "localhost"
tor_users = "{ tor1, tor2 }"
 
# опции по вкусу:
scrub all no-df random-id min-ttl 128
 
# редиректы:
rdr on $in0 inet proto tcp from $net0 to ! $IPin0             -> 127.0.0.1 port $TransPort0
rdr on $in0 inet proto udp from $net0 to ! $IPin0 port domain -> 127.0.0.1 port $DnsPort0
 
rdr on $in1 inet proto tcp from $net1 to ! $IPin1             -> 127.0.0.1 port $TransPort1
rdr on $in1 inet proto udp from $net1 to ! $IPin1 port domain -> 127.0.0.1 port $DnsPort1
 
# фильтрация:
block all
block in quick from any os NMAP
antispoof log quick for {$in0,$in1,$out0}
 
pass in  on $in0  inet proto tcp from $net0   to $lh port $TransPort0 user root
pass in  on $in0  inet proto udp from $net0   to $lh port $DnsPort0   user root
 
pass in  on $in1  inet proto tcp from $net1   to $lh port $TransPort1 user root
pass in  on $in1  inet proto udp from $net1   to $lh port $DnsPort1   user root
 
pass out on $out0 inet proto tcp from $IPout0 to any                  user $tor_users
 
block inet6 all
Выше строки
block all
block in quick from any os NMAP
antispoof log quick for {$in0,$in1,$out0}
можно заменить на
block return log (all)
и тогда сниффер
# tcpdump -i pflog0 -n -e action block
покажет все пакеты, блокируемые PF (полезно для отладки). Критерий actions поддерживается только в OpenBSD. Кроме того, ввиду правила "block all" блокирование nmap и антиспуфинг, возможно, избыточны3.

Такая же конфигурация на OpenBSD 4.8 с учётом смены синтаксиса PF выглядит так4:
# редиректы:
match in on $in0 inet proto tcp from $net0 to ! $IPin0             rdr-to 127.0.0.1 port $TransPort0
match in on $in0 inet proto udp from $net0 to ! $IPin0 port domain rdr-to 127.0.0.1 port $DnsPort0
 
match in on $in1 inet proto tcp from $net1 to ! $IPin1             rdr-to 127.0.0.1 port $TransPort1
match in on $in1 inet proto udp from $net1 to ! $IPin1 port domain rdr-to 127.0.0.1 port $DnsPort1
 
# фильтрация:
block all
block in quick from any os NMAP
antispoof quick for {$in0,$in1,$out0}
 
pass in  on $in0  inet proto tcp from $net0   to $lh port $TransPort0 user unknown
pass in  on $in0  inet proto udp from $net0   to $lh port $DnsPort0   user unknown
 
pass in  on $in1  inet proto tcp from $net1   to $lh port $TransPort1 user unknown
pass in  on $in1  inet proto udp from $net1   to $lh port $DnsPort1   user unknown
 
pass out on $out0 inet proto tcp from $IPout0 to any                  user $tor_users
block inet6 all
Данные конфиги PF разрешают выход в сеть исключительно Tor-клиентам. Чтобы разрешить что-то ещё (входящие по ssh, например) добавьте правила по вкусу.

Замечания:

  • Стоить отметить один важный феномен. Конфиг для старого синтаксиса PF (т.е. первый) работает для входящих только при опции user root, а для нового — только при user unknown5, при этом в описании опции user в man pf.conf ничего не менялось. Для работоспособности исходящих соединений tor нужно указывать user tor6, но и это не консистентно с документацией на PF, где чёрным по-белому указано, что при дропе привелегий владельцем сокета остаётся исходный пользователь (в нашем случае root, т.к. запуск из /etc/rc.local). Для входящих соединений, согласно документации, должен быть user unknown, если это — транслируемый траффик, либо пользователь, слушающий на заданном порту7. С этой точки зрения что должно быть на самом деле для pass in согласно букве документации вообще не ясно (траффик сначала перенаправляется rdr, а лишь затем передаётся на порт Tor. Если считать, что rdr не меняет критерий user, то по логике вещей для pass in должен стоять root [см. выше про дроп привелегий]).
  • В Tor-faq указан более короткий вариант правил (совмещает в себе и разрешение входящих и редирект), но я для большей контролируемости предпочитаю писать фильтрацию и трансляцию/перенаправления отдельно. Как мне представлялось (и как пишется во многих руководствах), пакет проходит фильтрацию до перенаправления и после. На практике стало понятно, что фильтрацию до перенаправления он не проходит, потому соответствующие правила из PF были изъяты3.

Указанная конфигурация легко заливается с помощью скрипта mklivecd на NetBSD LiveCD, что позволяет сделать бездисковый Tor-рутер из любого старого компьютера8. Конфиг будет работать и на одной сетевой с одним интерфейсом (надо будет для in0 и in1 указать тот же интерфейс).


P.S.: Конфигурацию с local redirection пока не настраивал, потому PF-аналог Linux-настройки привести не могу.



1Раздел /tmp целесообразно монтировать в память посредством mfs.
2В NetBSD 3.0 текущая версия Tor через pkgsrc собирается без поддержки прозрачной торификации (причины мне не известны), потому протестить не удалось.
3Если кто объяснит, где я не прав и как всё на самом деле, буду очень благодарен.
4Начало конфига до "опций" совпадает с предыдущим.
5Определялось экспериментально.
6Если вообще указывать опцию user, что в данной заметке делается по умолчанию.
7Например, user root для входящих pass in на ssh.
8Сколь-нибудь автоматизированных средств сборки OpenBSD LiveCD в сети не обнаружено, а все how-to написаны для довольно старых версий OpenBSD и не работают на 4.8 (ядро не влазит в отведённый размер boot при дискетоподобной системе загрузки LiveCD). Под FreeBSD есть средства автоматизированной сборки LiveCD, но я их не тестировал.


 
На страницу: 1, 2, 3, 4, 5, 6 След.
Комментарии [скрыть комментарии/форму]
— Гость (25/06/2012 01:41)   <#>
а можно в этом стиле допилить Tails на Debian?
— Гость (25/06/2012 05:12)   <#>
Можно, если с умом, только те, кто это могут, LiveCD типа Tails и сами для себя соберут, и не будут пользоваться готовой сборкой.
— Гость (25/06/2012 07:23)   <#>
Всё-таки какая из (Net|Open)BSD лучше для subj – создания Tor-рутера из старого компа?
— unknown (25/06/2012 09:57, исправлен 25/06/2012 10:11)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Интересные и возможно полезные ссылки:


Проект TorBOX — на основе Linux.


Проект Torouter для OpenWRT не для старого компа, а для готовых роутеров и микродевайсов.


Предупреждения о неофициальном статусе:


TorBOX is a non-offical, community project. We are not affiliated with torproject.org. The Tor developers are not responsible for this project. See Disclaimer for more information.
TorBOX is produced independently from the Tor® anonymity software and carries no guarantee from The Tor Project about quality, suitability or anything else.

— Гость (25/06/2012 11:28)   <#>
Проект TorBOX
формат virtuabox (( в vmware интересно можно конвертировать?
— Гость (25/06/2012 13:14)   <#>
ПривИлегии.
— Гость (25/06/2012 15:59)   <#>
> Всё-таки какая из (Net|Open)BSD лучше для subj – создания Tor-рутера из старого компа?

Если не требуется шифровать кучу файловых систем на рутере, и железо поддерживается, я бы поставил OpenBSD, поскольку сетевых фич у неё намного больше, а pf аутентичней и более новой версии. Если же требуется сделать именно LiveCD, то я бы выбрал NetBSD, т.к. под другие ОС (включая и OpenBSD, и Linux) замучаешься делать LiveCD, а mklivecd делает оный искаропки (но если хочется, и есть много времени, всё можно сделать).

Правда, в грядущем релизе NetBSD 6.0 не ясно, как будет работать mklivecd, поскольку ядро сейчас стало модульное, а монолит надо специально готовить, но во всех предыдущих релизах всё должно быть ОК. Ну и для ценителей: mklivecd не делает squashfs (предварительное чтение всей файловой системы в память) или как там оно называется, поэтому так круто, как в Linux, не будет. В частности, LiveCD из сидюка во время работы ОС вытащить не удастся.

> ПривИлегии.
Спасибо, исправлено.
— Гость (25/06/2012 18:07)   <#>
Офигеть :) Получил письмо:
Здравствуйте, XXX. Прежний владелец unknown передал Вам права владения на следующие документы сайта openPGP в России: XXX. Права владения накладывают на Вас ряд обязательств по поддержанию документов в надлежащем и актуальном состоянии. С подробностями можете ознакомиться здесь: https://www.pgpru.com/proekt/wiki/refaktoring
И сразу стал всем должен...
— Гость (26/06/2012 12:08)   <#>
и Linux) замучаешься делать LiveCD
Вот уж враки какие. spinore, вы врите, да не завирайтесь.
Мануалов в гугле куча, вот, например, для полных нубов подробно по шагам. В том числе и с squashfs, которая нужна не только для вытаскивания сидюка, но и для доустановки пакетов во время сеанса LiveCD (очень часто нужно, почти каждый раз использую).

P.S. Linux используют unknown, SATtva и большая часть группы openPGP, что намекает. Рекламировать старую, практически неподдерживаемую систему, у которой и юзеров, считай, нет, объясняя это мифической простотой, — это пунктик. Я бы вообще побоялся ставить себе то, что использует полтора человека кроме меня — это и неисправляемые баги, и фиг кто дырки в системе искать будет, какая уж тут безопаность. Ладно ещё Free более-менее популярна, но Net.
— unknown (26/06/2012 12:34)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Сейчас кто-нибудь вбросит про винду ещё...
— Гость (26/06/2012 14:51)   <#>
Мануалов в гугле куча, вот, например, для полных нубов подробно по шагам.
Ставить Ubuntu на минималистичный рутер, где безопасность превыше всего? Про «замучаешься делать» я не сам придумал, это мне так опытные линуксоиды сказали. Типа, если хочется минималистичного LiveCD под себя со своими настройками, его прийдётся компилить. Не знаю, поменялось ли что-нибудь с тех времён.

Рекламировать старую, практически неподдерживаемую систему, у которой и юзеров, считай, нет, объясняя это мифической простотой, — это пунктик.
Ужасно толсто. Расскажите об это NASA и разработчикам Xen.

Я бы вообще побоялся ставить себе то, что использует полтора человека кроме меня — это и неисправляемые баги, и фиг кто дырки в системе искать будет, какая уж тут безопаность.
Распространённость системы — не единственный фактор, а то так можно и до винды дойти.

Ладно ещё Free более-менее популярна, но Net.
Фря умеет device mapper? (прощай, скрытые криптотома без сигнатур) Или dom0? (прощай, анонимность в виртуалках). То, что geli не имеет сигнатур тома, тоже не уверен. То, что фря — уже много лет как монструозный комбайн (типа Linux) с кучей всего запущенного искаропки и непрозрачной автоматикой (что на безопасность сказывается не в лучшую сторону) промолчу.

Linux используют ...
В вашем линуксе нет портов, за исключением, разве что генты, но у неё другие проблемы. Прямых аналогов BSD среди дистров линукса нет.
— Гость (26/06/2012 15:27)   <#>
Ставить Ubuntu на минималистичный рутер, где безопасность превыше всего?
Ну покритикуйте ubuntu minimal.

То, что для вас безопаность это крутая хакерская консолька некрофильской ОС на пыльном пеньке, мы уже поняли. Видимо, принцип, что чем менее популярно, тем безопаснее. Haiku не пробовали?
мне так сказали
Понятно, «мопед не мой».

Не знаю, поменялось ли
Вам недостаточно моей ссылки? Или вы кроме слова ubuntu там ничего не увидели?

Распространённость системы — не единственный фактор, а то так можно и до винды дойти.
Нельзя. У неё не доступны исходники, поэтому она не подходит по определению.

Ужасно толсто.
Не менее толсто чем ваше «монструозный комбайн (типа Linux)». Про группу openPGP я не зря упомянул. Большая часть уважаемых гуру почему-то предпочитает монструозный комбайн (заметьте, не Windows).


P.S.
Re: Ping of Death в OpenBSD Packet Filter
> Люлексу до опёнка как до луны раком,
> remote ddos\shell на десятки порядков больше,
> так что смейтесь, детишки, но хорошо смеется тот, кто смеется последний... :-))))

представил подвал, в нем сидит бомжеватого вида BSD-ник, рядом одиноко стоят CRT-монитор и писюк, из которого выдернуты все сетевые кабеля, время от времени BSD-ник начинает дико хохотать, потом закашливается, берет пачку беломора, раскуривает и продолжает тупо сидеть и смотреть в экран, где ему предложено ввести логин и пароль( но он не вводит – так безопасней ).
— Гость (26/06/2012 15:45)   <#>
Не менее толсто
Хотел сказать «не более толсто». А ваша аргументация тыканьем в NASA — это точно пунктик. Напоминаете аполегетов LISP, которые любят защищать свой язычок тем, что дескать он и в космос, и на спутники. Если бы я занялся перечислением мест, где используется Linux, не хватило бы и страницы.

Прямых аналогов BSD среди дистров линукса нет.
Чего именно аналогов? Порты есть. Не нравится генту — компиляйте LFS и прикручивайте portage. Инструкции в гугле. Было бы что копировать, BSD давно на обочине прогресса.
— unknown (26/06/2012 16:30, исправлен 26/06/2012 16:32)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664


Steven Murdoch

The Vanguard of Computation


This collection of portraits presents the people who are defining the limits and reach of computation


Steven Murdoch is a researcher in the Cambridge Security Group and a member of Tor which is an open network that helps you defend against a form of network surveillance that threatens personal freedom, confidential business activities, relationships and state security known as traffic analysis.

— Гость (26/06/2012 16:38)   <#>
A что вы наехали на spinore? Ведь не известно какую ОС он лично использует. Посмотрите, его рассужения носят условный хактер для условного тор-роутера. А на десктопе у него, может, Linux стоит. Вы ведь этого наверняка не знаете.
На страницу: 1, 2, 3, 4, 5, 6 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3