• XSS.stack #1 – первый литературный журнал от юзеров форума

Проксируем систему через Tor

zxc21

RAM
Пользователь
Регистрация
07.12.2018
Сообщения
141
Реакции
207
Всем Добра уважаемые xss-users!

Толи паранойя меня зашкаливает, толи паранойя просто *опа как зашкаливает :smile46:
Конкурс я уже продинамил, но не в деньгах счастье.
Решил набрать много букв на тему Tor'a, черпал на сколько умею тут, но буржуйский у меня на 2+ поэтому решил своими словами изложить.
Попробую расписать о методе настройки через политики iptables

Настройка iptables:
  • Установка самого tor'a (не путать с tor-browser).
  • Редактирование файла конфига tor'a.
  • Запрет NetworkManager'у сувать своё жало туда, куда он его суёт по дефолту.
  • Настройка политик iptables
  • Отключение политик

  • Тут нам для начала понадобится установить сам tor
$ sudo apt install tor
  • Редактируем файл настроек тора torrc
$ sudo nano /etc/tor/torrc

В начало или в конец файла дописываем:
PHP:
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1  
TransPort 9040       
DNSPort 5353
Терминал_113.png
В принципе эта шляпа запускает собственный DNS-сервер и все dns-запросы уже идут через него,
также открывает порт, через который весь трафик будет гоняться.
Для чего нужна самая первая строка - затрудняюсь сказать.

Перезагружаем тоr:
$ sudo service tor restart
  • Удаляем файл /etc/resolv.conf, так как часто это симлинк:
$ sudo rm -f /etc/resolv.conf

и создадим новый:
$ sudo echo "nameserver 127.0.0.1" > /etc/resolv.conf
Выделение_110.png
  • Запрещаем NetworkManager'u совать руки в файл resolv.conf.
Либо можно тупо залочить файл resolv.conf
$ sudo chattr +i /etc/resolv.conf

либо по пути /etc/NetworkManager/conf.d/ создать файл dns.conf и прописываем в него:
Bash:
[main]
dns=none
Выделение_109.png
  • Создаём в домашней директории файл 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
Терминал_114.png


или просто по пути /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, тут явно не должно быть вашего города и провайдера
003.png 002.png 001.png
  • Если всё работает, то при желании прописываемся в автозагрузку:
Сохраним правила iptables в файл run_tor
$ sudo iptables-save > run_tor

Открываем файл /etc/rc.local и перед exit 0 вставляем:
iptables-restore < run_tor
Терминал_115.png
  • Чтобы снести все правила iptables и вернуться к тому с чего начинали то можно поискать по правилам:
sudo iptables -L / sudo iptables -S либо с другими ключами и ручками всё исправить, это если у вас уже настроенный фаервол, если нет то тупо в /home создаёте файл virgin.sh с содержимым:
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
Который запускаете также в терминале и который вернёт все настройки к девственным , затем если вы просто залочили файл 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.
004.png 005.png 006.png


Это всё конечно не панацея, но уже не большой шаг в её направлении.
В любом случае будьте осторожны, т.к. протоколы, отличные от tcp/udp будут ходить в обход tor, поэтому или сразу запретите их в iptables, или не используйте.
 
А torghost тебе чем не угодил?
А мы лёгких путей не ищем :smile53: :)

Тут иллюстрация в картинках как тот же torghost работает, взгляд из нутри.
Что torghost что torIptables2 и подобное это всё просто разновидность анонсерферов, которые просто запускают тор трафик через изменения в айпитейблс,
режут всё и заворачивают на порт тора, а так просто фантики красивые.
 
А мы лёгких путей не ищем :smile53: :)

Тут иллюстрация в картинках как тот же torghost работает, взгляд из нутри.
Что torghost что torIptables2 и подобное это всё просто разновидность анонсерферов, которые просто запускают тор трафик через изменения в айпитейблс,
режут всё и заворачивают на порт тора, а так просто фантики красивые.

Вы х*йней страдаете.
У тебя что? Это же самое и есть :D. Нахрена в картинках то, что не нужно? Ок, обьясню, чтоб дальше не возваращаться к этой теме:

Код torghost посмотри (клик)

Ты просто по факту оттуда расписал, как это же самое,что он делает на лету, вбивать руками
Но для чего, wtf?o_O, ты же не расписал, какой параметр за что отвечает совершенно).

Т.е. у тебя:
В принципе эта шляпа запускает собственный DNS-сервер и все dns-запросы уже идут через него,
также открывает порт, через который весь трафик будет гоняться.
Для чего нужна самая первая строка - затрудняюсь сказать.

Надо было хотя бы так:
VirtualAddrNetworkIPv4 10.192.0.0/10 #Когда Tor необходимо назначить виртуальный (неиспользуемый) адрес из MAPADDRESS, командой от контроллера или функции AutomapHostsOnResolve, он выбирает неназначенный адрес из этого диапазона. (По умолчанию: 127.192.0.0 /10)
AutomapHostsOnResolve 1 # Разрешаем резольвить через тор.
TransPort 9040 #Транзитный порт для трафика.
TransListenAddress 10.0.1.1 # Адрес для прослушивания прозрачных прокси соединений. В моем случае адрес туннеля.
DNSPort 5353 #DNS порт, суда будет направлять dns запросы в сеть тор.
DNSListenAddress 10.0.1.1 # Привязка к этому адресу для прослушивания DNS-подключений.

Torghost или TorIptables при этом делают все вышеописанное тобой в одну команду.

Смысл изобретать велосипед и вбивать все руками, если юзер эти действия не запомнит, ему непонятно, что он вбивает (а ты не обьяснил никак а только запутал)
Не легче ли оставить по умолчанию в torghost или torIptables?

Кто хочет разобраться, те наоборот допилят туда же свои настройки
Например

ExcludeExitNodes {RU},{UA},{BY},{KZ},{MD} и т.д.
StrictNodes 1
HiddenServiceStatistics 0
PublishServerDescriptor 0

и будут запускать в "один клик", чем все эти действия повторять, перезапускать, стирать и добавлять руками каждый раз.
Это и есть "автоматизация" батенька.
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх