Tvorba Tor relaye

Správa linuxového serveru: Tvorba Tor relaye

Minulé dva díly představily anonymizační nástroj Tor a jeho možné nasazení při tvorbě anonymizovaného serveru. Dnes vám ukážu, jak vytvořit vlastní Tor relay (resp. Tor server).

Úvod

Pokud jste nečetli poslední dva díly, přečtěte si přinejmenším první díl miniseriálu o Toru, jelikož obsahuje základní informace o Toru jako takovém, a také klíčové informace o tom, co znamená provozovat Tor relay a jaká jsou případná nebezpečí.

Tor relay, nebo také Tor server, představuje uzel v Tor síti. Tyto uzly jsou používány klienty, kteří z nich vytvoří tzv. okruh, přes který komunikují. Tento okruh se tvoří náhodně a pravidelně se mění. Čím více má Tor síť uzlů, tím lépe je na tom s anonymitou.

Druhy Tor serverů

Existují tři druhy Tor serverů – prostředník (middle relay), výstupní uzel (exit relay) a most (bridge). Prostředník doručuje zašifrované pakety z jednoho Tor uzlu na jiný. Výstupní uzel obsluhuje požadavky „za“ klienty, tedy dešifruje příslušný paket, pošle jej do internetu a odpověď pak pošle okruhem klientovi zpět. Tor servery se po svém spuštění zařadí do Tor „adresáře“, který představuje seznam dostupných Tor serverů. Tento seznam je veřejný, což umožňuje odpůrcům Toru, aby zakazovali komunikaci klientů s těmito servery. Most (bridge) představuje Tor server, který do veřejného adresáře zařazen není. Mosty tedy mohou být použity těmi, jejichž ISP nebo vláda použití Toru blokuje, aby toto blokování mohli obejít.

Nasadit Tor server, nebo ne?

Vytvoření Tor serveru je třeba pečlivě zvážit, neboť může mít za určitých podmínek pro jeho provozovatele negativní následky. IP adresa serveru se může objevit v některých blacklistech, je-li Tor server zařazen ve veřejném „adresáři“. V závislosti na tom, jakou výstupní politiku (exit policy) uplatníte, se může váš server stát i zdrojem podezřelé (nebo přímo nelegální) komunikace (platí pro výstupní uzel, který vyřizuje požadavky „za“ klienty). Může se tedy stát, že se stane váš server, nebo přímo vy, objektem policejního vyšetřování nebo případných žalob apod. Viz třeba tento článek. V souvislosti s právními otázkami si můžete také projít právní FAQ o Toru od EFF.

Před tím, než Tor server nasadíte, určitě o tom doporučuji informovat v první řadě správce sítě (nebo ISP), popřípadě správce serveru či hypervizoru. Informovat byste měli všechny, kteří mohou být při případném maléru nějakým způsobem postiženi (zabavení serveru policií apod.). Uvažte také, na jakém serveru budete Tor provozovat, je-li jen váš, nebo zda jej s někým sdílíte (virtuální servery). Rozhodně by to neměl být jakýkoliv produkční či korporátní server. Ideálně by to měl být váš (pokud možno fyzický) server.

Doporučuje se také na IP adrese Tor serveru zřídit webový server a vystavit na něm stránku, která informuje jeho návštěvníky, že se jedná o Tor server. Obsah takové stránky můžete čerpat odsud.

Instalace

Instalace představuje nainstalování příslušného balíčku s Torem, což v Debianu provedete takto:

aptitude install tor

Konfigurace

Nastavení Toru je klíčové. Budete-li tvořit Tor server, rozhodne právě jeho konfigurace o tom, jaký typ (viz výše a níže) postavíte. Konfigurační soubor byste měli najít v /etc/tor/torrc. Dostupných voleb má Tor značné množství, zde budou probrány jen ty nejpodstatnější (o ostatních volbách se dozvíte z manuálové stránky). Základem pro funkci serveru je volba ORPort, která určuje port, který bude ohlášen klientům nebo jiným Tor serverům:

ORPort 9001

Název může mít 1 až 19 znaků a musí být složen pouze z čísel a písmen. Pokud má váš server více IP adres, můžete definovat, na které IP adrese bude Tor poslouchat:

ORListenAddress 1.2.3.4

Je také třeba definovat jednoznačný název serveru v parametru Nickname (pozor, nejedná se o DNS jméno, ale nějaký název, který si vy vymyslíte):

Nickname mujtorserver

Není nutné, ale je doporučeno vytvořit i kontaktní informaci, aby vás mohli správci Toru (nebo kdokoliv jiný) kontaktovat. Mějte na paměti, že tuto e-mailovou adresu mohou z adresáře Tor serverů vyzobat roboti spammerů:

ContactInfo Jan Novák <novak AT example dot org>

Je také doporučeno, abyste kromě funkce Tor uzlu zprovoznili ještě zrcadlo adresářového serveru, který předává klientům informace o Tor serverech. Toho docílíte definováním portu pro distribuci adresářových informací:

DirPort 9030

Chcete-li, aby Tor na vašem serveru běžel pouze jako server a nikoliv ještě navíc v režimu klienta, nastavte klientský port na nulu:

SocksPort 0

Nemáte-li k dispozici neomezený traffic, můžete využít volby pro řízení datového toku. Specifikujte průměrnou hodnotu datového toku a hodnotu náhlé potřeby (burst):

BandwidthRate  100KB
BandwidthBurst   1MB

