Własna strona w sieci Tor

Za sprawą normalnych tradycyjnych stron w sieci Tor zrobiło się ostatnio głośno z powodu Facebooka. Nie dość, że Facebook wystawił stronę oficjalnie do sieci Tor pod adresem .onion, to adres był ciekawy, a całość jest dostępna po HTTPS, czyli w wersji szyfrowanej[1]. Mniejsza o powody, dla których to uczynili. Wydaje się, że nie tyle chodziło im o anonimowość użytkowników (nie miejcie złudzeń), co o ich prywatność i bezpieczeństwo (ukrycie lokalizacji). Plus przy okazji rozwiązali sobie problem false positives przy wykrywaniu włamań, które mieli przy użytkownikach korzystających z tradycyjnych exit node[2]. Będzie zatem o własnej stronie w sieci Tor.

Tor logoŹródło: https://media.torproject.org/image/official-images/2011-tor-logo-flat.svg

Tak czy inaczej, wygląda, że Tor został dostrzeżony przez dużych w z właściwej perspektywy, czyli po prostu jako medium transmisji, a nie odrębna sieć, używana przez złoczyńców[3]. Myślę, że można spodziewać się kolejnych naśladowców.

Warto zauważyć, że to co zrobił Facebook to nie jest typowy hidden service w sieci Tor. W typowym chodzi o ukrycie tożsamości właściciela, miejsca hostowania itp. Czyli masa pracy poświęcona uszczelnianiu systemu i serwera WWW, która nie jest przedmiotem tego wpisu. Na stronie projektu Tor też się tym nie zajmują, ale zainteresowani znajdą tam ogólne wskazówki. Tu przeciwnie – wszystko jest dostępne, a tożsamość jest potwierdzona certyfikatem SSL, czyli wersja znacznie łatwiejsza w wykonaniu.

I właśnie takim przypadkiem zajmę się w tym wpisie. Całość opisana jest dokładnie na stronie projektu Tor. Widzę jednak, że pojawiają się pytania jak to zrobić, więc zamieszczę wersję skróconą i uproszczoną. Tak naprawdę całość sprowadza się do dwóch linii w pliku konfiguracyjnym. Zakładam, że Tor jest już skonfigurowany jako relay node lub bridge node. I nawet nie do napisania, tylko do odhashowania/edycji.

Przede wszystkim w pliku konfiguracyjnym[4] szukamy sekcji dotyczącej hidden services, zaczynającej się od linii:

############### This section is just for location-hidden services ###

Następnie odhashowujemy/edytujemy dwie linie:

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 IP_SERWERA_WWW:80

Pierwsza musi wskazywać na katalog, który musi mieć prawa odczytu i zapisu dla użytkownika na którym działa demon Tor. W Debianie wystarczy odhashować.

Druga to wskazanie który port chcemy przekierowywać i na jaki adres oraz port. IPv4 działa na pewno, IPv6 nie udało mi się skłonić do działania. Jedyna zmiana, czy też wymóg konfiguracji po stronie serwera WWW, jest taki, że musi on pozwalać na dostęp do zasobów po IP, bez podania domeny (vhosta)[5].

Następnie należy zrestartować demona Tor i… gotowe. Pozostało jeszcze tylko sprawdzić, jaki adres ma nasz hidden service:

cat /var/lib/tor/hidden_service/hostname

Potem można już tylko zweryfikować działania serwisu za pośrednictwem adresu .onion. Jeśli nie mamy pod ręką normalnego dostępu do Tora, można posiłkować się bramką Tor2web.

[1] I całe szczęście, bo przypominam, że Tor nie szyfruje użycie Tora nie oznacza automatycznie szyfrowania danych. Co więcej, każdy węzeł, ma możliwość przechwycenia całej (co prawda zaszyfrowanej) transmisji. A exit node, jest w stanie podsłuchać nieszyfrowaną transmisję do końcowego hosta.

[2] Więcej w tym wpisie (ANG).

[3] Nie ukrywajmy, typowy użytkownik Tora kojarzył się do tej pory z nielegalnymi działaniami.

[4] W Debianie jest to /etc/tor/torrc, pewnie w Ubuntu i innych pochodnych jest analogicznie.

