Coraz częściej słyszy się o problemie prywatności w sieci. Temat ten nabiera na znaczeniu, gdyż już bardzo istotna część naszego życia wiąże się bezpośrednio z korzystaniem z Internetu, a nowoczesne algorytmy pozwalają korporacjom sprawnie analizować i przewidywać nasze zachowania. Jednym ze sposobów na ukrycie przed osobami postronnymi tego, co robimy w sieci jest wykorzystanie protokołu TOR (The Onion Router). Nazwa nie jest przypadkowa i dobrze obrazuje sposób działania tego protokołu. Bazuje on na tzw. trasowaniu cebulowym, a więc na wielokrotnym szyfrowaniu ruchu w taki sposób, by zmylić ewentualnych „podsłuchujących”. Na sieć TOR składa się szereg routerów – najczęściej komputerów, które altruistycznie nastawieni użytkownicy udostępniają, by inni mogli swobodnie korzystać z protokołu. Poszczególne routery szyfrują i deszyfrują przenoszone przez siebie pakiety w taki sposób, że osobie postronnej bardzo trudno odgadnąć, skąd i dokąd przesyłane są dane. I o ile TOR nie jest nie do rozgryzienia, to aby prześledzić trasę pakietów trzeba poświęcić dosyć duże środki, w związku z czym w większości przypadków staje się to zwyczajnie nieopłacalne dla ewentualnego „szpiega”.
Skoro zastosowanie protokołu TOR praktycznie nic nie kosztuje, a próba jego pokonania jest dosyć droga, to dlaczego nie wszyscy z niego korzystają? Są dwa podstawowe problemy. Po pierwsze TOR znacznie spowalnia działanie sieci – szczególnie tych szybkich. Przesyłanie pakietów przez wiele routerów wydłuża ich trasę, znacząco zwiększając pingi i istotnie zmniejszając przepustowość. Drugą trudnością jest instalacja TORa. O ile na komputerze PC nie jest to bardzo skomplikowane, to jednak nie każdy będzie skłonny modyfikować ustawienia systemowe, aby przekierowywać ruch przez TORa. Dotyczy to szczególnie użytkowników mało zaawansowanych, dla których przestawianie się pomiędzy normalną, szybką siecią, a TORem będzie po prostu zbyt skomplikowane. W końcu nie na każdym urządzeniu da się zainstalować odpowiednie oprogramowanie. Czasem użytkownik chcący skorzystać z TORa nie ma uprawnień administratora do komputera, którego używa, a czasem na daną platformę nie ma gotowych aplikacji, które w prosty sposób mogłyby wymusić komunikację „cebulową”. Warto przy okazji wspomnieć, że dotyczy to m.in. zdecydowanej większości urządzeń IoT, które mają jedynie proste interfejsy komunikacyjne i zbyt małą moc obliczeniową (oraz pamięć) by zajmować się złożonym szyfrowaniem.
Rozwiązaniem drugiego z tych problemów jest wykorzystanie routera sieci TOR, który automatycznie kieruje cały ruch poprzez serwery rozmieszczone w różnych miejscach świata. Na rynku znaleźć można gotowe routery tego typu w cenie od ok. 60 do 120 USD, różniące się między sobą szczegółami. Jednakże praktycznie taki sam, a ponadto wyposażony w Wi-Fi, możemy samodzielnie wykonać w kilkanaście minut, wykorzystując do tego, choćby stary Raspberry Pi. Kompletny projekt tego typu został opublikowany w serwisie Hackaday.io przez użytkownika o loginie Thomas (https://goo.gl/VZs1fF), który wykorzystał narzędzia opracowane przez firmę Adafruit. My publikujemy spolszczoną i zaktualizowaną wersję tego projektu, odtworzoną na Raspberry PI 1 Model B+, ale z najnowszym oprogramowaniem Raspbian Jessie Lite.
Podzespoły
Do wykonania własnego Raspberry TOR Routera nie trzeba wiele. Wystarczy stary Raspberry Pi, 4-gigabajtowa karta pamięci SD, zasilacz USB z kablem microUSB i bezprzewodowa karta sieciowa. W naszym przypadku wykorzystaliśmy niedrogą (wartą ok. 4 USD) kartę 802.11n 150 Mb/s z interfejsem USB 2.0, opartą na chipsecie Realtek RTL8188. Potrzebny jest też przewód do podłączenia Raspberry Pi do sieci przewodowej. Karty Wi-Fi nie należy początkowo podłączać do urządzenia.
Przygotowanie Raspberry TOR Routera można podzielić na trzy etapy. Pierwszy to zapisanie obrazu Raspbiana na kartę pamięci i konfiguracja systemu. Konieczne jest rozszerzenie partycji do maksimum, choć aktualna wersja Raspbiana, którą pobraliśmy (Jessie Lite 2017-04-10) sama wykonała tę operację po pierwszym uruchomieniu systemu. Sensowne będzie też zmienienie hasła (w końcu chcemy uzyskać bezpieczny router sieciowy). Można również ustawić komputer, by automatycznie logował się na konto użytkownika po uruchomieniu (Boot Options –> Console Autologin) i skonfigurować dane związane z lokalizacją: strefę czasową, rodzaj klawiatury, język i sposób prezentacji niektórych informacji. Dzięki temu będzie wygodniej wprowadzało się wszelkie kolejne polecenia. Można też zmniejszyć ilość pamięci przydzielonej na kartę graficzną, gdyż ta w ogóle nie będzie wykorzystywana, poza prezentacją treści w trybie tekstowym. Wystarczy ustawić „Memory Split” w dziale „Advanced Options” na 16 MB.
Na koniec dobrze będzie zaktualizować oprogramowanie. W tym celu należy wykonać kolejno polecenia:
sudo apt-get update
sudo apt-get upgrade
Router Wi-Fi
Drugim krokiem będzie instalacja sterowników do karty sieciowej Wi-Fi i przełączenie jej w tryb pracy punktu dostępowego. Można w tym celu skorzystać z gotowego skryptu, który automatyzuje bardzo wiele ustawień. Można go pobrać poleceniem wget https://cdn.hackaday.io/files/4223180676832/pifi.sh. My przygotowaliśmy jego spolszczoną, zaktualizowaną wersję pod adresem <XXXXXXXXXXXX>. Po pobraniu pliku należy nadać mu uprawnienia do wykonywania chmod +x pifi.sh i można go uruchomić sudo ./pifi.sh. Skrypt zapyta kolejno o kilka parametrów i przygotuje pliki konfiguracyjne. Gdy zakończy pracę komputer się sam zrestartuje, po czym należy go bezpiecznie wyłączyć. W tym celu warto użyć polecenia sudo shutdown –a now
Dopiero wtedy należy podpiąć kartę Wi-Fi do złącza USB i włączyć zasilanie. Po ponownym uruchomieniu, w okolicy pojawi się widoczna nowa sieć bezprzewodowa o nazwie SSID takiej, jaka została podana w trakcie konfiguracji.
Co robi skrypt pifi.sh? Główna część przygotowanej przez nas polskiej wersji została umieszczona na listingu 1. Skrypt kolejno aktualizuje informacje o dostępnych pakietach, po czym instaluje dwa programy. Hostapd, który odpowiada właśnie za pracę karty sieciowej jako bezprzewodowego punktu dostępowego oraz isc-dhcp-server, który po prostu jest serwerem DHCP. Dzięki temu punkt dostępowy może automatycznie przydzielać adresy IP poszczególnym podłączanym urządzeniom.
Kolejne linijki odpowiadają za konfigurację serwera DHCP. Będzie on rozdawał IP w zakresie od 192.168.42.10 do 192.168.42.50. Sam punkt dostępowy przyjmuje adres 192.168.42.1 i będzie podawać się za bramkę sieci bezprzewodowej. Serwery DNS zostały ustawione na googlowe 8.8.8.8 i 8.8.4.4, dzięki czemu całość będzie działać w prawie dowolnym miejscu na świecie (pewnie za wyjątkiem Chin). Po tych operacjach rekonfigurowane są interfejsy sieciowe, aż w końcu serwer pyta o nazwę i hasło tworzonego hot spotu.
Kolejny krok to konfiguracja programu hostapd. Jak widać, wykorzystywany sterownik nie odpowiada bezpośrednio temu, który mamy w naszej karcie sieciowej, ale to nie szkodzi gdyż w praktyce ustawienia te działały z kilkoma kartami, jakie podłączyliśmy. Następne kilka liniej odpowiada za wymuszenie uruchamiania programu hotspotu zaraz po włączeniu systemu oraz za konfigurację firewalla, tak by odpowiednio kierował ruchem. Wykorzystywany jest do tego popularny program iptables. Gdy ta operacja się zakończy, skrypt pobiera spakowane dane zaktualizowanego programu hostapd z serwera Adafruit, dzięki czemu mamy pewność, że będzie on poprawnie działał z Raspberry Pi. Po instalacji skrypt restartuje usługi i sprawdza, czy się uruchomiły. Jeśli wszystko jest ok, włącza ich uruchamianie przy starcie i restartuje komputer.
Po pomyślnym restarcie należy uruchomić drugi skrypt. Można go pobrać za pomocą komendy wget https://cdn.hackaday.io/files/4223180676832/tor.sh, a uruchomić nadając odpowiednie uprawnienia chmod +x tor.sh i wykonując sudo ./tor.sh.
Skrócona, polska wersja drugiego skryptu została zamieszczona na listingu 2. Skrypt kolejno pobiera i instaluje oprogramowanie TOR, po czym je konfiguruje. Wprowadza przy tym ustawienia zgodne z określonymi w trakcie pracy pierwszego ze skryptów. Następne kroki dotyczą ustawień firewalla. Warto zauważyć, że wyjątkowo traktowany jest port 22, który pozwoli zdalnie rekonfigurować Raspberry Pi przez SSH. Konfigurowane jest też rejestrowanie zdarzeń w logach i automatyczne uruchamianie TORa, po czym system jest restartowany.
Z naszego doświadczenia wynika, że potrzeba kilku minut od uruchomienia routera do momentu, aż zacznie on w sprawnie przekazywać ruch przez sieć TOR. Niemniej wszelkie podłączone komputery były widziane, jakby przeglądały Internet zza TORa. Można to sprawdzić na kilka sposobów. Pierwszy to wejście na stronę https://check.torproject.org. Rezultat podczas korzystania z przygotowanego przez nas hotspotu widać na rysunku. Można też pokusić się o przetestowanie szybkości łącza. W naszym przypadku serwis Speedtest.net uznał, że łączymy się z Wielkiej Brytanii (rysunek 7), a uzyskane wyniki pomiarów (rysunek 8) zaprezentowano nam z francuskojęzycznymi reklamami.
Marcin Karbowniczek, EP