Tato dokumentace je jen pro Turris OS 3.x, který se už nenachází na nově prodávaných routerech. Novou dokumentaci najdete na https://docs.turris.cz/.
Tor je populární anonymizační proxy, umožňující routovat TCP spojení přes několik uzlů než dorazí k zamýšlenému cíli. V síti existují tzv. hidden services se jménem končícím na .onion
, které jsou dostupné jen přes Tor.
Běžně se používá Tor z lokálního stroje, kde běží jako SOCKS5 proxy. Tento návod ukazuje nastavení, kde každý klient připojený z LAN nebo Wifi routeru Turris bude mít všechny TCP spojení routovány přes Tor.
Tento návod je pro pokročilé uživatele. Zásadním způsobem mění routování provozu v Turrisu, což může při neopatrnosti způsobit nefunkčnost sítě. Routování přes Tor může mít vyšší chybovost a projevovat se například dočasnými výpadky resolvování DNS.
Tor je anonymizační síť, která používá onion routing - speciální způsob routování, kde každý uzel dokáže z paketu vlastním šifrovacím klíčem odstranit jednu „vrstvu cibule“ a poslat paket k dalšímu uzlu, ale netuší, kde je cílová destinace paketu (po „oloupání všech vrstev cibule“). Pro seznámení s Tor-em je vhodné nainstalovat Tor Browser Bundle, což je Firefox speciálně upravený pro prohlížení přes Tor.
Pro zachování anonymity je podstatné si uvědomit, že se člověk musí vyvarovat „křížení proudů“ - používat např. stejný prohlížeč pro Tor jako mimo něj - ISP a jednotlivé servery vás jinak dokáží identifikovat podle cookies. Ze stejného důvodu nesmíte používat obyčejný DNS server, protože i když data budou putovat přes Tor, DNS dotazy by prozradily, kam se připojujete. Návod níže bude routovat DNS přes Tor, ale používání prohlížeče a aplikací přes Tor bezpečně si musíte ohlídat sami. TorProject má k tématu celkem podrobnou stránku s odpověďmi pro různé použití Toru (v angličtině).
Jedním z protokolů, který se nedoporučuje používat přes Tor, je BitTorrent, protože BitTorrent prozradí vaší skutečnou IP uvnitř protokolu samotného (je to nutné k funkčnosti protokolu).
Zjistíte, že prohlížení přes Tor je pomalejší (hlavně v odezvě) než „obyčejný“ širokopásmový internet - vaše pakety mohou oběhnout Zemi dvakrát, než se dostanou k cíli přes Tor. Síť je provozována dobrovolníky a je lepší ji nezatěžovat přenosem velkých objemů (řekněme GB a více).
Z výše uvedených důvodů může být routování veškerého provozu z LAN přes Tor pro běžný provoz domácí sítě nevhodné. V takovém případě lze oddělit pouze některou část sítě (např. wifi nebo konkrétní port na routeru) pro provoz přes Tor, což popisuje závěrečná část návodu.
Transparentní routování přes Tor má následující omezení:
Routování LAN komunikace přes Tor je experimentální a samo o sobě nezaručuje anonymitu při používání sítě. Například browser v mobilu neví, že komunikuje ve skutečnosti přes Tor a bude používat stejné cookies, které používá při přístupu na „obyčejný internet“. Stejně tak mnoho protokolů může uvnitř prozradit skutečnou IP adresu. Z toho důvodu je používání Tor Browser Bundle lepší.
Instalaci provedeme v rozhraní Foris. Na záložce „Updater“ zaškrtneme Tor a potvrdíme. Tím ovšem pouze nainstalujete balíčky. Následně je třeba použít příkazovou řádku, např. přes SSH.
Editujeme soubor /etc/tor/torrc
, aby vypadal následovně:
User tor DataDirectory /var/lib/tor Log notice file /var/log/tor/notices.log VirtualAddrNetwork 10.192.0.0/10 AutomapHostsOnResolve 1 TransPort 192.168.1.1:9040 DNSPort 192.168.1.1:9053
Tor spustíme a nastavíme, aby se spouštěl vždy po startu:
/etc/init.d/tor start /etc/init.d/tor enable
Nastavení přesměrování uděláme přidáním následujících řádků do souboru /etc/firewall.user
:
# Turris version source /etc/openwrt_release # Tor's TransPort _trans_port=9040 # internal interface _int_if=br-lan _non_tor="127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16" # external interface if [ "$DISTRIB_CODENAME" == "omnia" ]; then _ext_if=eth1 else _ext_if=eth2 fi #allow lan access for hosts in $_non_tor for _lan in $_non_tor; do iptables -t nat -A PREROUTING -i $_int_if -d $_lan -j RETURN done #DNSPort runs only on UDP iptables -t nat -A PREROUTING -i $_int_if -p udp --dport 53 -j REDIRECT --to-ports 9053 #Transparent routing through Tor's TransPort iptables -t nat -A PREROUTING -i $_int_if -p tcp --syn -j REDIRECT --to-ports $_trans_port #Prevent UDP traffic from being forwarded iptables -I FORWARD -i $_int_if -p udp -o $_ext_if -j DROP
Nakonec spustíme příkaz, který nová firewallová pravidla aplikuje:
fw3 restart
Nyní bude IPv4 TCP provoz z LAN a wifi včetně speciální .onion
pseudo-domény přesměrován přes Tor.
Kvůli tomu, že se IPv6 provoz nepřesměrovává, je doporučeno IPv6 na Turrisu vypnout. To provedeme příkazy:
sysctl -w net.ipv6.conf.all.disable_ipv6=1 sysctl -w net.ipv6.conf.default.disable_ipv6=1
Dále přidáme do /etc/sysctl.conf
řádky, které IPv6 vypnou i po restartu:
net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.default.disable_ipv6=1
Odstraníme řádky z /etc/firewall.user
, které jsme v tomto návodu přidali a
restartujeme firewall příkazem:
fw3 restart
IPv6 reaktivujeme odstraněním řádek, přidaných do /etc/sysctl.conf
.
Případně restartujeme router.
Úpravou iptables je možné routovat jenom část spojení z LAN nebo Wifi. Pokud budete měnit _int_if
v iptables skriptu na některý ze specifických interface eth0
, eth1
nebo wlan0
, je nutné nejprve daný interface vyjmout z bridge br-lan
editací /etc/config/network
pro LAN nebo /etc/config/wireless
pro wifi. Po editaci aplikujeme nastavení spuštením /etc/init.d/network restart
.
Dokud jsou interface v bridge, iptables vidí spojení jako by pocházeli z br-lan
. Pravděpodobně pak budete chtít „odbridgovanému“ interface nastavit adresu a přidat mu nastavení DHCP v /etc/config/dhcp
.
Návod na oddělení interface z bridge do samostatné sítě (VLAN) je uveden v článku Rozdělení sítě do různých VLAN. Nezpomeňte pak upravit i IP adresy v /etc/tor/torrc
, aby poslouchali na nově odděleném rozhraní.