Jak wykorzystać sieć Tor do połączenia się z Raspberry Pi?

Jak wykorzystać sieć Tor do połączenia się z Raspberry Pi?

Sieć Tor znana jest głównie z tego, że zapewnia anonimowość. Może ona jednak przydać się też fanom RPi, którzy chcieliby mieć stały kontakt ze swoją malinką i to niezależnie od używanej sieci.

Wykorzystamy Tora do połączenia się przez SSH z Raspberry Pi. Całość będzie działała bez stałego IP i bez konieczności przekierowania portów.

Czego nauczysz się z tego poradnika?

Podczas wykonywania tego ćwiczenia dowiesz się jak nawiązać zdalne połączenie SSH z Raspberry Pi, gdy nasze środowisko sieciowe jest znacznie ograniczone. Mowa tutaj np. o zmiennym IP, firewallu, który blokuje zdalne połączenia SSH lub sytuacji, w której nie mamy dostępu do routera i nie możemy skorzystać ze standardowych metod udostępniania zdalnego połączenia.

Użycie anonimowej sieci Tor pozwoli na dostęp do Raspberry Pi "z drugiego końca świata".  Ta metoda zadziała nawet, jeśli korzystamy ze standardowego łącza LTE/4G, które nie pozwala na przekierowanie portów. Wykorzystując adres wygenerowany przez Tor nie będziemy nawet musieli znać IP malinki.

Czym jest sieć Tor?

Tor to skrót od (ang. The Onion Router), a w nazwie i logo projektu nie bez przyczyny widnieje cebula. Mechanizm ten wykorzystuje trasowanie cebulowe, które pozwala na uzyskanie anonimowego ruch sieciowego dzięki użyciu kolejnych warstw szyfrowania (analogicznie do warstwowej budowy cebuli).

Logo projektu Tor

Tor to zdecentralizowana, wirtualna sieć komputerów wewnątrz sieci internet. Sieć działa w oparciu o mechanizmy, które mają zapobiegać analizie ruchu sieciowego. Dzięki temu korzystając z sieci Tor stajemy się praktycznie anonimowi. Wokół tej sieci krąży wiele legend i plotek, ponieważ anonimowość przyciągnęła tam osoby zajmujące się niezbyt legalnymi rzeczami.

Dla nas anonimowość będzie "skutkiem ubocznym". Głównym celem tego ćwiczenia jest wystawienie sobie serwera SSH jako ukrytej usługi sieci Tor. Nic nie stoi na przeszkodzie, aby za pomocą Tora móc udostępniać inne usługi. SSH będzie tutaj po prostu uniwersalnym przykładem.

W skrócie: jak działa sieć Tor?

Zacznijmy od skrótowego omówienia zasad działania tej sieci. Na wstępie należy zaznaczyć, że samo korzystanie z tej sieci jest całkowicie legalne, a jedną z zalet Tora jest to, że pozwala obchodzić zapory sieciowe. W sieci Tor nie ma czegoś takiego jak adres IP, połączenia nawiązuje się za pomocą adresów w typowej dla Tora domenie .onion.

Ulubione warzywo każdego poszukiwacza anonimowości w Internecie

Jedną z wad (i zarazem zalet) Tora jest to, że nasze pakiety są szyfrowane wielokrotnie i przekazywane przez komputery innych osób znajdujących się w tej sieci (nazywanych przekaźnikami), co wydłuża czas przesyłania pakietów i zarazem odpowiedzi serwera. W zamian otrzymujemy jednak anonimowość...

Warto pamiętać, że przesyłanie dużych ilości danych przez tą sieć może zbędnie obciążać komputery innych użytkowników Tora, którzy dobrowolnie zostali przekaźnikami sieci. Dlatego, m.in. istnieje zasada, aby nie używać tam np. klientów torrent.

Więcej informacji na temat Tor znaleźć można na oficjalnej stronie projektu, na Wikipedii oraz tu:

Co będzie potrzebne?

Do wykonania tego ćwiczenia potrzebny jest komputer PC z systemem Windows, dostęp do Internetu, Raspberry Pi, karta pamięci oraz zasilacz. Wszystkie te elementy są częścią zestawów do naszego kursu RPi od podstaw, więc zachęcam do eksperymentowania w praktyce.

Raspberry Pi kurs od podstaw – #1 – spis treści
Raspberry Pi kurs od podstaw – #1 – spis treści

W ciągu kilku ostatnich lat w świecie elektroniki ogromną popularność… Czytaj dalej »

Instalacja Tora na Raspberry Pi

