Privacy in je thuisnetwerk: Pi Hole en Pi VPN

Het gebruiken van een simpel apparaat voor je eigen diensten geeft je een stap meer in controle over je eigen surf identiteit en privacy wanneer je thuis gebruik maak van je Internet verbinding. Of wanneer je buitenhuis gebruik maak van een openbare Wifi (of 4G) en je wilt toch even je saldo checken in je bankier app. In dat soort gevallen maak ik eerst een VPN verbinding met het thuis netwerk (en in sommige gevallen verbind ik via Tor met bepaalde services, maar dat gaat net weer een stapje verder dan de scope van dit artikel). Met een VPN weet je dat er minder snel meegekeken kan worden in je verbinding met je bank of iets dergelijks.

Mede daarom maak ik daarbij ook gebruik van blockers ingebouwd in mn browsers (Brave) en een Pi Hole voor het blokkeren van naamresolutie naar bekende malware, advertentie en statistieken sites (bijvoorbeeld Facebook wordt in huize Veelvoor de DNS sinkhole in gestuurd). Voor nog meer privacy heeft Brave ook een Tor browser ingebouwd, ook zeer aan te raden. Het fijne is dat wanneer ik via VPN verbind met het thuisnetwerk, deze blokkades ook actief zijn voor mijn mobiele sessies.

Komt mijn mobiel op 4G (of welke G dan ook), wordt de VPN automagisch opgestart. Als ik dan weer binnen in mijn eigen WiFi netwerk kom, dan is de VPN niet meer nodig en wordt deze uitgeschakeld.

Informatie footprint

Je laat veel digitale informatie achter bij organisatie waar je diensten mee hebt, of waarvan je gebruik maakt. Je doet een google zoek opdracht en je gegevens worden opgeslagen, Netflix weet wat je kijkt met welk apparaat, Windows/Apple houden genoeg telemetrie van je bij, als je bitcoin transacties opzoekt in de openbare memspace brouwer worden er zeker ook gegevens opgeslagen (gebruik daarvoor dus je eigen node! De Mempool en btcexplorer zitten meegebakken in Umbrel en MynodeBTC) enzoverder. Soms ontkom je er niet aan, en dan is het een beloning risico afweging die je moet maken. Wat is het risico van mijn gegevens opvoeren en een deel van mijn crypto’s bij een partij weg zetten zodat daar als een beloning rente voor ontvangen wordt. Of je maakt gebruik van een “gratis” mailservices in ruil voor je gegevens. “When the product is freeYOU are the product” is hier een goede leefregel. En het is eigenlijk your data, maar goed dat snap je zelf ook wel met dit onderwerp. Wil ik betalen met mijn data om te zien hoe mijn (zogenaamde) vrienden een (iets) te rooskleurig leven hebben op Facebook en dergelijke? Nou eigenlijk niet.

DNS lookups

Voor de apparaten die een verbinding met andere apparaten maken hebben we DNS naamresolutie nodig. In het kort een systeem voor het omzetten van IP adressen naar namen en vice versa. Normaal heb je die in je netwerk zitten op de router van de Internet boer. Alleen die zal niet zo maar adressen uitfilteren. Om bepaalde verkeersstromen al bij de bron (je eigen apparaat of netwerk) op te laten houden, maken we gebruik van Pi Hole. Pi Hole is een DNS server die gebruik maakt van blacklist om bepaalde namen niet om te zetten naar IP adressen, en dus effectief geen verkeersstroom daar naar toe laat (een zogenaamde DNS sinkhole). We maken van de Pi Hole ook een recursive DNS server die rechtstreeks bij de DNS servers de verzoeken doen. Je passeert hier mee onder andere je eigen provider (die wellicht een goede maar over het algemeen een slechte DNS server heeft) en upstream DNS services van bijvoorbeeld Google, Cloudflare etc. Je zoekopdrachten worden hier dan niet achtergelaten. 

Hiervoor gebruiken we unbound en stellen we Pi – Hole in om de DNS queries naar een specifieke poort te sturen van de Pi. Die unbound service zal bij elke DNS aanvraag, deze rechtstreeks doorsturen naar het juiste DNS servers. Deze DNS wordt ook gebruikt bij VPN’s. Dus bij het mobiel zijn en het gebruik van de thuis VPN maak ik gebruik van deze constructie en niet van de provider van dienst.

VPN

Een virtual private network is een beveiligingsmechanisme om een beveiligde tunnel verbinding te maken van je client naar een doeldienst (server of netwerk). In eerste instantie om je verkeersstrook te beveiligen zodat er niet zomaar meegeluisterd kan worden. Een andere toepassing is om je voor te doen alsof je op een andere lokatie bent (om content te streamen die lokatie gebonden is, of je van het regime waar je je bevindt te beveiliigen). Het voordoen of je op een andere lokatie bent zal met een Pi VPN maar een lokatie zijn, je thuis. Als de tweede reden het belangrijkste is, en je meerdere locaties moet kunnen kiezen, dan zijn andere VPN oplossingen een beter idee. Voor mij geldt de eerste voor mijn thuisnetwerk.

Raspberry Pi

Om niet te veel ruimte en energie te gebruiken maak ik gebruik van een aantal Raspberry pi’s. Erg handige apparaatjes. Ik heb op de Pi’s Bitcoin en Lightning nodes, home automation en een Pi-Hole/Pi VPN. Aangezien het functies zijn die 24×7 beschikbaar moeten zijn, is het prettig als deze apparaten weinig stroom gebruiken, ook niet al te veel ruimte innemen en het liefst ook geen herrie maken (dat zijn de redenen waarom ik jaren geleden mn thuis lab de deur uit heb gedaan). Een Pi-Hole en Pi VPN zijn niet heel resource intensief, dus een Pi Zero W of een minimale configuratie van een Raspberry Pi 4 zijn voldoende.

