Hlavní navigace

Bezpečný Tor klient ve virtualizovaném prostředí

Petr Krčmář 19. 8. 2013

Tor je velmi užitečná anonymizační služba a s nejnovějšími skandály okolo (nejenom) amerických tajných služeb se stává čím dál populárnější. Ovšem provozovat Tor klienta tak, aby byl skutečně bezpečný, není žádná legrace. Ukážeme si, jak úplně oddělit virtuální počítač od reálného světa pomocí Toru.

principu sítě Tor jsme tu už několikrát psali, takže jen stručně: jde o síť serverů, které si mezi sebou posílají komunikaci jednotlivých uživatelů. Ta je několikrát zašifrovaná a každý server po cestě má přístup pouze k první šifrované vrstvě, kterou odstraní a zbytek neznámého obsahu pošle dál.

Jakmile poslední server na cestě zjistí, že po rozšifrování své „slupky“ objevil data určená do internetu, jednoduše je tam vyšle. Totéž se děje při cestě zpět: paket je zabalen do několika „slupek“ a poslán do sítě. Právě díky tomuto vícenásobnému balení dostala síť název cibulový router (The Onion Router).

Uvnitř Tor sítě je možné provozovat také anonymní server, takže ani jedna strana pak vlastně netuší, s kým komunikuje. Vše je překryto neznámým množstvím uzlů po celém světě.

Princip samotné sítě je poměrně bezpečný a nějakých zásadních problémů se tu nemusíme obávat. Software za nás řeší vše podstatné a my jen vesele komunikujeme. Past se ale skrývá na straně uživatelského systému. Tor nás totiž neochrání proti tomu, co všechno o sobě prozradíme do internetu. Pokud bude něco opravdu špatně, může nám uniknout naše reálná adresa a celá naše maškaráda se sesype.

Nedávno byl úspěšně proveden útok na webový prohlížeč Firefox 17, který je součástí balíčku Tor Browser Bundle. Díky zneužití této chyby se (zatím) neznámému útočníkovi podařilo posbírat reálné adresy napadených uživatelů. Přesně tohle je situace, které se pokusíme následujícím postupem zabránit.

Cílový stav by tedy měl být takový, že i pokud se podaří kompromitovat klientský počítač na nejvyšší úrovní (třeba získat práva roota), nebude možné zjistit reálnou IP adresu, kterou počítač používá.

Bezpečná virtuální síť

Pro provoz našeho bezpečného počítače použijeme virtualizaci. Já jsem pro svůj postup zvolil VirtualBox, ale v principu je možné nasadit cokoliv. Virtuální počítač bude připojen do „oddělovací sítě“, která ovšem nebude routovaná do internetu. V ní bude vidět jediná IP adresa, která bude nabízet služby DNS resolveru a SOCKS proxy vedoucí přes Tor do internetu.

Co budeme potřebovat:

  • počítač s Linuxem (v mém případě Debian)
  • virtualizační nástroj (třeba VirtualBox)
  • balíček uml-utilities
  • operační systém do virtuálu

Já jsem si jako virtuální operační systém vybral Slax, ale opět je možné použít prakticky libovolnou distribuci nebo i třeba MS Windows. Můžete použít i live systém Tails, který kombinuje Debian, Tor, Firefox a různé doplňky zajišťující lepší anonymitu a bezpečnost.

Hostitel

Nejprve vytvoříme na hostitelském počítači virtuální rozhraní (síťovou kartu) tap1, kterému přidělíme IP adresu z nějakého nekolizního rozsahu a aktivujeme jej.

# tunctl -t tap1 -u petr
# ip addr add 10.1.1.1/24 dev tap1
# ip link set up dev tap1

Poté (stále na hostiteli) nastavíme Tor klienta. To se provádí v souboru /etc/tor/torrc a na jeho konec přidáme následující konfiguraci:

VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
SocksListenAddress 10.1.1.1
DNSPort 53
DNSListenAddress 10.1.1.1

Poté nahodíme Tor, který začne na našem virtuálním rozhraní poslouchat na dvou portech jako SOCKS server a jako DNS resolver.

# /etc/init.d/tor start

Nepovinné, ale doporučené: DHCP server a firewall

Pokud si chceme usnadnit práci a nechce se nám konfigurovat síť ve virtuálním počítači, můžeme si na hostiteli spustit DHCP server. Stačí nainstalovat balíček dnsmasq a do /etc/dnsmasq.conf připsat následující dva řádky:

