Onion Router na Raspberry Pi

Wszechobecna inwigilacja, czytanie poczty, afery jak nie podsłuchowe, to podglądowe itp. itd. skłaniają do zastanowienia się na ile jesteśmy anonimowi nie tylko w sieci, ale i w tzw. “realu”.

Wyniki takich refleksji zawsze mnie przerażają i chociaż nie zostawiam swoich “kaczych dziobów” i innych “sweetfoci” wszędzie gdzie się da, to i tak mam świadomość, że anonimowość to raczej pobożne życzenie, a nie coś co można osiągnąć.

Niemniej spróbujmy…

Cel

Naszym celem w tym artykule będzie zbudowanie anionimizującego routera wifi na Raspberry Pi. Połączymy się z nim bezprzewodowo, a nasze surfowanie przepuszczone będzie przez sieć Tor, która mniej lub bardziej ukryje naszą tożsamość.

Oto zestaw niezbędnego sprzętu

Przygotowania

Po wgraniu Raspbiana na kartę pamiętajmy o:

Instalacja oprogramowania

Pierwsze kroki to zaktualizowanie listy pakietów, następnie aktualizacja systemu do najnowszej wersji, w końcu instalacja odpowiedniego oprogramowania.

sudo aptitude update
sudo aptitude upgrade
sudo aptitude install hostapd isc-dhcp-server tor

Konfiguracja oprogramowania

AccessPoint

Zacznijmy od routera wifi. Dodam tylko, że musimy przyjąć pewne założenia na potrzeby tego artykułu.

  1. Sieć lokalna w której pracujemy to 192.168.0.x, czyli komputery tu pracujące mają adresy np. takie adresy ip: 192.168.0.5, 192.168.0.129 itp.
  2. Sieć, którą stworzymy dzięki routerowi Onion Pi będzie działała w podsieci 192.168.6.x, czyli komputery działające w sieci Tor będą miały adresy np. 192.168.6.8, 192.168.6.210 itp.
  3. Jeśli nie wymieniono inaczej wszystkie działania wykonujemy na Raspberry Pi, po zalogowaniu przez ssh.

Jeśli ktoś ma potrzebę zmienić te założenia, musi dokonać zmian w plikach konfiguracyjnych, analogicznie do konfiguracji podanych poniżej.

Najpierw edytujemy plik /etc/dhcp/dhcpd.conf. Znajdujemy poniższe linie i zakomentowywujemy je:

#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

Następnie usuwamy znak komentarza z linii z wpisem:

authorative;

Na końcu tego pliku dodajemy wpis:

subnet 192.168.6.0 netmask 255.255.255.0 {
  range 192.168.6.10 192.168.6.50;
  option broadcast-address 192.168.6.255;
  option routers 192.168.6.1;
  default-lease-time 600;
  max-lease-time 7200;
  option domain-name "local";
  option domain-name-servers 8.8.8.8, 8.8.8.4;
}

Poleceniem sudo ifconfig należy zidentyfikować nazwę karty wifi. W moim przypadku było to wlan0.

W pliku /etc/default/isc-dhcp-server wprowadzamy zmianę:

INTERFACES="wlan0"

Powyższe wpisy konfigurują serwer DHCP na Raspberry Pi dla klasy adresów 192.168.6.x na interfejsie wlan0.

W tym momencie wypada skonfigurować zachowanie poszczególnych interfejsów. Edytujemy plik /etc/network/interfaces by wyglądał tak:

auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.6.1
    netmask 255.255.255.0

Następnie uruchamiamy interfejs:

ifdown wlan0
ifup wlan0

Przyszedł czas na skonfigurowanie pakietu hostapd. W pliku /etc/hostapd/hostapd.conf wstawiamy następujące wpisy:

interface=wlan0
driver=nl80211
ssid=OnionRouterPi
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=<hasło-nie-mniej-niż-8-znaków>
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Tym wpisem określamy interfejs naszego AccessPointa, driver (w moim przypadku był to nl80211), nazwę sieci, kanał i hasło.

Aby konfiguracja zadziałała należy do pliku /etc/default/hostapd dodać na końcu linię:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Pozostaje uruchomić serwery dhcp i apd:

service hostapd start
service isc-dhcp-server start

A następnie dodać je do usług uruchamianych przy starcie Raspberry Pi:

update-rc.d hostapd enable
update-rc.d isc-dhcp-server enable

Routing przez sieć Tor

Pierwszym krokiem jest włączenie przekazywania pakietów - w pliku /etc/sysctl.conf szukamy wpisu: net.ipv4.ip_forward. Jeśli jest zakomentowany to należy go odkomentować i upewnić się, że wygląda tak:

net.ipv4.ip_forward=1

Jeśli go nie ma, to na końcu pliku należy go dodać w postaci jak wyżej.

Następnie poleceniem sudo sysctl -p aktywujemy zmiany.

Teraz ustalimy reguły przekazywania pakietów:

sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 22 -j REDIRECT --to-ports 22
sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040
sudo iptables-save > ~/iptables.ipv4.nat
sudo cp ~/iptables.ipv4.nat /etc

A w pliku /etc/network/interfaces na końcu dodajemy jedną pustą linię, a po niej:

ip iptables-restore /etc/iptables.ipv4.nat

Przystępujemy do konfiguracji Tor’a. W pliku /etc/tor/torrc na końcu dodajemy wpisy:

Log notice file /var/log/tor/notices.log
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.6.1
DNSPort 53
DNSListenAddress 192.168.6.1

Po czym tworzymy odpowiednie pliki logów (jak w konfiguracji powyżej):

sudo touch /var/log/tor/notices.log
sudo chown debian-tor /var/log/tor/notices.log
sudo chmod 644 /var/log/tor/notices.log

Uruchamiamy tora poleceniem:

```bash
service tor start

A następnie dodajemy je do autostartu:

update-rc.d tor enable

Efekt

Po wykonaniu sumiennie wszystkich tych kroków w naszym zasięgu powinna pojawić się sieć o nazwie OnionRouterPi. Po połączeniu z nią komputer powinien dostać adres ip z klasy 192.168.6.x. Połączenie przez tą sieć będzie się odbywało przez sieć Tor, co można sprawdzić pod tym adresem.

Uwagi końcowe

Jeśli coś nie działa, należy uważnie sprawdzić wpisywane dane i czytać komunikaty z Raspberry Pi.

Jeśli już zadziała, to należy pamiętać, że połączenia przez Tor nie są w 100% anonimizujące - owszem ułatwiają ukrycie działań, ale zdeterminowane organa mogą dotrzeć do każdego delikwenta.

Jeśli potrzebujemy większej anonimowości to:

  1. Proponuję nigdy nie łączyć się przez Tor z własnego łącza ani z komputera używanego na codzień.
  2. Zalecam używanie przeglądarek z wyłączonymi opcjami śledzenia, javascript itp.
  3. Pochwalam korzystanie z systemów operacyjnych utrudniających inwigilację i infiltrację, np. Linux.

Przydatne linki

comments powered by Disqus