OPNsense VPN-server opzetten en configureren
Als je buitenshuis toegang tot je thuisnetwerk wilt, kan dat op een veilige manier met een vpn-server. Het routerbesturingssysteem OPNsense maakt het heel gemakkelijk om zo’n vpn-server op je router te draaien. In dit artikel gaan we in op alle mogelijkheden. Een OPNsense VPN-server opzetten doe je als volgt.
Eerder vertelden we je hoe je met OPNsense een veilige firewall en router voor je thuisnetwerk instelt. Hier bouwen we daarop voort en installeren we een vpn-server op de OPNsense-machine. We gaan er hier dus van uit dat je OPNsense op je router hebt draaien. Voor de installatie en configuratie daarvan verwijzen we je door naar het volgende artikel:
Firewall op router installeren met open-source OPNsense
Vpn staat voor ‘virtual private network’ en het is een versleutelde verbinding via internet tussen twee locaties. Dat kan bijvoorbeeld tussen een hoofdkantoor en een agentschap van een bedrijf zijn, of tussen je smartphone en je thuisnetwerk. Dankzij dit virtuele netwerk lijkt het voor de verbonden toestellen of de verschillende locaties op één lokaal netwerk verbonden zijn. Op de achtergrond gebeurt de communicatie via internet, via een versleutelde tunnel, zodat alle verzonden informatie privé blijft.
In dit artikel gaan we niet in op het verbinden van meerdere kantoren, maar focussen we ons op het verbinden van mobiele toestellen zoals een smartphone of laptop met je thuisnetwerk. Op die manier heb je dus op een veilige manier toegang tot je domoticasysteem thuis of de gedeelde bestanden op je nas. En als je je OPNsense-router als gateway opgeeft voor het virtuele netwerk, kun je ook nog eens vanaf elke plek internetten via je internetverbinding thuis. Ideaal om regioblokkades te omzeilen als je in het buitenland bent.
Er bestaan diverse technologieën om een vpn op te zetten. OPNsense ondersteunt standaard IPsec en OpenVPN. In deze workshop gebruiken we Open VPN, dat ook weleens als SSL VPN omschreven wordt. Er bestaan OpenVPN-clients voor alle mogelijke besturingssystemen en de configuratie is vrij eenvoudig. Daarnaast ondersteunt OPNsense via plug-ins tinc, ZeroTier en WireGuard.
Dat zijn zeker interessante opties om te bekijken, maar nog niet zo breed ondersteund. Tevens zijn er plug-ins voor L2TP en PPTP, maar die worden ondertussen als onveilig beschouwd.
Certificaatautoriteit en servercertificaat aanmaken
Als vpn-server draaien we OpenVPN, dat voor zijn beveiliging net zoals ssl met certificaten werkt. De certificaten van clients en servers dienen ondertekend te worden door een certificaatautoriteit (CA), die zich daardoor in feite borg stelt voor het certificaat: als gebruiker vertrouw je alle certificaten die door de CA ondertekend zijn.
Om websites met https te kunnen bezoeken (waarvoor onderliggend ook ssl gebruikt wordt), bevatten alle besturingssystemen een lijst met ‘betrouwbare’ CA’s. Alle servercertificaten die door die CA’s ondertekend zijn, worden door je browser automatisch vertrouwd. Maar als je zelf je eigen vpn-server gaat opzetten en certificaten voor de clients gaat aanmaken, zijn die natuurlijk niet ondertekend door de standaard CA’s.
©PXimport
We gaan daarom in OPNsense onze eigen CA aanmaken waarmee we onze certificaten ondertekenen. Daarvoor ga je links in de webinterface van OPNsense naar System / Trust / Authorities (zie bovenstaande afbeelding) en klik je rechtsboven op Add. Bij Method kies je voor Create an internal Certificate Authority.
Vul daarna alle gegevens in. Geef je CA een naam (bijvoorbeeld OpenVPN CA). Verhoog de standaard sleutellengte (Key length) gerust van 2048 bits naar het veiligere 4096 bits en het Digest Algorithm van SHA256 naar het veiliger SHA512. Standaard is je CA-certificaat een jaar geldig. Klik tot slot onderaan op Save om het CA-certificaat op te slaan.
Dan kunnen we nu een certificaat voor de vpn-server aanmaken. Ga daarvoor naar System / Trust / Certificates en klik rechtsboven weer op Add. Kies Create an internal Certificate en vul alle gegevens in, met bijvoorbeeld als beschrijvende naam OpenVPN-servercertificaat.
Je ziet dat er bij Certificate authority je hiervoor aangemaakte OpenVPN CA ingevuld staat. Daarmee verzekeren we dat ons certificaat door de CA ondertekend wordt. Zet zeker het type certificaat op Server Certificate en kies gerust weer een veiligere Key length en Digest Algorithm. Vul bij Common Name hetzelfde in als de beschrijvende naam en klik tot slot onderaan op Save.
Gebruikers aanmaken
Nu gaan we voor iedereen die toegang nodig heeft tot ons vpn een gebruiker aanmaken. Dat doe je door in System / Access / Users rechtsboven op Add te klikken. Vul een gebruikersnaam, twee keer hetzelfde wachtwoord en een volledige naam in. Zet onderaan bij Certificate een vinkje bij Click to create a user certificate. Klik dan op Save.
Je krijgt nu de vraag om een certificaat voor de gebruiker aan te maken. Kies weer Create an internal Certificate, verander eventueel weer de Key length en Digest Algorithm en laat al de rest op de standaardwaarden staan. Het type certificaat moet Client Certificate zijn en als certificaatautoriteit moet er je hiervoor aangemaakte OpenVPN CA staan. Ook dit certificaat is weer standaard een jaar geldig, daarna moet je het vernieuwen.
©PXimport
Klik onderaan op Save om het certificaat aan te maken, waarna je weer op de pagina om de gebruiker aan te maken terechtkomt. Klik hier onderaan op Save and go back om de nieuwe gebruiker op te slaan.
OpenVPN-server instellen
Dan komen we nu op het punt dat we de OpenVPN-server kunnen inschakelen. Klik links op VPN / OpenVPN / Servers en dan rechtsboven op Add. Je ziet hier een hele lijst velden om in te vullen en opties om aan te vinken, maar de meeste kun je op hun standaardwaarde laten staan. We lopen langs de opties die je dient te veranderen en die speciale aandacht vereisen.
Vul een beschrijving van je vpn-server in en kies bij Server Mode voor Remote Access (SSL TLS + User Auth). Bij Backend for authentication kies je voor Local Database. Het protocol laat je op UDP staan en de apparaatmodus op tun. De interface verander je naar WAN en het poortnummer laat je op 1194 staan.
Onder de cryptografische instellingen kies je als servercertificaat je hiervoor aangemaakte OpenVPN-servercertificaat, waarbij je de CA waarmee het certificaat ondertekend is tussen haakjes staat. Kies ook gerust veiliger cryptografische parameters, zoals 4096 bits voor de optie DH Paramters Length, AES-256-CBC voor de optie Encryption algorithm en SHA512 voor de optie Auth Digest Algorithm. Overigens moeten je clients deze parameters wel ondersteunen: mogelijk dien je ze dus uit compatibiliteitsoverwegingen toch wat conservatiever in te stellen.
Onder Tunnel Settings staan de instellingen voor het virtuele netwerk. Bij IPv4 Tunnel Network vul je een privé-adresbereik in dat je aan je vpn wilt toekennen, zoals 10.10.0.0/24. Bij IPv4 Local Network vul je het adresbereik in van je lokale netwerk waartoe je de vpn-clients toegang wilt geven, bijvoorbeeld 192.168.0.0/24. Kies bij Compression voor Enabled with Adaptive Compression. Gebruik je geen IPv6, vink dan Disable IPv6 aan.
Klik onderaan op Save om je vpn-server op te zetten. Daarna draait je OpenVPN-server en het succes daarvan kun je nakijken in VPN / OpenVPN / Log File.
©PXimport
Firewall instellen
Je vpn-server draait nu, maar is nog niet bereikbaar: je dient eerst in de firewall de poort van de OpenVPN-server open te zetten op de wan-interface. Open Firewall / Rules / WAN en klik bovenaan rechts op Add. Kies bij protocol UDP en vul bij Destination port range bij zowel from als to de waarde OpenVPN in. Voeg ook een beschrijving toe, zodat je later nog weet waarvoor deze firewallregel dient. Klik onderaan op Save en dan bovenaan op Apply changes. Als je OPNsense-router nog achter een router van je provider hangt, moet je daar in de instellingen voor portforwarding ook udp-poort 1194 naar je OPNsense-router laten doorsturen.
Daarna dienen de vpn-clients ook nog toegang te krijgen tot het thuisnetwerk op je lan-interface. Klik links op Firewall / Rules / OpenVPN en daarna op Add. Als je je vpn-clients toegang tot alle toestellen op je lokale netwerk wilt geven, hoef je alleen maar bij Source voor Single host or Network te kiezen, dan 10.10.0.0/24 in te vullen, je firewallregel een beschrijving te geven, op te slaan en de wijzigingen toe te passen.
©PXimport
Android-client configureren
Nu de serverkant klaar is, wordt het tijd om de clients te configureren. We tonen je hoe dat werkt op Android. Installeer eerst de app OpenVPN for Android van Arne Schwabe. Voor iOS verloopt het proces vergelijkbaar en dan raden de ontwikkelaars van OPNsense de app OpenVPN Connect aan.
Open op je Android-telefoon (terwijl je met het thuisnetwerk verbonden bent) de webinterface van je OPNsense-router en ga naar VPN / OpenVPN / Client Export. Vul bij de hostname je dynamische dns in en kies bij het exporttype File Only. Klik dan onderaan op het downloadicoontje naast de gebruiker die je gedefinieerd hebt. Open het bestand met de OpenVPN-app en sla het profiel op.
Zorg nu dat je niet met je wifi-thuisnetwerk verbonden bent, open de OpenVPN-app, druk op je profiel en bevestig dat je met de vpn-server wilt verbinden. Geef je gebruikersnaam en wachtwoord in. Als alles goed gaat, ben je nu via je vpn verbonden met je thuisnetwerk en zijn je lokale ip-adressen bereikbaar.