interface=tap1
dhcp-range=tap1,10.1.1.2,10.1.1.100,255.255.255.0,1h

Poté už stačí jen službu nahodit:

# /etc/init.d/dnsmasq start

Další důležitou věcí, kterou doporučuji nastavit, je firewall. Desktopový počítač obvykle nemá nastavený forwarding paketů, ale pro jistotu zařízneme pokusy protlačit pakety do internetu. Navíc můžete občas na počítači spouštět různé malé serverové služby (třeba web server pro sdílení souborů po síti) a nechcete, aby se k nim dostal náš virtuální systém. Použijeme několik pravidel, která nám povolí jen DHCP, DNS a přístup na Tor proxy.

# iptables -I FORWARD -i tap1 -j DROP
# iptables -I INPUT -i tap1 -j DROP
# iptables -I INPUT -i tap1 -p udp --dport 67:68 -j ACCEPT
# iptables -I INPUT -i tap1 -p udp --dport 53 -j ACCEPT
# iptables -I INPUT -i tap1 -p tcp --dport 53 -j ACCEPT
# iptables -I INPUT -i tap1 -p tcp --dport 9050 -j ACCEPT

Postupně to máme: zákaz procházení paketů přes router, zahazování cizích paketů na rozhraní, povolení DHCP, povolení DNS přes TCP a UDP a nakonec povolení SOCKS proxy.

Virtuální stroj

Nyní nastal čas na VirtualBox. Založíme nový počítač, vybereme parametry hardware podle operačního systému a především zvolíme správné síťové rozhraní. Virtuální kabel našeho systému totiž povede do rozhraní tap1 a nikam jinam.

Poté už můžeme virtuální stroj spustit a nechat nastartovat svůj oblíbený operační systém. Pokud jsme si spustili na hostiteli DHCP server, máme teď usnadněnou práci a čerstvě nastartovaný systém už bude mít přidělenou správnou IP adresu. Pokud nám DHCP neběží, budeme muset adresu zadat ručně.

Adresa musí být v našem případě z rozsahu 10.1.1.0/24, bránu můžeme s klidným srdcem vynechat (stejně nám přes ni nic neprojde) a jako DNS server uvedeme 10.1.1.1.

Teď už zbývá jen nakonfigurovat webový prohlížeč. Ten se nesmí (a ani nemůže) připojovat k internetu přímo, ale musí využít SOCKS proxy server na počítači 10.1.1.1 a portu 9050. Ve Firefoxu je to Menu → Předvolby → Předvolby → Rozšířené → Síť → Nastavení připojení.

Pokud jsme vše udělali správně, měl by se prohlížeč dokázat spojit přes proxy do internetu. Můžeme to vyzkoušet na adrese check.torproject.org, kde nám prozradí, zda jsme přišli přes Tor.

Bezpečný sandbox

Výsledkem snažení je virtuální počítač zcela oddělený od naší sítě, který ale může komunikovat se světem skrz Tor. Pokud potřebujeme, můžeme zároveň používat virtuální i reálný počítač a přecházet tak z běžného do anonymního světa.

Pokud by se někomu podařilo ve virtuálním počítači například prolomit zabezpečení prohlížeče a dostat se k operačnímu systému, nemůže zjistit žádné informace o naší síti. Dozví se jen vymyšlenou místní IP adresu a na síti uvidí jediný počítač poskytující DNS a SOCKS rozhraní, které ho ale do reálné sítě také nepřivedou.

Našli jste v článku chybu?

19. 8. 2013 8:39

MilanK (neregistrovaný)

A nezkonfiguruje ten hostitelský (host) Linux na tap1 také automaticky lokální adresu IPv6? Ta se ve firewallu neřeší...

19. 8. 2013 14:46

Tor umí z DNS resolvovat jen A a IPv4 PTR záznamy (protože jen to je implementováno v jeho evdns interface). Pozn.: některé části IPv6 implementace jsou už ve větvi 0.2.4.x dokončeny, tato větev se brzo bude "stable".

Spojení přes SOCKS5 proxy fungují tak, že se přes SOCKS rozkáže "připoj se k hostu abla.ble.blu nebo whatever.onion". Tor klient nikdy nevidí, jakou zkutečnou adresu má cílový host, ke kterému se připojuje, jen dostane otevřený tunel.

Proto pozor např. na SRV dotazy z XMPP klient…

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: 7 originálních adventních kalendářů pro mlsné

7 originálních adventních kalendářů pro mlsné

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte