LINUX.ORG.RU

История изменений

Исправление SM5T001, (текущая версия) :

Просто завернуть или добиться нормальной работы, т.е. анонимности со сменой цепочек и изоляцией потока? Вероятно второе.

Начать надо с блокирования всего стороннего. Вот правила для iptables, их надо сохранить в исполняемый файл .sh, сделать на него chmod +x и запустить от суперпользователя:

#!/bin/sh

### настройка переменных
# список адресов, работающих мимо Tor(пример: локальная сеть)
_non_tor="192.168.1.0/24 192.168.0.0/24 172.16.0.0/24"

#TransPort нашего Tor
_trans_port="9040"

#основной порт i2p
_i2p_port="10232"

### очистка правил iptables
iptables -F
iptables -t nat -F

### настройка iptables *nat
iptables -t nat -A OUTPUT -m owner --uid-owner tor -j RETURN
iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 9053
iptables -t nat -A OUTPUT -p TCP --dport 53 -j DNAT --to-destination 127.0.0.1:9053

#прямой доступ для $_non_tor
for _clearnet in $_non_tor 127.0.0.0/9 127.128.0.0/10; do
   iptables -t nat -A OUTPUT -d $_clearnet -j RETURN
done

#перенаправление всего остального на TransPort
iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $_trans_port

### настройка iptables *filter
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p TCP --dport $_i2p_port -j ACCEPT
iptables -A INPUT -p udp --dport $_i2p_port -j ACCEPT
iptables -A INPUT -p icmp -j DROP

#прямой доступ для $_non_tor
for _clearnet in $_non_tor 127.0.0.0/8; do
   iptables -A OUTPUT -d $_clearnet -j ACCEPT
done

#разрешаем input для localhost
for _clearnet in 127.0.0.0/8; do
   iptables -A INPUT -d $_clearnet -j ACCEPT
done

#разрешаем только i2p и Tor input/output
iptables -A OUTPUT -m owner --uid-owner tor -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner i2p -j ACCEPT
iptables -A OUTPUT -j REJECT
iptables -A INPUT -j DROP

ОСТОРОЖНО! Только что был закрыт выход в сеть для всех, кроме пользователей tor и i2p.

Теперь доработаем torrc:

TransPort 9040 IsolateDestAddr IsolateDestPort
DNSPort 5353
SocksPort 9250 IsolateDestAddr IsolateDestPort IsolateSOCKSAuth KeepAliveIsolateSOCKSAuth # пригодится далее
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
HTTPTunnelPort 127.0.0.1:9443 IsolateDestAddr IsolateDestPort # для всего, что не поддерживает SOCKS

Теперь ставим torsocks apt install torsocks или как в конкретном дистрибутиве. Далее прописываем в /etc/tor/torsocks.conf :

TorAddress 127.0.0.1
TorPort 9250
OnionAddrRange 10.192.0.0/10
IsolatePID 1

А в .bashrc для всех пользователей добавляем строку . torsocks on

Torsocks помогает изолировать любые программы в терминале. Осталось лишь прописать в настройках прокси где можно SOCKS(9250) и HTTP CONNECT(9443) порты.

Если по какой-то причине необходим HTTP-прокси, но не CONNECT, можно установить и использовать privoxy.

Ну и да, с этими настройками Tor Browser без дополнительных параметров попросту не запустится, надо донастраивать prefs.js. Могу сказать как именно, если интересует(использовать что-то кроме Tor Browser при таких настройках попросту не рекомендуется, могу назвать с десяток причин).

Это всё — для TCP, с UDP же посложнее, но нет ничего невозможного.

Whonix расписывает достаточно подробно: http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/wik...

Но выше правильно сказали, что с другой стороны кто-то должен распаковывать UDP, иначе ничего работать не будет. Вариантов много, но нужна конкретика.

Если не секрет: для чего именно нужен UDP через Tor? Может быть я мог бы подсказать способ получше, будь у меня больше вводных.