Zaczynamy od połączenia się po SSH z malinką w sieci lokalnej (tak jak robimy to przy normalnej pracy z Raspberry Pi). Następnie instalujemy Tora poniższym poleceniem:

Cała operacja zajmuje 2-3 minuty i przebiega w standardowy sposób:

Instalacja Tora na Raspberry Pi

Konfiguracja Tor na Raspberry Pi

Po krótkiej instalacji przechodzimy do pliku z ustawieniami:

W otwartym pliku szukamy linijek podobny do poniższych:

Pod nimi wklejamy kolejne dwie linijki, które pozwolą na uruchomienie usługi SSH na porcie numer 22. Fragment sshd to wymyślona przez nas nazwa, która nawiązuje do nazwy usługi (SSH):

Plik po zmianach powinien wyglądać następująco:

Po wprowadzeniu zmian zapisujemy plik i wychodzimy z edytora. Jeśli podczas zapisu pliku pojawi się błąd to zapewne nie został on uruchomiony z uprawnieniami administratora (zabrakło sudo).

Jak zdalnie i wygodnie edytować skrypty na Raspberry Pi?
Jak zdalnie i wygodnie edytować skrypty na Raspberry Pi?

Podczas kursu Raspberry Pi wiele razy musieliśmy edytować różne skrypty… Czytaj dalej »

W kolejnym kroku musimy utworzyć katalog, który wpisaliśmy w pliku konfiguracyjnym:

Następnie zmieniamy uprawnienia do pliku oraz jego właściciela:

Bez wykonania tych poleceń nie uda nam się uzyskać później adresu oraz klucza prywatnego, czyli nie uda nam się nawiązać odpowiedniego połączenia.

Uruchomienie usługi Tor na Raspberry Pi

Po tych stosunkowo prostych ustawieniach możemy przejść do uruchomienia usługi w sieci Tor. Tutaj potrzebne będzie polecenie, które załaduje wszystkie informacje z pliku konfiguracyjnego:

Kolejny krok, po restarcie malinki, to ręczne uruchomienie Tora:

Jeśli chcemy, aby Tor startował automatycznie przy uruchomieniu Raspberry Pi to musimy dodać powyższą linijkę na końcu pliku: /etc/rc.local/. W przeciwnym wypadku za każdym razem będzie trzeba uruchamiać Tora ręcznie. Nie trzeba jednak tego robić podczas tego testu.

Jeśli Tor wystartuje poprawnie to zobaczymy odpowiednią informację np. w programie htop. Należy szukać procesu uruchomionego przez użytkownika debian-tor. Może to wyglądać następująco:

Podgląd działającego procesu Tora

Następnie sprawdzamy czy w utworzonym wcześniej katalogu pojawiły się dwa nowe pliki. Jeśli tak będzie, to z pliku hostname możemy od razu odczytać wygenerowany dla nas adres w sieci Tor.

Przykład wywołania powyższych komend:

W katalogu pojawił się również klucz prywatny, którego nie należy nikomu udostępniać. Przykładowa zawartość tego pliku może wyglądać następująco:

W tej chwili najważniejszy jest wygenerowany dla nas "dziwny" adres. Dlaczego adres tak wygląda? Jak już było wcześniej wspomniane, sieć Tor opiera się na kryptografii, czyli między innymi na certyfikatach, kluczach publicznych i prywatnych. Temat ten jest dość obszerny i nie będziemy się nim teraz mocniej zajmować. Najważniejsze, aby zapamiętać, że adres w domenie onion to 16 znakowy skrót naszego klucza publicznego. W związku z tym tylko pozornie otrzymaliśmy losową wartość.

Jeśli taki adres bardzo nam przeszkadza to możemy skorzystać ze specjalnych programów, które generują wiele kluczy i sprawdzają ich skróty. Operację generowania można powtarzać do momentu uzyskania klucza, którego skrót będzie dla nas "ciekawy". Przykładem takiego programu jest Scallion.

Połączenie z Raspberry Pi przez Tor

Raspberry Pi zostało już przygotowane do korzystania z dobrodziejstw sieci Tor. Pora przystosować nasz komputer, który ma się zdalnie połączyć z malinką. Proces ten jest znacznie prostszy, wystarczy pobrać, zainstalować i uruchomić przeglądarkę Tor. Odpowiedni plik pobieramy ze strony projektu.

Przeglądarkę uruchamiamy od razu po instalacji. Prawdopodobnie zobaczymy wtedy poniższe okno ustawień, jeśli nie korzystamy z proxy to klikamy przycisk Connect i czekamy.

