Door netwerkverkeer te versleutelen win je al veel aan privacy. Maar je IP-adres is nog steeds gewoon zichtbaar. Wil je ook dat verbergen en dus anoniem het internet op, dan heb je Tor nodig. In dit artikel doen we dat op basis van Raspberry Pi.  

Serge Gielkens

Om te surfen via Tor heb je de Tor Browser nodig. Maar om alle verkeer via Tor te laten lopen, zoals chatberichten, is een Tor proxy handiger. Die staat tussen je computer en je router in, en vangt alle netwerkpakketten af. Dat nu doet de Onion Pi. Op je laptop, tablet of mobiel hoef je verder niets meer te regelen.

Tor proxy.

De Onion Pi is geen kant-en-klaar image, maar je knoopt zelf enkele componenten aan elkaar. Een leuk project voor de komende winterdagen dus. In dit voorbeeld kiezen we 192.168.99.0/24 als draadloos netwerk voor de Onion Pi. Pas dit zo nodig aan voor je eigen situatie.

Voorbereiding

Download via de site van Raspberry Pi de Lite versie van Raspberry Pi OS. Zet dit met bijvoorbeeld Etcher op het microSD-kaartje. Navigeer vervolgens in de file browser naar de boot partitie van het kaartje en plaats daar een leeg bestandje met de naam ssh. Hierdoor is SSH direct vanaf de eerste start beschikbaar. Unmount de partitie en steek het kaartje in de Raspberry Pi. Verbind het bordje door een ethernetkabel met je router. Het is handig om een scherm en toetsenbord aan te koppelen. Zo dadelijk pas je namelijk de netwerkconfiguratie aan. Mocht daardoor iets misgaan, dan heb je nog altijd toegang via de console.

Start de Raspberry Pi op en log in als gebruiker pi met het wachtwoord raspberry. Straks geef je toegang tot de Raspberry Pi via zijn access point. Stel dus meteen een sterk wachtwoord in met het commando passwd. De Raspberry Pi hanteert als tijdzone Europe/London. Daardoor loop je een uur achter. Pas dit aan via de menugestuurde configuratie. Tik daartoe sudo raspi-config in, ga naar Localisation Options -> Change Timezone en verander London in Amsterdam.

Statische wifi

De Onion Pi fungeert zelf als router met DHCP-server. Daarom is voor wifi een statisch IP-adres nodig. Hiervoor kiezen we 192.168.99.1. Voeg de volgende regels toe aan /etc/dhcpcd.conf:

interface wlan0
static ip_address=192.168.99.1/24
nohook wpa_supplicant

De DHCP-client roept wpa_supplicant aan om verbinding te maken met een access point. Dat willen we nu juist niet, omdat de Onion Pi zelf een access point wordt. Daarvoor dient bovenstaande nohook optie. Doordat wpa_supplicant nu geen rol meer speelt, blokkeert Raspberry Pi OS wel wifi. Bevrijd hem als volgt:

sudo rfkill unblock wlan

Let op, niet wlan0 intikken!

DHCP-server

Voor het toekennen van IP-adressen via wlan0 kiezen we dnsmasq. Die heeft namelijk weinig nodig om als DHCP-server te dienen:

sudo apt-get install dnsmasq

Plaats in /etc/dnsmasq.d een bestandje, bijvoorbeeld mijn_dhcp.conf, met de volgende inhoud:

interface=wlan0
dhcp-range=192.168.99.2,192.168.99.254

Dnsmasq vertelt automatisch aan clients de default route (192.168.99.1), het netwerkmasker (255.255.255.0) en de DNS-server (192.168.99.1). Die laatste functie neemt Tor op zich.

Tor

Tijd dus om de Tor-server te installeren:

sudo apt-get install tor

In het configuratiebestand /etc/tor/torrc zijn alle opties uitgecommentarieerd. Voeg helemaal aan het eind deze regels toe:

VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 192.168.99.1:9040
DNSPort 192.168.99.1:53

