Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord
abonneren

Raspberry Pi als vpn-server met OpenVPN

Raspberry Pi als vpn-server

Inhoudsopgave

  1. > Inleiding
  2. > Lees verder op de volgende pagina
Met een vpn surf je op het internet zonder dat je provider meekijkt of omzeil je regioblokkades van bepaalde websites. Maar een vpn is ook handig om overal veilig toegang te krijgen tot jouw thuisnetwerk. Een Raspberry Pi als vpn-server inzetten is mogelijk te maken met OpenVPN. Zo werkt dat.

Op zich heb je geen vpn nodig om toegang te krijgen tot je thuisnetwerk. Met enkele portforwarding-regels in je router kom je ook wel binnen. Maar portforwarding is niet altijd de beste oplossing. Veel services zijn standaard geconfigureerd voor maximaal gebruiksgemak binnen je thuisnetwerk. Zet je die services open voor het hele internet, dan zijn ze zelden afdoende beveiligd.

Je moet je dus voor elke afzonderlijke service verdiepen in de verschillende beveiligingsmogelijkheden. Dat is best een tijdrovende klus. De kans bestaat dat je dan alsnog zaken over het hoofd ziet. Een vpn is wat dat betreft veel eenvoudiger. Er is één centraal toegangspunt tot je netwerk, namelijk de vpn-server. Als je die afdoende beveiligt, hoef je je over de rest van je netwerk minder zorgen te maken.

Met OpenVPN is een Raspberry Pi in te zetten als vpn-server. Voor je verder leest, kun je hier meer informatie vinden over OpenVPN.

OpenVPN op Raspberry Pi installeren

OpenVPN vereist geen erg krachtige hardware, dus kozen we voor een Raspberry Pi. Download Raspbian Jessie Lite, pak de download uit en schrijf die naar een sd-kaart met Win32DiskImager of dd. Koppel de boot-partitie van de sd-kaart even aan een Linux-systeem en plaats er een leeg bestand genaamd ssh. Boot je Pi vanaf de sd-kaart en controleer in je router welk ip-adres de Pi gekregen heeft. Log nu in via ssh met de gebruiker pi en het wachtwoord raspberry. Het handmatig opzetten van een ca-infrastructuur is behoorlijk complex. Gelukkig levert OpenVPN met easy-rsa een reeks scripts mee om die taak te vereenvoudigen. Installeer om te beginnen openvpn:

apt install openvpn

Gebruik daarna volgend commando om easy-rsa te integreren met OpenVPN:

make-cadir /etc/openvpn/ca

Open nu het bestand /etc/openvpn/ca/vars en vul daarin jouw persoonlijke gegevens in. De meeste opties spreken voor zich. Bij KEY_ORG vul je de naam van jouw organisatie in of gewoon je eigen naam. KEY_OU is de afdeling binnen jouw organisatie (Organisational Unit). Is dat niet van toepassing voor jou, vul dan bijvoorbeeld OpenVPN in. Vervolgens voer je een reeks commando’s uit om de nieuwe configuratie in te lezen, de dh-parameters te berekenen (benodigd voor het uitwisselen van encryptiesleutels tussen client en server) en zowel een ca-certificaat als een certificaat voor de vpn-server aan te maken (zie afbeelding). De tweede stap duurt makkelijk tien tot vijftien minuten op oudere Pi’s. De resulterende bestanden vind je terug in de submap keys.

Raspberry Pi als vpn-server

Servers configureren

Met Raspbians OpenVPN-pakket kun je meerdere vpn’s configureren op dezelfde machine. Je definieert een nieuw vpn door een configuratiebestand aan te maken in /etc/openvpn, bijvoorbeeld home.conf. In de afbeelding zie je een minimaal configuratiebestand voor een OpenVPN-server: we doorlopen de belangrijkste parameters. Met de opties proto en port kies je respectievelijk het protocol en de poort voor OpenVPN. Wij houden de standaardinstellingen aan, maar vaak kiest men voor tcp en poort 443 om firewallrestricties te omzeilen. Bij local vul je het lan-ip-adres van je Pi in en bij server het gewenste netwerkadres voor jouw VPN.