Is het in elkaar zetten van een Raspberry Pi toch een stap te ver. Je kan veel services in een VPS of dienst af nemen, en deze goed beveiligen met 2FA/Yubikey, tunnels of andere vormen van veiligheid. Je laat dan wel je gegevens achter bij een leverancier. De eerder genoemde diensten zijn echter onderdelen die je vanuit je huis moet kunnen doen. Ja, je kan ook je Bitcoin node in een VPS draaien, echter is het onderteken van een transactie met je hardware key net een stap te ver naar buiten. Dat doe je liever wat dichterbij, of in dit geval in je huis.

Poort forwarding

Voor de Pi VPN icm Wireguard (trouwens ook met OpenVPN) moet er een poort (in geval van WireGuard poort 51900) van de buitenkant van je verbinding naar je Raspberry Pi met Pi VPN worden doorgezet. Dat doe je op je internet router of firewall (apart, danwel geïntegreerd in je Internet router). Meestal is dat onder de security of firewall onderwerpen, en je zet dan het buitenadres voor poort UDP naar je interne raspberry pi adres voor hetzelfde poort. Je moet daarvoor op je router inloggen (afhankelijk van je router, iets van 192.168.1.1 of .254), en hoe dit werkt verschilt per merk. 

Dynamische DNS

Bij een normaal particulier Internet abonnement wijzigt je “buiten” IP adres met regelmaat. Bij de ene provider gebeurt dit vaker dan een andere provider. Om dan nog steeds met je thuis netwerk te kunnen communiceren, maak ik gebruik van een dynamische DNS die mijn buitenadres koppelt aan een dns naam van mijn eigen domein. Er zijn wederom hier verschillende aanbieders, die gratis dan wel betaald zijn (ik gebruik al een tijdje freeDNS van afraid.org). Kijk goed welke aanbieders werken met bijvoorbeeld je internet router en die je zelf prettig vindt om te beheren. Alternatief voor je router is om ddclient te installeren op je raspberry pi, maar eigenlijk vind ik het de taak van je router om dat te updaten (aangezien het je WAN adres betreft).

Volgorde van installatie

Regel een Raspberry PI (een 4 of een Zero) en zet deze in elkaar. Dit kan een Zero W zijn of een gewone pi voor een kabel verbinding (laatste is aan te raden als je Wifi niet heel stabiel is). Neem ook een officiële adapter en regel heatsinks (eventueel een fan, afhankelijk waar je het dingetje neerzet/hang). De verdere stappen:

  • Flash de SD Card met een image (bijvoorbeeld met een lage fotoprint: DietPi)
  • Stop de SD card in de Raspberry PI, sluit deze aan en start het dingetje.
  • Update het OS
  • Maak gebruik van een vast intern IP of zorg voor een DHCP reservering (kan ook als onderdeel van de Pi Hole en Pi VPN installatie)
  • Installeer Pi-Hole (curl -sSL https://install.pi-hole.net | bash)
  • Stel je interne DHCP reeks in voor het gebruik van DNS server (op je router of andere DHCP server).
  • Installeer unbound (sudo apt install unbound en je Pi Hole instellen hier)
  • Configureer je Pi-Hole om je eigen recursive DNS queries te doen (in de Pi hole configuratie).
  • Voeg lijsten toe aan Pi-Hole (https://blocklistproject.github.io/ heeft goede lijsten. Daarnaast https://dbl.oisd.nl.).
  • Installeer Pi-VPN (curl -L https://install.pivpn.io | bash of via dietpi-software). Kies tussen WireGuard of OpenVPN (ikzelf gebruik WireGuard). In deze installatie volgorde kan je Pi VPN gebruik laten maken van je Pi Hole installatie.
  • Stel port forwarding in naar je Pi VPN.
  • Maak profielen voor je apparaten
  • Installeer VPN applicatie op apparaten (bijvoorbeeld WireGuard)
  • Configureer je mobiele apparaten (scan van QR code)
  • Testen van de verbinding.

Andere zaken waar je in gebruik nog aan kan denken:

  • Yubikey voor 2MFA/MFA en bijvoorbeeld SSH toegang.
  • Een wachtwoord manager, unieke wachtwoord en geen hergebruik tussen sites. Verder geen wachtwoord opslaan in de browser. Hetzelfde geldt voor betaalgegevens, niet in je browser opslaan.
  • Virtuele prepaid creditkaart, liefst een die je kan opladen met Lightning (bijvoorbeeld Spendl, hier heb je wel een KyC trouwens).
  • Eigen Bitcoin en lightning node voor verificatie en eigen betalingen routeren (Don’t trust, verify). Ik gebruik een node al meerdere jaren, en doe regelmatig betalingen via Bitrefill voor Bol.com, Amazon.nl en Coolblue aankopen. 
  • Je locatie niet opslaan, en wanneer nodig gewoon handmatig invullen wanneer je in een beveiligde omgeving zit.

Conclusie

Voor een paar tientjes en wat commando’s invoeren heb je een eigen Pi-Hole en Pi VPN in je netwerk. Simpel, laag energie verbruik en minder data verbruik. Voor de prijs van veiligheid. Is toch de ideale deal? Nou ja een paar tientjes voor een Raspberry Pi en wellicht een uurtje van je tijd. Ik ga weer eens verder kijken naar een mooi Raspberry Pi project 😉

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *