Permalink

0

PI Project: TOR Relay (out of date)

Een paar weken geleden besloot ik na een post van Dimitri Tokmetzis een Raspberry Pi te kopen. Vooral om mijn inner nerd te pleasen en om, zoals de post van Tokmetzis al zegt, wat meer van computers te leren. Al snel kwam ik allerlei coole projecten tegen vooral op gevorderd niveau.

Klein beginnen dan maar! Als groot voorstander van internetvrijheid en tegenstander van censuur kom je al snel in aanraking met TOR. Het TOR project zorgt er voor dat je anoniem kunt internetten en internetcensuur kunt doorbreken.  Door je door een willekeurige route van computers (relays) te leiden is je IP en locatie in de meeste gevallen ontraceerbaar (of je moet natuurlijk inloggen op Facebook ofzoiets, dan is je identiteit uiteraard bekend). Bovendien kun je websites die op je geografische locatie geblokkeerd zijn vaak nu ineens wel bereiken. Kortom een mooi project om te ondersteunen.

tor

Je kunt uiteraard geld doneren aan het project maar je kunt zelf ook wat doen. Je kunt thuis een relay draaien op je eigen computer of op een Raspberry PI. Ik besloot dat laatste te doen zodat hij altijd aan staat en alleen TOR draait (dedicated is). Door een relay te draaien thuis draag je bij aan het netwerk en maak je het moeilijker voor overheden of andere kwaadwillende om identiteiten te achterhalen. Immers hoe meer schakels het netwerk telt hoe meer routes je internetverkeer kan nemen.

Je moet bij het opzetten van je relay wel onderscheid maken tussen een exit relay en een non-exit relay. Een exit relay is een relay waar het internetverkeer wat over het TOR netwerk gaat uit het netwerk komt (exit). Je kunt hier problemen mee krijgen als iemand illegale praktijken uitvoert en het bij jou thuis het internet op gaat. In Nederland is het draaien van een exit-relay niet illegaal. Ook het verkeer dat er uit komt kan je (nog) niet aangerekend worden (WET). Maar je hebt soms wel wat uit te leggen, als er bijvoorbeeld kinderporno via jouw IP wordt gedownload. In andere landen is dit verkeer je wel aan te rekenen.  Onderstaande tutorial is voor het gemak voor het opzetten van een NON-EXIT Relay je bent dus een tussenschakel en geen exit-schakel.

Wat heb je nodig:
– Raspberry PI
– Ethernetkabel
– Stroomkabel Raspberry PI
– 4GB SD-kaart
– Cardreader voor je SD-kaart
– Toetsenbord
– Muis
– HDMI-kabel
– Monitor (met HDMI aansluiting, tv kan ook)
– Behuizing voor je Raspberry (optioneel)

Noot: Na installatie van tor heeft je Raspberry geen scherm, toetsenbord en muis meer nodig. Je kunt hem direct in je router/switch inpluggen en van stroom voorzien de rest gaat vanzelf.

1. Installeren Raspbian
Allereerst gaan we een besturingsysteem op de SD-kaart zetten. De ontwikkelaars van de Raspberry Pi hebben het erg gemakkelijk gemaakt. Download HIER de laatste versie van Noobs. Unzip het gedownloade bestand en verplaats de uitgepakte bestanden naar de SD-kaart.

Klik de SD-kaart met Noobs in de Raspberry PI en sluit hem aan (dus power, keyboard, muis, ethernet en HDMI). Er verschijnt na korte tijd een scherm waar je het gewenste besturingsysteem kunt kiezen. Wij kiezen voor Raspbian (de bovenste). Selecteer Raspbian en klik op ok. Het instalatieproces duurt ongeveer 20 min.

2. Pas het wachtwoord van de standaard account aan
Nadat Raspbian geïnstalleerd is reboot het systeem en krijg je een startscherm waar je een aantal basisinstellingen van je PI kunt wijzigen . Pas hier in ieder geval het wachtwoord van de standaard account aan. Beweeg met de pijltoetsen naar change password en druk op enter, je kunt nu het wachtwoord aanpassen. De overige instellingen kun je met rust laten. Beweeg met de pijltoetsen naar finish en druk op Enter. Het systeem start nu voor het eerst echt op.

