Wybór kraju w sieci Tor

Dawno nie było notki. W sumie to chyba jeszcze nie było tak długiej przerwy między wpisami. Nie dlatego, że nic się nie dzieje, bo się dzieje aż za dużo, ale po pierwsze jakaś blokada przed jakimkolwiek pisaniem (nie tylko na blogu), po drugie, jakiś taki wypompowany z pracy przychodzę, że mi się nie chce już pisać, nawet jak są ciekawe tematy. No to może na przełamanie…

Logo Tor

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

 

Ostatnio jeden z czytelników przysłał maila z pytaniem: czy jest możliwość zmodyfikowania TOR-a tak by zawsze przydzielał polski adres IP? Już zacząłem odpisywać, że byłoby to bez sensu, bo przecież wybór exit node tylko z jednego kraju znacznie zmniejsza poziom anonimowości (nie rozwijając: i łatwiej podsłuchać, i łatwiej namierzyć korzystającego), ale… coś mnie tknęło i zacząłem drążyć temat, bo patrząc na to z drugiej strony, do pewnych usług dostęp może być tylko z pewnych lokalizacji geograficznych.

Podrążyłem i – ku memu niewielkiemu zdziwieniu – okazuje się, że można wybrać kraj, czyli np. użyć sieci Tor do obejścia blokady regionalnej. Co lepsze, można wybrać zarówno konkretny exit node, z którego chcemy korzystać (lub ich zbiór), jak i sam kraj (lub zbiór krajów).

Wybór konkretnego exit nodewygląda następująco:

ExitNodes server1, server2, server3
StrictExitNodes 1

 

Natomiast wybór kraju (lub krajów):

ExitNodes {pl}, {de}
StrictNodes 1

 

Za każdym razem zmiany należy wprowadzić w pliku torrc (pod Debian/Ubuntu: /etc/tor/torrc) i przeładować Tora. Podobno działa, mi na TAILS nie udało się wyedytować konfiga i uruchomić ponownie Tora (ale nie drążyłem specjalnie).

Źródła (i więcej informacji, w tym lista kodów krajów):

  1. wybór serwera w sieci Tor [en]
  2. wybór kraju w sieci Tor, lista kodówkrajów [en]

Orange, wvdial i modem Huawei E1752C

Ponieważ w ramach jednego projektu (hm, na razie nic nie nadaje się do publikacji) klikałem na dwa modemy GSM, to obok mojego Huawei E3131 w laptopie pojawił się pożyczony modem GSM Huawei E1752C z kartą sieci Orange. Dla pamięci i gdyby komuś miało się przydać – konfiguracja dostępu do internetu dla sieci Orange pod Linuksem.

W lsusb Huawei E1752C jest widoczny jako:

new high-speed USB device number 11 using ehci-pci
New USB device found, idVendor=12d1, idProduct=141b
New USB device strings: Mfr=3, Product=2, SerialNumber=4
Product: HUAWEI Mobile
Manufacturer: HUAWEI Technology

w dmesg jako:

Bus 002 Device 011: ID 12d1:141b Huawei Technologies Co., Ltd.

Sam modem działał od kopa (kernel 4.1.0-1-amd64, Debian unstable) i nie wymagał żadnych ingerencji, ale zaznaczam, że trafił do mnie jako używka, więc nie wiem, czy było grzebane.

Szybka przeróbka mojej konfiguracji dla Aero2, w oparciu o oficjalne instrukcje ze strony Orange nie zakończyła się sukcesem. Poszukiwania w sieci naprowadziły mnie na ten artykuł nt. konfiguracji modemu GPRS dla sieci Orange w Debianie. Potwierdzam, działa. Ale IMO trochę przydługie, więc postanowiłem skrócić do wersji mniej więcej minimalnej. Skończyłem z takim konfigiem do wvdial:

[Dialer orange-pin]
Modem = /dev/ttyUSB0
Init1 = ATZ
Init2 = AT+CPIN=1234

[Dialer orange]
Modem = /dev/ttyUSB0
Init3 = AT+CGDCONT=1,"IP","internet"
Username = "internet"
Password = "internet"
Phone = "*99#"
Dial Command = ATDTW
Stupid Mode = yes
Dial Attempts = 0

Najpierw trzeba wywołać wvidal orange-pin, a gdy się zakończy, można połączyć się z siecią przy pomocy wvidal orange. Jak widać, kluczową różnicą było ustawienie parametru Dial Command.

Samo połączenie z Orange można uruchomić na Linuksie prościej, bo na desktopie da się wyklikać konfigurację w network manager. Sprawdzone na Debianie Jessie z kernelem w okolicach 4.0. Ale czasem może przydać się wersja bardziej ręczna, szczególnie jeśli ktoś nie ma GUI w maszynce.

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].

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, ale widzę, ż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 (IPv4 działa na pewno, IPv6 nie udało mi się skłonić do działania) oraz port. 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. 😉