Hierdoor is Tor actief als DNS-server voor het draadloos netwerk. De eerste twee opties vertalen Tor-specifieke .onion domeinnamen in een gewoon IP-adres. Zo blijven je applicaties werken zonder dat ze iets hoeven te weten van het Tor-protocol. De server luistert op poort 9040 voor het Tor-verkeer. Dan moeten we wel zorgen dat alle netwerkverkeer hiernaartoe omgeleid wordt. Dat doe je met een firewall.

IP-verkeer regelen

Om klaar te zijn voor de toekomst gebruiken we hiervoor nftables, de opvolger van iptables:

sudo apt-get install nftables

Voeg vervolgens in /etc/nftables.conf aan het eind het volgende toe:

table ip nat {
    chain prerouting {
        type nat hook prerouting priority -100;
        iifname wlan0 tcp dport 22 redirect to 22
        iifname wlan0 udp dport 53 redirect to 53
        iifname wlan0 meta l4proto tcp ct state new redirect to 9040
    }
}

De laatste redirect leidt alle netwerkpakketten op wlan0 om naar Tor. UDP staat er niet bij, omdat het Tor-netwerk dit niet ondersteunt. Zo’n redirect sluist het verkeer door naar de lokale pc, in dit geval de Onion Pi. Daarom hoef je geen doel IP-adres op te geven.

Om toch nog via SSH toegang tot de Pi te hebben dient de eerste redirect. De tweede doet dat voor DNS. Dat is weliswaar UDP-verkeer, maar is bedoeld voor de ingebouwde DNS-server van Tor. Alleen die kan met .onion domeinnamen overweg. Verder voorkomt deze redirect dat applicaties stiekem toch nog externe DNS-servers benaderen. Dat zou alsnog je anonimiteit schaden. Activeer tot slot de firewall bij de eerstvolgende boot:

sudo systemctl enable nftables

Eigen access point

Installeer tenslotte het pakket hostapd:

sudo apt-get install hostapd

Maak een bestand aan in /etc/hostapd, bijvoorbeeld mijn_ap.conf:

interface=wlan0
country_code=NL
hw_mode=g
ssid=onionpi
channel=6
wpa=2
wpa_passphrase=mijn_wachtwoord
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP

Pas indien nodig de landcode aan. Dit maakt van je Pi een 2,4 GHz access point met 54 Mbit/s (bekend als 802.11g). Bij deze frequentie heb je in Nederland 13 kanalen. Normaal gesproken heb je het beste signaal bij kanaal 1, 6 of 11. Verwijs naar dit bestand in /etc/default/hostapd:

DAEMON_CONF=“/etc/hostapd/mijn_ap.conf”

Om te voorkomen dat hostapd opstart, is die door system gemaskeerd. Verander dat als volgt:

sudo systemctl unmask hostapd

Moment suprême

Firefox blokkeert mogelijk DNS queries voor onion sites. Ga daarom in de adresbalk naar about:config. Type vervolgens in het zoekveld network.dns.blockDotOnion en zet deze optie op false. In geval van Chromium hoef je niets te doen. Ga dan met je browser naar:

https://check.torproject.org/

Die stelt nu vast dat je geen Tor gebruikt. Let ook op het getoonde IP-adres. Dat is van je internetprovider. Open een tweede tabblad en ga daar naar de onion site van het Tor-project: http://expyuzz4wqqyqhjn.onion/

Onion site.

Dat mislukt, omdat onion sites niet via het reguliere internet te benaderen zijn . Herstart nu de Raspberry:

sudo systemctl reboot

Als de Onion Pi weer online is, zoek je op je laptop naar het draadloos netwerk onionpi. Die naam heb je hierboven in de configuratie van hostapd bij ssid bepaald. Maak verbinding en log in met mijn_wachtwoord zoals ingesteld bij wpa_passphrase. Ververs nu in je browser het eerste tabblad. Een groene ui verschijnt en tevens verandert het IP-adres in eentje van het Tor-netwerk. Nu browse je anoniem. Ga weer naar het tweede tabblad en ververs dat ook. Nu zie je wel de onion site van het Tor-project.