3. Update het besturingssysteem
Log in met de username pi en het wachtwoord dat je in de stap hierboven hebt gekozen. Vervolgens updaten we het besturingssysteem, dit zorgt er voor dat we later ook niet in de problemen komen. Je update het systeem door de volgende commando’s (achtereenvolgend) in te voeren in de terminal:

sudo apt-get update

sudo apt-get upgrade

Wacht dus even tot het update commando is afgerond alvorens je het het upgrade commando invoert.

4. Maak een user aan die tor heet en geef hem specifieke rechten.
We willen vanwege veiligheidsredenen niet dat TOR gedraaid wordt door de hoofdgebruiker (Pi). TOR draait standaard op een gebruiker die tor heet, maar die heeft de Raspberry nog niet. We maken die heel simpel aan door het volgende commando in de terminal in te typen:

sudo adduser tor

Bedenk een veilig wachtwoord voor de account en voer dat twee maal achtereenvolgens in. Vervolgens komen er een aantal nutteloze vragen druk hierbij gewoon een aantal maal op enter. We willen dat deze account wel programma’s als sudo’er kan uitvoeren, maar wel altijd om een wachtwoord vraagt (het stukje veiligheid) . Hiervoor moeten we de user tor toevoegen aan het document met sudo’ers (admins). Dit doen we door het volgende commando in te voeren in de terminal:

sudo nano /etc/sudoers

Dit commando opent het tekstbestand sudoers in de standaard teksteditor van Raspbian. We scrollen d.m.v. de pijltoetsen helemaal naar onderen en voegen als laatste regel toe:

tor ALL=(ALL) ALL

Vervolgens drukken we Ctrl X in om te saven en drukken om y om dat te bevestigen en vervolgens op enter om de locatie van het bestand te bevestigen.

5. Geef je Pi een vast IP adres
Hiervoor moet je in de instellingen van je router zijn. Ik ga hier geen uitgebreide uitleg geven over hoe dit te doen. Dit is bij iedere router weer net anders. Kijk even rond op internet naar een handleiding. Als je eenmaal bent ingelogd op je router is een vaak een sectie die static of static ip heet. Je kunt hier per Mac adres een vast IP geven. Zorg dus dat je je Raspberry pi een vast IP adres geeft wat nog niet in gebruik is en wat je makkelijk kunt onthouden. Log nog niet uit op de router! Voor de volgende stap moeten we ook in de router zijn.

6. Zet poort 9001 en 9030 open richting je Raspberry PI
Hoewel er goede argumenten zijn om andere poorten te gebruiken gebruiken wij in deze tutorial de standaardpoorten voor een TOR relay: 9001 en 9030. Wederom is dit een instelling in de router en verschillen de handelingen per router. Er is een optie in vrijwel elke router die port forwarding of gewoon forwarding heet. Je kunt hier bepaald webverkeer door de firewall heen laten naar een IP adres op je lokale netwerk. We willen TCP traffic dat aanklopt op port 9001 en 9030 van je publieke ip dus doorsturen naar poort 9001 en 9030 van het lokale IP adres van je Raspberry PI.

7. OPTIE: Werken via SSH
Zit je net als ik met de Raspberry PI voor de TV (vanwege de HDMI aansluiting)? Met een toetsenbord in de hand net voor de bank, kabel net te kort… Dan is werken via SSH een uitkomst. Je kunt via SSH (Secure Shell) versleuteld verbinding maken met je Raspberry Pi via je thuisnetwerk. Je kunt dus op je eigen computer je Raspberry bedienen terwijl de Raspberry alleen maar stroom en internet nodig heeft. Je kunt de rest van de tutorial overigens ook gewoon in de huidige opstelling uitvoeren, maar omdat je Raspberry straks waarschijnlijk in de meterkast aangesloten gaat worden is dit best handig. (hoef je niet iedere keer met een toetsenbord en monitor naar de meterkast) Lijkt het je handig? Doe dan het volgende: Sluit je Raspberry eerst netjes af door het volgende commando in de terminal in te voeren:

