Всем Добра уважаемые xss-users!
Толи паранойя меня зашкаливает, толи паранойя просто *опа как зашкаливает :smile46:
Конкурс я уже продинамил, но не в деньгах счастье.
Решил набрать много букв на тему Tor'a, черпал на сколько умею тут, но буржуйский у меня на 2+ поэтому решил своими словами изложить.
Попробую расписать о методе настройки через политики iptables
Настройка iptables:
В начало или в конец файла дописываем:
В принципе эта шляпа запускает собственный DNS-сервер и все dns-запросы уже идут через него,
также открывает порт, через который весь трафик будет гоняться.
Для чего нужна самая первая строка - затрудняюсь сказать.
Перезагружаем тоr:
$ sudo service tor restart
и создадим новый:
$ sudo echo "nameserver 127.0.0.1" > /etc/resolv.conf

$ sudo chattr +i /etc/resolv.conf
либо по пути /etc/NetworkManager/conf.d/ создать файл dns.conf и прописываем в него:

В 6-ой строке где написано _tor_uid="111" #As per assumption надо заменить tor_uid на свой
Чтобы узнать свой ID, в терминале
$ nano /etc/passwd

или просто по пути /etc/passwd в строке начинающейся с debian-tor первые 3 цифры ваш id
Сохраняем эту байду и в терминале запускаем этот файл
$ sudo sh iptables.sh
Перезагружаем тор
$ sudo /etc/init.d/tor restart
Здесь проверяемся настроен ли сам tor: check.torproject.org должны увидеть надпись Congratulations.
Для проверки dns идём на dnsleaktest и жмём Extended test, тут явно не должно быть вашего города и провайдера

$ sudo iptables-save > run_tor
Открываем файл /etc/rc.local и перед exit 0 вставляем:
iptables-restore < run_tor

Который запускаете также в терминале и который вернёт все настройки к девственным , затем если вы просто залочили файл resolv.conf то в терминале:
$ sudo chattr -i /etc/resolv.conf
Если вы создали файл dns.conf то просто удаляем его:
$ sudo rm -f /etc/NetworkManager/conf.d/dns.conf
Также можно добавить в файл настроек тора /etc/tor/torrc чтобы исключить exit-ноды стран СНГ строку:
ExcludeExitNodes {RU},{UA},{BY}
Советую установить утилиту Arm (anonymizing relay monitor) которая позволяет отслеживать активность, редактировать настройки tor'a.

Это всё конечно не панацея, но уже не большой шаг в её направлении.
В любом случае будьте осторожны, т.к. протоколы, отличные от tcp/udp будут ходить в обход tor, поэтому или сразу запретите их в iptables, или не используйте.
Толи паранойя меня зашкаливает, толи паранойя просто *опа как зашкаливает :smile46:
Конкурс я уже продинамил, но не в деньгах счастье.
Решил набрать много букв на тему Tor'a, черпал на сколько умею тут, но буржуйский у меня на 2+ поэтому решил своими словами изложить.
Попробую расписать о методе настройки через политики iptables
Настройка iptables:
- Установка самого tor'a (не путать с tor-browser).
- Редактирование файла конфига tor'a.
- Запрет NetworkManager'у сувать своё жало туда, куда он его суёт по дефолту.
- Настройка политик iptables
- Отключение политик
- Тут нам для начала понадобится установить сам tor
- Редактируем файл настроек тора torrc
В начало или в конец файла дописываем:
PHP:
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040
DNSPort 5353
В принципе эта шляпа запускает собственный DNS-сервер и все dns-запросы уже идут через него,
также открывает порт, через который весь трафик будет гоняться.
Для чего нужна самая первая строка - затрудняюсь сказать.
Перезагружаем тоr:
$ sudo service tor restart
- Удаляем файл /etc/resolv.conf, так как часто это симлинк:
и создадим новый:
$ sudo echo "nameserver 127.0.0.1" > /etc/resolv.conf

- Запрещаем NetworkManager'u совать руки в файл resolv.conf.
$ sudo chattr +i /etc/resolv.conf
либо по пути /etc/NetworkManager/conf.d/ создать файл dns.conf и прописываем в него:
Bash:
[main]
dns=none

- Создаём в домашней директории файл iptables.sh и заполняем его новыми правилами, в принципе из инглиша я думаю понятно что за что отвечает, если я напишу ещё хуже будет )
PHP:
#!/bin/sh
#
### Set variables
# The UID that Tor runs as (varies from system to system)
_tor_uid="111" #As per assumption
#_tor_uid=`id -u debian-tor` #Debian/Ubuntu
#_tor_uid=`id -u tor` #ArchLinux/Gentoo
# Tor's TransPort
_trans_port="9040"
# Tor's DNSPort
_dns_port="5353"
# Tor's VirtualAddrNetworkIPv4
_virt_addr="10.192.0.0/10"
# LAN destinations that shouldn't be routed through Tor
_non_tor="127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16"
# Other IANA reserved blocks (These are not processed by tor and dropped by default)
_resv_iana="0.0.0.0/8 100.64.0.0/10 169.254.0.0/16 192.0.0.0/24 192.0.2.0/24 192.88.99.0/24 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 224.0.0.0/4 240.0.0.0/4 255.255.255.255/32"
### Don't lock yourself out after the flush
#iptables -P INPUT ACCEPT
#iptables -P OUTPUT ACCEPT
### Flush iptables
iptables -F
iptables -t nat -F
### *nat OUTPUT (For local redirection)
# nat .onion addresses
iptables -t nat -A OUTPUT -d $_virt_addr -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports $_trans_port
# nat dns requests to Tor
iptables -t nat -A OUTPUT -d 127.0.0.1/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports $_dns_port
# Don't nat the Tor process, the loopback, or the local network
iptables -t nat -A OUTPUT -m owner --uid-owner $_tor_uid -j RETURN
iptables -t nat -A OUTPUT -o lo -j RETURN
# Allow lan access for hosts in $_non_tor
for _lan in $_non_tor; do
iptables -t nat -A OUTPUT -d $_lan -j RETURN
done
for _iana in $_resv_iana; do
iptables -t nat -A OUTPUT -d $_iana -j RETURN
done
# Redirect all other pre-routing and output to Tor's TransPort
iptables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports $_trans_port
### *filter INPUT
# Don't forget to grant yourself ssh access from remote machines before the DROP.
#iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
# Allow INPUT from lan hosts in $_non_tor
# Uncomment these 3 lines to enable.
#for _lan in $_non_tor; do
# iptables -A INPUT -s $_lan -j ACCEPT
#done
# Log & Drop everything else. Uncomment to enable logging
#iptables -A INPUT -j LOG --log-prefix "Dropped INPUT packet: " --log-level 7 --log-uid
iptables -A INPUT -j DROP
### *filter FORWARD
iptables -A FORWARD -j DROP
### *filter OUTPUT
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
# Allow Tor process output
iptables -A OUTPUT -m owner --uid-owner $_tor_uid -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j ACCEPT
# Allow loopback output
iptables -A OUTPUT -d 127.0.0.1/32 -o lo -j ACCEPT
# Tor transproxy magic
iptables -A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport $_trans_port --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
# Allow OUTPUT to lan hosts in $_non_tor
# Uncomment these 3 lines to enable.
#for _lan in $_non_tor; do
# iptables -A OUTPUT -d $_lan -j ACCEPT
#done
# Log & Drop everything else. Uncomment to enable logging
#iptables -A OUTPUT -j LOG --log-prefix "Dropped OUTPUT packet: " --log-level 7 --log-uid
iptables -A OUTPUT -j DROP
### Set default policies to DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
### Set default policies to DROP for IPv6
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP
В 6-ой строке где написано _tor_uid="111" #As per assumption надо заменить tor_uid на свой
Чтобы узнать свой ID, в терминале
$ nano /etc/passwd

или просто по пути /etc/passwd в строке начинающейся с debian-tor первые 3 цифры ваш id
Сохраняем эту байду и в терминале запускаем этот файл
$ sudo sh iptables.sh
Перезагружаем тор
$ sudo /etc/init.d/tor restart
Здесь проверяемся настроен ли сам tor: check.torproject.org должны увидеть надпись Congratulations.
Для проверки dns идём на dnsleaktest и жмём Extended test, тут явно не должно быть вашего города и провайдера

- Если всё работает, то при желании прописываемся в автозагрузку:
$ sudo iptables-save > run_tor
Открываем файл /etc/rc.local и перед exit 0 вставляем:
iptables-restore < run_tor

- Чтобы снести все правила iptables и вернуться к тому с чего начинали то можно поискать по правилам:
Bash:
#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPTтф
iptables -P OUTPUT ACCEPT
$ sudo chattr -i /etc/resolv.conf
Если вы создали файл dns.conf то просто удаляем его:
$ sudo rm -f /etc/NetworkManager/conf.d/dns.conf
Также можно добавить в файл настроек тора /etc/tor/torrc чтобы исключить exit-ноды стран СНГ строку:
ExcludeExitNodes {RU},{UA},{BY}
Советую установить утилиту Arm (anonymizing relay monitor) которая позволяет отслеживать активность, редактировать настройки tor'a.
Это всё конечно не панацея, но уже не большой шаг в её направлении.
В любом случае будьте осторожны, т.к. протоколы, отличные от tcp/udp будут ходить в обход tor, поэтому или сразу запретите их в iptables, или не используйте.