Onion Router na Raspberry Pi
Jan 15, 2017 · 5 minute read · CommentsWszechobecna 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
- Raspberry Pi
- Karta wifi na USB. Użyta przeze mnie to TP-Link TL-WN321G, ale może być dowolna wspierana przez linuksa.
- karta microsd z wgranym Raspbianem
- przewodowe połączenie z internetem
Przygotowania
Po wgraniu Raspbiana na kartę pamiętajmy o:
- aktywowaniu ssh (w nowych dystrybucjach jest nieaktywne)
- wyłączeniu gui - nie będzie nam potrzebne
- stabilnym zasilaniu
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.
- 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.
- 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.
- 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:
- Proponuję nigdy nie łączyć się przez Tor z własnego łącza ani z komputera używanego na codzień.
- Zalecam używanie przeglądarek z wyłączonymi opcjami śledzenia, javascript itp.
- Pochwalam korzystanie z systemów operacyjnych utrudniających inwigilację i infiltrację, np. Linux.