sudo halt -h

Je raspberry sluit nu af. Wacht tot hij netjes is afgelosten alvorens je de stroom ontkoppelt. Plaats de Raspberry nu op de plek waar je de TOR relay wilt draaien. In mijn geval in de meterkast vlak naast de router. Sluit de ethernet- en stoomkabel weer aan en loop richting je computer.

MAC: Werk je op een MAC? Mooi! Hier zit het SSH al ingebouwd. Je opent in dit geval de terminal app op je MAC en typt vervolgens:

ssh tor@192.168.XX.XX
(je vervangt hier het IP adres door het door jou gekozen vaste IP adres van je pi)

In dit commando staat tor voor de gebruikersnaam. Je wilt dus als tor inloggen op 192.168.XX.XX. Voer vervolgens je wachtwoord in en klaar is kees. Je kunt werken alsof je op je pi zit. (de eerste keer moet je nog wel een RSA signature ‘herkennen’ je kunt hier gewoon yes invullen en op enter drukken)

WINDOWS: Iets ingewikkelder dan MAC. Je moet eerst een stukje gratis software downloaden genaamd Putty. Je kunt de software HIER downloaden.

Vervolgens werkt het vergelijkbaar. Onder Session > selecteer je SSH. Typ bij IP het IP in van je Raspberry en druk op enter. Typ vervolgens je gebruikersnaam en wachtwoord in.

8.Instaleer TOR
Eindelijk het is zo ver! We kunnen TOR gaan installeren. Je zit op dit moment of nog voor je TV of werkt via SSH en zit lekker achter je computer.  Voer het volgende in in je terminal:

sudo apt-get install tor

De Raspberry download dan het TOR programma van internet. De pi vraagt je nog wel of hij een paar kb aan ruimte mag gebruiken op de SD-kaart voor het programma. Uiteraard reageren we hier met yes door y te typen en op enter te drukken.

9. Configureer TOR
Het programma TOR staat nu op je Raspberry maar weet nog niet wat hij moet doen. Je moet hiervoor een configuratiebestand aanpassen. Je doet dat door het volgende commando in te voeren in je terminal:

sudo nano /etc/tor/torrc

Je krijgt nu een tekstdocument te zien met allerlei opties. Belangrijk om te weten is dat je Raspberry regels met een # teken ervoor negeert. Dit wordt dus voornamelijk gebruikt om duidelijk te maken wat de opties precies doen of om opties uit te schakelen door er het # teken voor te plaatsen (ze worden dan dus genegeerd).

Wij gaan in het tekstdocument (d.m.v. de pijltoetsen) op zoek naar de volgende regels:
SocksPort 0
Log notice file /var/log/tor/notices.log
RunAsDaemon 1
ORPort 9001
DirPort 9030
ExitPolicy reject *:*
Nickname xxx (you can chose whatever you like)
RelayBandwidthRate 100 KB  # Throttle traffic to 100KB/s (800Kbps)
RelayBandwidthBurst 200 KB # But allow bursts up to 200KB/s (1600Kbps)

We nemen nu een voor een door wat deze regels betekenen en waarom we ze precies aanzetten of aanpassen. Sommige van bovenstaande opties moet je uncommenten, (het # teken weghalen voor de optie) sommige moet je aanpassen. Kijk hier goed naar!

SocksPort 0: 
Door de SocksPort naar 0 te veranderen zeg je tegen TOR dat je vanaf je Raspberry geen gebruikt wilt maken van TOR, lees niet gaat surfen over het TOR netwerk via je Rapsberry. Na aanpassing ziet dit stukje er zo uit:

## Tor opens a socks proxy on port 9050 by default -- eve ...
## configure one below. Set "SocksPort 0" if you plan to r...
## as a relay, and not make any local application connect ...
SocksPort 0 # Default: Bind to localhost:9050 for local co...
#SocksPort 192.168.0.1:9100 # Bind to this address:port to...

Log notice file:
Dit verteld TOR waar je je notices wilt loggen. Na aanpassing ziet het betreffende stukje er zo uit:

## Send all messages of level 'notice' or higher to @LOCA ...
Log notice file /log/tor/notices.log
## Send every possible message to @LOCALSTATEDIR@/log/tor/...
#Log debug file @LOCALSTATEDIR@/log/tor/debug.log
## Use the system log instead of Tor's logfiles
#Log notice syslog
## To send all messages to stderr:
#Log debug stderr

RunAsDaemon 1:
Dit zorgt ervoor dat TOR opstart als je je Raspberry aanzet zonder dat je iets moet invoeren. Wel zo makkelijk! Na aanpassing ziet het stukje er zo uit.

## Uncomment this to start the process in the background...
## --runasdaemon 1 on the command line. This is ignored ...
## see the FAQ entry if you want Tor to run as an NT ser...
RunAsDaemon 1

ORPort 9001:
De OR port is de port voor inkomend verkeer van het TOR Netwerk. Na aanpassing ziet het stukje er zo uit:

## Required: what port to advertise for incoming Tor co...
ORPort 9001
## If you want to listen on a port other than the one a...
## ORPort (e.g. to advertise 443 but bind to 9090), you...
## follows.  You'll need to do ipchains or other port f...
## yourself to make this work.
#ORPort 443 NoListen
#ORPort 127.0.0.1:9090 NoAdvertise

DirPort 9030:
Het TORnetwerk heeft deze poort nodig om te communiceren met de relay. Na aanpassing ziet het stukje er zo uit:

## Uncomment this to mirror directory information for ...
## if you have enough bandwidth.
DirPort 9030 # what port to advertise for directory c...
## If you want to listen on a port other than the one...
## DirPort (e.g. to advertise 80 but bind to 9091), y...
## follows.  below too. You'll need to do ipchains or...
## forwarding yourself to make this work.
#DirPort 80 NoListen
#DirPort 127.0.0.1:9091 NoAdvertise
## Uncomment to return an arbitrary blob of html on ...
## can explain what Tor is if anybody wonders why you...
## contacting them. See contrib/tor-exit-notice.html ...
## distribution for a sample.
#DirPortFrontPage @CONFDIR@/tor-exit-notice.html

Exitpolicy reject *:*:
Een hele belangrijke! Eerder heb ik het verschil tussen een exit en een non-exit relay uitgelegd. Door deze optie in te schakelen vertellen we TOR dat we GEEN exitrelay willen zijn. Na aanpassing ziet het stuk er zo uit:

#ExitPolicy accept *:6660-6667,reject *:* # allow ir...
#ExitPolicy accept *:119 # accept nntp as well as de...
ExitPolicy reject *:* # no exits allowed

Nickname:
Hier kun je een naam invoeren van je Relay. Verzin wat leuks! Na aanpassing ziet het stuk er zo uit:

## A handle for your relay, so people don't have to ...
Nickname HIERJOUWNAAM

Relaybandwidthrate en Relaybandwidthburst:
Dit is de snelheid die je doneert aan het netwerk. De snelheid die de relay regulier gebruikt, dus niet op de pieken heet Relaybandwidthrate en op de pieken betreft het de Relaybandwidthburst. Om te bepalen wat je wil doneren kun je het beste eerst kijken wat je internetsnelheid precies is. Je kunt dit doen op de website http://www.speedtest.net. De snelheid op deze site wordt uitgedrukt in Mbps. De snelheid die je instelt is kb/s. Je moet dus eerst omrekenen om een inschatting te kunnen maken. Meer info over de snelheden vind je hier.  De formule is als volgt. Mbps x 1000 = Kbps en vervolgens Kbps / 8 = kb/s. Laten we dit vertolken met een voorbeeld.

Ik heb een internetsnelheid van 25 Mbps (zowel upload als download) De berekening is dan als volgt:

25 x 1000 = 25000
25000 / 8 = 3125 kb/s

Als je de standaardsnelheid doneert (100 kb/s) heb je dus voor eigengebruik in dit voorbeeld nog 3025 kb/s over voor je eigen downloads of Netflix. Bepaal aan de hand van zo’n berekening wat je wilt doneren. Mocht je merken dat je internet langzamer wordt nadat je te veel hebt gedoneerd kun je dit later altijd nog aanpassen.

Het stukje ziet er na aanpassing zo uit:

## Define these to limit how much relayed traffic you w...
## own traffic is still unthrottled. Note that RelayBan...
## be at least 20 KB.
## Note that units for these config options are bytes p...
## per second, and that prefixes are binary prefixes, i...
RelayBandwidthRate 100 KB  # Throttle traffic to 100KB...
RelayBandwidthBurst 200 KB # But allow bursts up to 20...

Nadat je alle aanpassingen in de torrc file hebt gemaakt druk je wederom om Ctrl x om te saven, op y om dat te bevestigen en op enter om de locatie te bevestigen.  We zijn nu bijna klaar! Je kunt nog veel meer dingen instellen in dit document hier behandelen we alleen de basis.

Tor moet de aanpassingen nog wel even doorvoeren en daarom moeten we het programma opnieuw opstarten. We doen dit door het volgende in te voeren in de terminal:

sudo /etc/init.d/tor restart

Gefeliciteerd! Je eigen Tor Relay draait! We moeten nu alleen nog kijken of hij goed functioneert. Laat hem eerst een halfuurtje draaien en voer dan het volgende in in de terminal.

less /var/log/tor/log

Hiermee open je het log van Tor. Ga opzoek naar de volgende zinnen:
– “Tor has successfully opend a circuit. Looks like client functionality is working.”
– ” Self-testing indicates your ORPort is reachable from the outside. Excellent. Publisching server descriptor.”
– ” Self-testing indicates your DirPort is reachable from the outside. Excellent.”

Als deze zinnen (na 30 min) in het log staan werkt je relay naar behoren! Gefeliciteerd! Je kunt je relay tevens na een uurtje opzoeken op Globe en Atlas. Ieder uur ververst Tor deze database (in het geval van mijn relay duurde het om een duistere reden meer dan een dag voordat hij verscheen) en verschijnen de nieuwe relays in de database. Je kunt gewoon zoeken op de naam die je hebt ingesteld in de torrc file.

Belangrijk is dat je af en toe je server update. Dit om belangrijke beveiligingsupdates te installeren. Je logt dan via SSH weer in op je server en geeft wederom de sudo apt-get update en sudo apt-get upgrade commands. Ik doe dit in ieder geval één keer per maand.

Extra: Server monitoring
Een leuke extra om te installeren op je server is de tool ARM. Dit tooltje laat je server visualiseren. Het screenshot hieronder geeft je een idee.

screenshot_page1_full

Foto: https://www.atagar.com/arm/screenshots.php

Voer om deze tool te installeren het volgende command in in de terminal:

sudo apt install tor-arm

Wederom vraagt Raspbian of hij dit mag installeren en of het programma wat geheugen mag gebruiken op de SD-kaart.  Reageer hier met yes door y te typen en op enter te drukken. Om na installatie de tool te starten gebruik je het volgende commando:

sudo -u debian-tor arm

Alvast bedankt voor je bijdrage aan het vrije internet!

Bronnen:
http://www.instructables.com/id/Raspberry-Pi-Tor-relay/?ALLSTEPS
http://www.devconsole.info/?p=879
http://raspberrypihelp.net/tutorials/43-raspberry-pi-tor-server
http://readwrite.com/2014/04/09/raspberry-pi-projects-ssh-remote-desktop-static-ip-tutorial#awesm=~oHt6ZNCfyofCiA
https://www.torproject.org

 

Geef een reactie

Verplichte velden zijn gemarkeerd met een *.