Исходная версия SM5T001, :

Просто завернуть или добиться нормальной работы, т.е. анонимности со сменой цепочек и изоляцией потока? Вероятно второе.

Начать надо с блокирования всего стороннего. Вот правила для iptables, их надо сохранить в исполняемый файл .sh, сделать на него chmod +x и запустить от суперпользователя:

#!/bin/sh

### настройка переменных
# список адресов, работающих мимо Tor(пример: локальная сеть)
_non_tor="192.168.1.0/24 192.168.0.0/24 172.16.0.0/24"

#TransPort нашего Tor
_trans_port="9040"

#основной порт i2p
_i2p_port="10232"

### очистка правил iptables
iptables -F
iptables -t nat -F

### настройка iptables *nat
iptables -t nat -A OUTPUT -m owner --uid-owner tor -j RETURN
iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 9053
iptables -t nat -A OUTPUT -p TCP --dport 53 -j DNAT --to-destination 127.0.0.1:9053

#прямой доступ для $_non_tor
for _clearnet in $_non_tor 127.0.0.0/9 127.128.0.0/10; do
   iptables -t nat -A OUTPUT -d $_clearnet -j RETURN
done

#перенаправление всего остального на TransPort
iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $_trans_port

### настройка iptables *filter
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p TCP --dport $_i2p_port -j ACCEPT
iptables -A INPUT -p udp --dport $_i2p_port -j ACCEPT
iptables -A INPUT -p icmp -j DROP

#прямой доступ для $_non_tor
for _clearnet in $_non_tor 127.0.0.0/8; do
   iptables -A OUTPUT -d $_clearnet -j ACCEPT
done

#разрешаем input для localhost
for _clearnet in 127.0.0.0/8; do
   iptables -A INPUT -d $_clearnet -j ACCEPT
done

#разрешаем только i2p и Tor input/output
iptables -A OUTPUT -m owner --uid-owner tor -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner i2p -j ACCEPT
iptables -A OUTPUT -j REJECT
iptables -A INPUT -j DROP

ОСТОРОЖНО! Только что был закрыт выход в сеть для всех, кроме пользователей tor и i2p.

Теперь доработаем torrc:

TransPort 9040 IsolateDestAddr IsolateDestPort
DNSPort 5353
SocksPort 9250 IsolateDestAddr IsolateDestPort IsolateSOCKSAuth KeepAliveIsolateSOCKSAuth # пригодится далее
VirtualAddrNetworkIPv4 10.192.0.0/10
HTTPTunnelPort 127.0.0.1:9443 IsolateDestAddr IsolateDestPort # для всего, что не поддерживает SOCKS

Теперь ставим torsocks apt install torsocks или как в конкретном дистрибутиве. Далее прописываем в /etc/tor/torsocks.conf :

TorAddress 127.0.0.1
TorPort 9250
OnionAddrRange 10.192.0.0/10
IsolatePID 1

А в .bashrc для всех пользователей добавляем строку . torsocks on

Torsocks помогает изолировать любые программы в терминале. Осталось лишь прописать в настройках прокси где можно SOCKS(9250) и HTTP CONNECT(9443) порты.

Если по какой-то причине необходим HTTP-прокси, но не CONNECT, можно установить и использовать privoxy.

Ну и да, с этими настройками Tor Browser без дополнительных параметров попросту не запустится, надо донастраивать prefs.js. Могу сказать как именно, если интересует(использовать что-то кроме Tor Browser при таких настройках попросту не рекомендуется, могу назвать с десяток причин).

Это всё — для TCP, с UDP же посложнее, но нет ничего невозможного.

Whonix расписывает достаточно подробно: http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/wik...

Но выше правильно сказали, что с другой стороны кто-то должен распаковывать UDP, иначе ничего работать не будет. Вариантов много, но нужна конкретика.

Если не секрет: для чего именно нужен UDP через Tor? Может быть я мог бы подсказать способ получше, будь у меня больше вводных.