Po nawiązaniu połączenia z siecią Tor (co może potrwać ~30 sekund) uruchomi się przeglądarka, która wygląda jak Firefox "na sterydach". Więcej nie musimy przejmować się tym programem - wystarczy, że będzie włączony i zminimalizowany.

Przeglądarka projektu Tor

Jak skongiruować PuTTy do połączenia przez Tor?

Gdy przeglądarka jest aktywna w tle, to uruchomiamy PuTTy. Tym razem, nie będziemy jednak łączyć się z użyciem adresu IP - użyjemy adres w domenie onion. Zanim połączymy się z Raspberry Pi konieczne będzie jednak wpisanie kilku dodatkowych ustawień.

Najpierw przechodzimy do zakładki Connection>Proxy. Tam w ustawieniach wybieramy typ proxy na SOCKS 5, ustawiamy adres (127.0.0.1) i port (9150). Dzięki temu ruch z PuTTy będzie przechodził przez włączonego w tle Tora.

Ustawienie Proxy

Następnie przechodzimy do znanej nam dobrze zakładki Session i w miejsce adresu IP wpisujemy nasz "dziwny" losowy adres z sieci Tor, numer portu pozostaje bez zmian:

Łącznie na podstawie adresu w domenie onion.

Jeśli wszystko zostało poprawnie skonfigurowane to po kliknięciu Open powinniśmy połączyć się z RPi. Połączenie powinno zostać nawiązane po ~15 sekundach opóźnienia, które wynikają z omawianego wcześniej sposobu działania sieci Tor. Warto zauważyć, że podczas logowania do Raspberry Pi zamiast adresu IP zobaczymy wygenerowany adres w domenie onion.

Logowanie na podstawie adresu w domenie onion.

Nasze połączenie z Raspberry Pi powinno teraz działać tak samo, jakbyśmy byli połączeni w normalny sposób (po sieci lokalnej). Jedyną wadą będą widoczne opóźnienia. Aby upewnić się, że łączymy się przez "cebulową sieć" wystarczy zamknąć przeglądarkę pracującą w tle. Nasze połączenie z RPi zostanie natychmiast przerwane.

Przerwanie połączenia z RPi po zamknięciu Tora.

Jak sprawdzić połączenie w praktyce?

Opisane połączenia zadziała, gdy będziemy w tej samej sieci lokalnej co RPi, ale jest to mało ciekawy test. Warto sprawdzić połączenie w bardziej realnym scenariuszu. Wystarczy, aby malinka łączyła się z Internetem przez inną sieć niż nasz komputer.

Ja zdecydowałem się zostawić Raspberry Pi podłączone do normalnego WiFi, ale laptopa połączyłem z Internetem za pomocą hotspotu uruchomionego na telefonie. Normalnie ciężko byłoby uzyskać takie połączenie. Jednak korzystając z Tora obyło się bez najmniejszych problemów. Nie musiałem znać IP Raspberry Pi, obeszło się bez przekierowania portów i dynamicznych DNSów - wystarczył adres onion.

Pozdrowienia od anonimowej krowy

Powyższa "krowa" została wywołana na Raspberry Pi, do którego podłączyłem się z innej sieci przez SSH, dzięki pomocy Tora. Jeśli nie pamiętacie o co chodzi z tą krową(?) to koniecznie sprawdźcie kurs podstaw Raspberry Pi w praktyce:

Kurs Raspberry Pi – #9 – edytory tekstów, konsola
Kurs Raspberry Pi – #9 – edytory tekstów, konsola

Wykonując ćwiczenia z poprzedniej części kursu można przekonać się, że… Czytaj dalej »

Podsumowanie

Za nami krótka przygoda z Torem, która może znacznie ułatwić sytuacje, w których macie utrudniony dostęp do Internetu (np. w pracy lub na uczelni). Oczywiście metod zdalnego łączenia się z RPi bez przekierowywania portów na routerze jest więcej, ale ta wersja jest bardzo ciekawa i wygodna, a do tego potrafi pokonać naprawdę mocne zabezpieczenia jak np. cenzura Internetu, którą narzuca odgórnie dostawca Internetu (np. w Chinach).

Czy artykuł był pomocny? Oceń go:

Średnia ocena / 5. Głosów łącznie:

As you found this post useful...

Follow us on social media!

Autor: Krzysztof (pokrzyw)
Redakcja: Damian (Treker)

Zbuduj nadajnik radiowy FM z Raspberry Pi
Zbuduj nadajnik radiowy FM z Raspberry Pi

Pora na uruchomienie własnego radia FM. Tym razem wykorzystamy GPIO… Czytaj dalej »

linux, raspberrypi, sieć, ssh, tor