Provoz anonymního serveru v doméně .onion přes Tor

1. 2. 2012
Doba čtení: 8 minut

Sdílet

S přibývajícími snahami se směšnými názvy SOPA, ACTA a PIPA, jejichž záměr ale zas tak vtipný není, se budou čím dál častěji objevovat požadavky o anonymizaci uživatelů. Pro ně existuje dostatek funkčních řešení, ale co servery? Ty jsou podstatně víc na ráně a snadno se vypínají. Naštěstí i tohle řeší Tor.

SOPA, PIPA, ACTA a další podobné zákony se snaží zatočit s ilegálním sdílením obsahu, ale zároveň přitom útočí na svobodu slova a z onoho „káceného lesa“ lítají pořádně velké třísky. Poškodí to tedy nejen ty, kteří porušují autorská práva, ale ve výsledku všechny, kteří chtějí sdílet jakoukoliv citlivou informaci.

Pokud tedy chceme sdílet nějaké citlivé informace, jsme postaveni před poměrně zásadní otázku: Jak to udělat anonymně? Řekněme, že se nám do rukou dostala nová podoba smlouvy ACTA, kterou se snaží jednající strany utajit (ACTA byla skutečně původně projednávána tajně – pozn. autora). Těžko ji jen tak vystavíme na svůj blog nebo své rodinné stránky. To by mělo dvě nevýhody: takový web se dá rychle vypnout a zároveň je možné jednoduše dohledat toho, kdo dokument zveřejnil.

Tor: nejen tam, ale i ven

O známé anonymizační síti Tor toho už bylo napsáno hodně, před několika lety jsme podrobně popsali princippoužití ve Firefoxu. Teď tedy jen velmi stručně k principu. Jedná se o neorganizovanou síť počítačů, které fungují jako přestupní uzly a dokáží příchozí data předat dalšímu uzlu v řadě. Klient, který chce komunikovat anonymně, si z těchto uzlů vytvoří náhodnou trasu, přes kterou nechá svá data směrovat. Aby ani uzly nevěděly, kdo, kam a co posílá, zašifruje klient svá data několikrát za sebou. Výsledek je proto zabalený jako cibule (proto The Onion Router – Cibulový směrovač).

Každý uzel v řadě dokáže dešifrovat jen vrchní slupku, pod kterou se ukrývá informace o tom, kam dál má balík dat poslat. Každý router tedy zná předchozí i následující krok, ale nezná celou trasu, neví, co se přenáší, odkud to bylo vysláno, ani kde to nakonec skončí. Až poslední uzel totiž vybalí finální data (aniž to předem tušil) s cílovou adresou. Navíc se celá trasa průběžně mění a i konečný obsah může být zašifrovaný. Tolik ve stručnosti k principu Toru.

Obvykle je Tor nasazován na uživatelské straně, aby se uživatel ukryl před zvědavými zraky svého poskytovatele a/nebo správce serveru, se kterým hodlá komunikovat. Poskytovatel uvidí jen šifrovanou komunikaci s různými počítači po celém světě, správce serveru uvidí příchozí požadavek třeba odněkud z Irska, ale nebude schopen zjistit, kdo doopravdy data stahuje.

Přestože je výše zmíněný případ standardním nasazením, je možné to udělat i obráceně: za síť Tor ukrýt i samotný server. Pokud tedy bude Tor nasazen na obou stranách jako komunikační rozhraní, nebude ani jedna strana vědět o té druhé vůbec nic. Tedy kromě toho, že existuje. Ani klient ani server nebudou identifikovatelní, protože budou ukryti za vrstvou anonymizačních uzlů, které jim zprostředkují komunikaci.

Praxe aneb jako se .cz mění v .onion

Abyste mohli ukrýt svůj server za Tor, musíte nejprve nějaký server mít. Tor nijak neomezuje provozované služby, nemusíte se tedy spokojit jen s HTTP, můžete používat i SSH, SMTP, IMAP4 a cokoliv dalšího vás napadne. To podstatné je, že nebudete prozrazovat svou IP adresu, protože budete provozovat skrytou službu (anglicky hidden service).