[5] Tu uwaga dla chcących stawiać bramki hidden service – z punktu widzenia zewnętrznego serwisu (i tylko jego, i tylko w przypadku połączeń poprzez adres .onion) mój klient Tor IP jest teraz exit node! W przypadku nadużyć za pośrednictwem sieci Tor i adresu .onion może się to skończyć wizytą policji. W przypadku serwisów, których nie jesteśmy właścicielami bezwzględnie należy mieć zgodę właściciela serwisu.

Wolność słowa w Chinach – możesz pomóc.

Jak można się było spodziewać, chińskie władze wzięły się za tor, czyli usługę anonimizującą pozwalającą na ominięcie państwowego firewalla, a tym samym na obejście cenzury i na dostęp między innymi do nieprawomyślnych – bo nie zatwierdzonych przez władze – informacji. W chwili obecnej blokowanych jest ok. 80% węzłów tora. Każdy może, w prosty i nie wymagający wielkich środków sposób, pomóc w walce z chińską cenzurą – poniżej przepis.

Na wstępie zaznaczę, że węzły tora dzielą się na kilka typów, z czego dwa nie grożą niczym nieciekawym osobom, które je prowadzą. Sprawdziłem to empirycznie prowadząc węzeł pośredniczący przez 4 miesiące przy konfiguracji opisanej w mini konfiguracji tora. Aby pomóc Chińczykom wymagana jest inna konfiguracja, ale także ona nie pozwala na nawiązywanie połączeń bezpośrednich, więc nie ma najmniejszych obaw, że ktoś coś zrobi nawiązując połączenie z naszego adresu IP i będziemy ciągani po sądach. Przy okazji – węzeł działa na słabym łączu 1024/256 kbit i słabym sprzęcie (PII 266 MHz, 64 MB RAM). Nie zauważyłem spowolnienia działania sieci czy odczuwalnego zwiększenia zużycia zasobów.

Aby pomóc Chińczykom musimy utworzyć tak zwany bridge-node, czyli węzeł mostkowy (brr, brzydkie tłumaczenie). Działa on tak, że przyjmuje połączenia przychodzące, a następnie przekazuje je do kolejnych węzłów (tylko i wyłącznie do kolejnych węzłów, nigdy bezpośrednio do celu). Jest o tyle pożyteczny, że nie jest widoczny na liście serwerów tora, a dane o nim są udostępniane zainteresowanym dopiero po wysłaniu maila na specjalny adres (dla zainteresowanych dokładny opis procedury uzyskiwania informacji o bridge-nodes.

Do rzeczy. Cała konfiguracja dla bridge-node składa się z 4 linii:

SocksPort 0ORPort 443               # port na którym nasłuchujemyBridgeRelay 1            # włączenie trybu bridge-nodeExitpolicy reject *:*    # blokada bezpośrednich połączeń wychodzących

Ja polecam – szczególnie posiadaczom słabszych łącz – na dodanie ograniczenia prędkości przesyłanych danych:

RelayBandwidthRate 20 KBytesRelayBandwidthBurst 30 KBytes

Trzeba też pamiętać o tym, by port na którym nasłuchujemy był dostępny z zewnątrz (publiczne IP lub przekierowanie na routerze). Zaleca się używanie popularnych portów (80, 443, itp.) – trudniej będzie je wychwycić i zablokować. Polecam też przeczytanie mojego poprzedniego wpisu na temat tora. Dotyczy co prawda innej konfiguracji, ale jest opisana część opcji.

Źródła: artykuł na heise-online, blog projektu tor, opis bridge-nodes na stronie projektu.

UPDATE: Tor posiada wersje dla większości systemów operacyjnych: OS X, Windows oraz Linuksa. tu możesz pobrać tora, a tu, dla wymagających tu więcej opcji. Jeśli chodzi o Linuksa, to zapewne znajduje się w repozytorium pakietów, z którego korzystasz.

UPDATE2: Nieco przydługi, ale ciekawy opis konfiguracji przekaźnika tora (dead link). Chyba głównie dla Windows przydatne – jakieś klikania opisane. 😉