Hodnoty jsou v bytech (nikoliv v bitech). Minimum pro průměrnou hodnotu (BandwidthRate) je 20 KB, výchozí hodnota je 5 MB. Můžete také specifikovat strop, tedy datový limit, po kterém Tor server přestane akceptovat nová spojení a vytváření nových okruhů. V tomto případě je třeba definovat hodnotu limitu (v bytech) a údobí, za které se doba počítá, např:

AccountingMax 10 GB
AccountingStart week 2 13:00

Výše uvedený příklad bude za datový limit považovat 10 GB, přičemž počítat začne týdně (week), vždy v úterý (číslo 2), a to ve 13:00.

Tolik k obecným volbám. Následují specifické volby nutné pro konkrétní typ Tor serveru, který se rozhodnete provozovat.

Vytvoření prostředníka (middle relay)

Prostředník je de facto uzel, který neakceptuje odchozí požadavky. Chcete-li vytvořit prostředníka, postačí nastavit odchozí politiku (exit policy) takto:

ExitPolicy reject *:*

Tato odchozí politika bude odmítat veškeré pokusy o odchozí spojení.

Vytvoření výstupního uzlu (exit relay)

Zatímco prostředník odchozí komunikaci zcela zakazuje, výstupní uzel by ji naopak měl povolit. Je samozřejmě možné specifikovat, na jaké porty, popřípadě na jaké IP adresy je možné přistupovat, a kam naopak není. Tuto odchozí politiku je možné specifikovat direktivou ExitPolicy. Ta může obsahovat jedno nebo více pravidel oddělených čárkou (pravidla začínají klíčovým slovem accept nebo reject, za ním pak následuje specifikace IP adres a portů). Pravidla se zpracovávají od prvního k poslednímu. Uvažte následující dva příklady:

ExitPolicy accept *:80,accept *:443,reject *:*
ExitPolicy reject *:25,reject *:465,accept *:*

První příklad definuje velmi restriktivní politiku, která povoluje pouze HTTP a HTTPS (porty 80 a 443), jinou komunikaci nepovoluje. Druhý příklad ukazuje relevantně benevolentní politiku, kde je povoleno vše kromě portů 25 a 465, které odpovídají protokolu SMTP a jeho SSL variantě.

Privátní rozsahy a veřejnou IP adresu vašeho serveru není potřeba explicitně blokovat, jelikož jsou blokovány zcela automaticky. Pokud se vám takové chování nezamlouvá, nastavte volbu ExitPolicyRejectPrivate na hodnotu 0 a specifikujte odchozí politiku ručně, podle svých představ.

Vytvoření mostu (bridge)

Most je charakteristický tím, že na rozdíl od ostatních typů Tor serverů není automaticky zařazen do veřejného seznamu. Pokud by vás zajímal seznam jako takový, můžete se na něj podívat ve webové podobě třeba sem. Nechcete-li, aby byl váš server veřejně zmiňován, vložte do konfiguračního souboru Toru následující řádek:

BridgeRelay 1

Vytváříte-li most, nezapomeňte upravit také výstupní politiku (viz vytvoření výstupního uzlu a prostředníka výše).

I když váš server nebude zmiňován veřejně, informace o něm bude stále odesílána, konkrétně pak na seznam mostů. Ten je, jako celek, neveřejný. Zájemci však mohou získat adresy některých mostů třeba zde.

Vytvoření soukromého, tajného serveru

Pokud nechcete, aby se informace o vašem serveru dostala na jakýkoliv seznam, včetně seznamu mostů, můžete publikování zakázat následující řádkou:

PublishServerDescriptor 0

Aby měl takový server smysl, měl by jej samozřejmě někdo využívat. Je tedy třeba nějakým způsobem dopravit informaci o jeho existenci (tj. alespoň IP adresu) jeho uživatelům.

Kontrola funkčnosti serveru

Po úpravě konfiguračního souboru Tor restartujte:

/etc/init.d/tor restart

Pokud se vám podařilo Tor server korektně nastavit a vámi nastavené porty Toru jsou zvenčí přístupné, měli byste během 20 minut objevit v logu Toru následující hlášku:

Self-testing indicates your ORPort is reachable from the outside. Excellent.

Pokud ji neobjevíte, zkontrolujte firewall a konektivitu.

Bezpečnost Tor serveru

Abyste zajistili anonymitu klientům sítě Tor, projděte si následující body (další body):

Tor a firewall

Nastavení odchozí politiky a síťový provoz Toru můžete upravovat a omezovat pomocí linuxového firewallu. Jelikož Tor běží pod konkrétním uživatelem, můžete jej omezit pomocí modulu owner, což bylo naznačeno i s příkladem v minulém díle.

Závěr

Na závěr znovu připomínám, co jsem již zmínil v úvodu. Provoz Tor serveru může mít v závislosti na jeho nastavení jisté negativní následky, se kterými byste měli počítat a být na ně připraveni. Je smutným faktem, že Tor jako takový je využíván nejenom etickými způsoby (např. k překonání cenzury), ale také k nejrůznějším neetickým a nezákonným účelům. To je ale z podstaty věci neřešitelný problém. Faktem zůstává, že pro řadu lidí, a to nejen v zemích s vládní cenzurou (Čína, Írán apod.), má Tor obrovský význam. A čím více (důvěryhodných) Tor serverů bude, tím silnější anonymitu a lepší službu bude Tor svým uživatelům poskytovat.