Předpokládejme, že máte funkční server a na něm na localhostu běží na portu 8080 webový server a také na 2222 provozujete SSH. Obojí chcete sdílet anonymně. Samozřejmě je jedno, na kterém portu služby poběží, můžete klidně zachovat standardní porty. Pro názornost ale budeme uvažovat tyto pozměněné porty.

Budeme také potřebovat balíček Tor, zcela jistě ho najdete ve své distribuci. V Debianu stačí nainstalovat stejnojmenný balíček tor. Poté musíte zeditovat konfiguraci a přidat do ní novou skrytou službu. Otevřete proto soubor /etc/tor/torrc a přidejte (nebo odkomentujte a upravte) následující řádky:

HiddenServiceDir /var/lib/tor/mujtorserver/
HiddenServicePort 80 127.0.0.1:8080
HiddenServicePort 22 127.0.0.1:2222

Těchto sekcí můžete mít ve své konfiguraci samozřejmě neomezený počet. Každá z nich pak bude reprezentovat jeden skrytý server. Na něj pak budou vždy vyvedeny ty reálné porty, které si určíte. Samozřejmě musíte pro každou skrytou službu vybrat jiný adresář. Ten musí být navíc zapisovatelný uživatelem, pod kterým Tor běží.

Teď už stačí jen Tor klienta restartovat a služba je na světě. Vytvoří se vám další rozhraní, ke kterému se budou moci uživatelé připojovat přes Tor. Na něm bude na port 80 přesměrován váš web server a na portu 22 se budete moci spojit skrze SSH. Protože vše běží přes Tor, nemusí mít váš server ani veřejnou IP adresu. Službu tedy můžete klidně provozovat doma na svém notebooku.

Aby uživatelé měli možnost se vůbec připojit, budou potřebovat speciální Tor adresu. Tu naleznete právě v adresáři /var/lib/tor/mujtorserver/, který jste zadali v konfiguraci. Tam naleznete dva důležité soubory: private_key a hostname. První jmenovaný obsahuje veřejný a tajný klíč k vaší službě. Nesmíte ho dát z ruky, jinak může být vaše identita vyzrazena (viz další kapitolu).

Nás teď ale bude zajímat soubor hostname. Jedná se o textový soubor, který obsahuje doménové jméno vaší nové skryté služby. To není zařazeno do globálního DNS systému, ale jen do Toru. Používá doménu prvního řádu .onion a má tvar například: duskgytldkxiuqc6.onion. Pokud jej uživatel zadá na běžném počítači, samozřejmě se nikam nedostane. Pokud má ale nainstalovaný Tor, bude připojen k vašemu skrytému serveru. Toto nové jméno skryté služby můžete bez problémů rozdávat.

Co když uživatel nemá Tor?

To se týká situace Tor2Tor, tedy kdy uživatel také používá Tor. Obě strany jsou tak plně anonymní a neví nic o svých pravých IP adresách. Existuje ovšem mnoho situací, kdy takto robustní řešení nepotřebujeme. Nechceme nutit uživatele používat Tor, aby se podívali na náš obsah a stáhli si ho. Pokud v takovém modelu není třeba zajistit anonymitu uživatelů, je možné využít webovou Tor proxy.

Ta provede „překlad“ z Toru do běžného webu. Nijak se tím neomezují uživatelé, kteří chtějí Tor použít, ti stále mohou zůstat anonymní. Nejznámější službou tohoto typu je tor2web.org. Používá se velmi jednoduše: jako doménu třetího řádu uvedete onion hostname. Navštívíte tedy adresu ve tvaru duskgytldkxiuq­c6.tor2web.org a dostanete se na server za Torem, přičemž spojení vám zprostředkuje zmíněná webová služba. Pozor ovšem na to, že jako uživatel nejste anonymní.

Další podobnou službou je Onion.to. Funguje úplně stejně, můžete tedy navštívit testovací stránku duskgytldkxiuq­c6.onion.to. Opět byste měli vidět obsah i bez Tor klienta.

Jak to funguje?