Zorg dat dat niet overlapt met het netwerkadres van de lokale netwerken die jij gebruikt! De volgende vier parameters verwijzen naar de benodigde bestanden van onze ca en met de laatste vier schroeven we de beveiliging nog wat op. Werk je nog met OpenVPN-clients ouder dan versie 2.3.3, dan laat je tls-version-min weg. Het bestand ta.key moet je trouwens nog aanmaken met volgend commando:

openvpn --genkey --secret /etc/openvpn/ta.key

Het is ook een goed idee om de permissies van het configuratiebestand in te perken:

chmod 640 /etc/openvpn/home.conf

Beveiligen

Je kunt OpenVPN verder beveiligen door de service te starten in een zogenoemde chroot-jail onder een speciale gebruiker. OpenVPN heeft dan enkel beperkte toegang tot een klein deel van het bestandssysteem van jouw Pi. Je activeert die beveiliging met de vijf eerste opties in de afbeelding hiernaast. Vergeet ook niet om de gebruiker én de directory eerst aan te maken:

useradd -d /etc/openvpn/chroot -M -s /bin/false openvpn mkdir -p /etc/openvpn/chroot/tmp

Vervolgens stellen we een directory in waar OpenVPN naar een configuratiebestand zoekt voor elke client die een verbinding wilt opzetten. Het pad naar die directory is relatief ten opzichte van de chroot-directory, dus maken we die daarin aan:

mkdir /etc/openvpn/chroot/clients

Zonder configuratiebestand in die directory laat OpenVPN geen verbinding toe (ccd-exclusive). Daarna schakelen we compressie in aan de kant van de server (comp-lzo) én de client (push comp-lzo). Topology subnet zorgt ervoor dat elke client een eigen ip-adres krijgt in hetzelfde subnet: 192.168.200.x in ons voorbeeld.

De optie client-to-client laat verschillende vpn-clients rechtstreeks met elkaar communiceren. Standaard zien ze immers enkel de vpn-server en niet de andere clients. Met de twee laatste regels schakel je iets meer logging in en schrijf je die weg in een apart bestand. Dat is vooral in het begin erg nuttig, als je vpn-verbinding niet meteen werkt.

Clients toevoegen

De OpenVPN-server is nu klaar: tijd om een eerste client toe te voegen. Om te beginnen maak je een private key en certificaat aan voor de client. In de afbeelding zie je een voorbeeld voor een client met hostname linuxmint. In dit geval beveiligen we de private key met een wachtwoordzin (--pass-optie). Verder in dit artikel komen we nog een voorbeeld tegen waarbij je die optie beter weglaat. Vervolgens maak je een configuratiebestand aan met daarin het voor de client gewenste ip-adres in het vpn-subnet. In het voorbeeld hiernaast is dat 192.168.200.2. Daarna zet je de permissies goed en start je de openvpn-service in de voorgrond:

openvpn --config /etc/openvpn/home.conf

Krijg je geen foutmeldingen te zien? Stop openvpn dan met Ctrl-C en open het bestand /etc/default/openvpn. Verwijder het #-teken voor de regel AUTOSTART="all" en voer dan volgende commando’s uit:

systemctl daemon-reload systemctl start openvpn

OpenVPN draait nu als een daemon in de achtergrond en is klaar voor inkomende verbindingen. Je merkt ook dat er een extra netwerkinterface verschenen is met het vpn-adres van je server:

ip addr show tun0

Geschreven door: Filip Vervloesem op

Category: Nieuws

Tags: Privacy, Linux, openvpn, Vpn, Raspberry Pi

Nieuws headlines

donderdag 30 november

donderdag 09 november

Laatste reactie