Ukázali jsme si, jak se taková skrytá služba realizuje, vy se teď ale určitě ptáte: „Je to skutečně tak bezpečné a anonymní?“ Abychom to zjistili, musíme pochopit, jak skryté služby v Toru fungují. Už jsme si vysvětlili jejich praktickou realizaci a teď se zase ponoříme do nudné (i když v tomto případě spíše zajímavé) teorie.

Aby byla skrytá služba dostupná, musí mít uživatelé možnost ji kontaktovat. Server si při vytváření služby náhodně vybere několik uzlů sítě Tor, představí se jim a vytvoří si s nimi trvalé tunely. Tyto tunely samozřejmě běží přes další Tor uzly, takže vše je stále anonymní. Vybrané uzly tedy netuší, kdo je přesně kontaktoval.

Skrytý server předá vybraným uzlům svůj veřejný klíč a požádá je, aby fungovaly jako „randevů body“, tedy místa setkání. Přes tyto body a jejich tunely je tedy možné server nakonec kontaktovat. Aby se uživatelé (respektive klientské aplikace) dozvěděly, které body to vlastně jsou, vznikne takzvaný „hidden service descriptor“ čili popis skryté služby. To je soubor obsahující informace o místech setkání, který je podepsán privátním klíčem serveru.

Tento soubor dat je poté (opět anonymně) pomocí speciálního protokolu vložen do distribuované hash tabulky, která je v Tor síti dostupná a obsahuje seznam všech podobných skrytých služeb. Aby byla v tabulce služba identifikovatelná, používá se otisk veřejného klíče, který už jsme viděli jako šestnáctiznakové doménové jméno. Toto jméno je tedy unikátně spojeno s podepsaným záznamem v hash tabulce a tento záznam vás zase dovede ke kýženým vstupním bodům, které vás spojí se samotným serverem. Pokud se chcete dozvědět o spojení další detaily, doporučuji dokumentaci k Toru.

Z toho plyne několik důležitých věcí. Zcela zásadní v tomto systému je pár veřejného a privátního klíče. Pokud byste jej ze serveru ztratili, někdo by se mohl vydávat za vaši službu a fungovat třeba jako man-in-the-middle. Vydal by totiž nové pokyny místům setkání a vytvořil by vlastní tunely i záznam v hash tabulce s vašim podpisem.

Za druhé doménové jméno .onion je pevně svázáno s těmito klíči. Pokud tedy chcete zajistit dostupnost své služby kdykoliv v budoucnu, určitě si soubor s klíči dobře zálohujte. Pokud o ně přijdete, nebudete schopni znovu vytvořit skrytou službu se stejným jménem a přijdete tak o uživatele, kterým budete muset znovu distribuovat nové doménové jméno.

Anonymita skrze Tor je tedy zajištěna poměrně dobře, ale musíme si uvědomit, že existuje celá řada pastí. Kromě zmíněné ztráty privátního klíče je tu především riziko v napadení vašeho serveru. Pokud se útočník připojí přes Tor a podaří se mu získat plný přístup k systému, může se podívat na reálnou IP adresu stroje. Je proto třeba zajistit takové prostředí, aby to buď nebylo možné (virtualizace, zamezení přístupu k jiným než Tor serverům a podobně), nebo aby to bylo co nejkomplikovanější. Bezpečnost serveru je už ale nad rámec tohoto článku.

ict ve školství 24

Pomalu, ale jistě

Je třeba počítat s tím, že podobný anonymní přístup je výrazně pomalejší než klasické přímé připojení k serveru. Jednak je třeba navázat řadu spojení navíc, mnohokrát šifrovat a dešifrovat, ale hlavně je síť Tor poměrně zatížená. Pokud však potřebujete světu předat data anonymně nebo pustit uživatele do tajného prostoru, jedná se o velmi atraktivní možnost.

Výhodou je, že v případě potřeby může být anonymní i uživatel, ale díky webovým Tor proxy to není nutný požadavek. Můžete zachovat i uživatelsky poměrně přívětivý přístup. Nezapomeňte také, že můžete Tor síti pomoci tím, že vytvoříte další z mnoha uzlů, které jej obsluhují. Pomůžete ostatním, ale i sami sobě.

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.