Alles wat je wil weten over OpenVPN

De beste manier om te vermijden dat anderen jouw online uitgewisselde informatie kunnen onderscheppen, is met behulp van een versleutelde vpn-verbinding. OpenVPN is een uitstekende toepassing waarmee je precies zo’n vpn-connectie kunt opzetten. Wat OpenVPN precies is, lees je hier.

Lees ook: OpenVPN installeren op Windows, macOS en Linux

En: OpenVPN installeren op je smartphone

OpenVPN is opensource-software die met behulp van vpn-technieken een veilige connectie tussen verschillende apparaten opzet. De software versleutelt de communicatie door middel van een aangepaste versie van het ssl/tls-protocol. OpenVPN is multiplatform en alle verkeer loopt over een enkele udp- of tcp-verbinding. Dat maakt meteen dat het vaak ook probleemloos werkt in lastiger omgevingen zoals netwerken met nat (network address translation)

Wat is een VPN?

Om goed te begrijpen wat OpenVPN is, moet je uiteraard eerst weten wat een vpn is en verder hoe OpenVPN zich tegenover verwante technologieën verhoudt.

In zijn eenvoudigste vorm is een vpn (virtual private network) een technologie waarmee je een ‘lokaal netwerk’ creëert tussen verschillende computers die zich in wisselende lan-segmenten kunnen bevinden. Men heeft het bij zo’n connectie vaak over een vpn-tunnel, omdat alle verkeer tussen client en server zo versleuteld wordt dat het niet meer herkenbaar is. Bij protocollen als https en ssh daarentegen worden data ook wel versleuteld, maar een sniffer kan zo’n connectie als dusdanig wel nog identificeren.

Om van een echt vpn te kunnen spreken, moeten er zowel encryptie- als authenticatietechnieken toegepast worden. Deze encryptie- als authenticatietechnieken zorgen er enerzijds voor dat je zeker bent dat je met het juiste systeem of met de juiste persoon bent verbonden (via een gebruikers-id of certificaten). Anderzijds kan authenticatie ook ‘man in the middle’- en ‘denial of service’-aanvallen (respectievelijk afgekort tot mitm en dos) helpen vermijden, aangezien niet-geautoriseerde pakketjes niet eens worden ontsleuteld.

Zo’n vpn-tunnel boort zich dus ook door firewalls en routers heen: dat houdt in dat eventueel aanwezige, reguliere netwerkbeveiligingen hierdoor wellicht worden omzeild.

Een vpn-connectie kan voor verschillende doeleinden nuttig zijn: je zorgt voor meer veiligheid als je met een open wifi-netwerk bent verbonden of je omzeilt geofencing als je je met een vpn-server in een specifiek land verbindt. Grotere bedrijven verbinden er hun lokale kantoren mee en vrijdenkers uit landen met strenge censuur kunnen er alsnog hun boodschap mee uitdragen.

Er zijn heel wat vpn-producten beschikbaar, zowel opensource als in commerciële vorm. We onderscheiden een drietal belangrijke types: op basis van pptp, IPsec en ssl. OpenVPN hoort min of meer in deze laatste categorie thuis, maar wegens enkele markante verschilpunten bespreken we die toch liever apart.

Pptp

Ook al laat pptp (point to point tunneling protocol) zich makkelijk configureren omdat het in de meeste besturingssystemen is ingebouwd, je kunt het eigenlijk niet langer vertrouwen, omdat het standaard authenticatiemechanisme (ms-chapv2) al enkele jaren geleden is gekraakt. Je kunt via eap-tls dan wel X.509-certificaten gebruiken, maar niet alle pptp-clients ondersteunen dat. Daarbij komt dat pptp voor de versleuteling van het datakanaal gebruikmaakt van het gre-protocol (general routing encapsulation) en dat laat zich lastig sturen in een nat-omgeving.

IPsec

Aangezien IPsec (internet protocol security) op basis van krachtige veiligheidsbeleidsregels werkt, is het erg flexibel … maar tegelijk ook lastig om optimaal te configureren. In tegenstelling tot OpenVPN zit IPsec ook sterk verweven in de kernel, wat inhoudt dat een onvolkomen IPsec-applicatie het onderliggende besturingssysteem kan laten meecrashen. Daar komt nog bij dat producenten vaak eigen extensies aan de standaard hebben gebreid wat samenwerking tussen twee IPsec-punten van verschillende producenten behoorlijk bemoeilijkt.

SSL

Deze vpn’s zijn gebaseerd op het ssl/tls-protocol: hetzelfde protocol dus als bij https, voor het beveiligen van websites. Ook dit verkeer loopt trouwens over tcp poort 443. De meeste van deze vpn’s zijn webgebaseerd, oftewel clientless. Dat maakt het opzetten weliswaar erg makkelijk, maar de featureset is beperkt. Wel zijn er ook specifieke browser-plug-ins die meer functionaliteit bieden, maar tegelijk zorgen die voor minder interoperabiliteit.

Geschiedenis

OpenVPN werd oorspronkelijk ontwikkeld door ene James Yonan, die versie 0.90 in mei 2001 vrijgaf onder een gpl-licentie. Naar verluidt kwam hij op dit idee toen hij in Centraal-Azië rondreisde en zich met zijn kantoor moest verbinden via Aziatische en Russische internetproviders. IPsec bestond weliswaar al, maar hij vond het opzetten daarvan te complex en mede daarom extra vatbaar voor allerlei kwetsbaarheden.

Deze eerste release van OpenVPN was, zoals kan verwacht worden, zeer beperkt en liet eigenlijk alleen een eenvoudige point-to-point-verbinding over udp toe op basis van het Blowfish-versleutelingsalgoritme. Optioneel kon er ook van het sha1-algoritme (secure hash algorithm) gebruik worden gemaakt om de geldigheid van de ondertekening van certificaten te controleren. Pas in het voorjaar van 2002 voorzag OpenVPN in ssl/tls-gebaseerde authenticatie en het uitwisselen van sleutels. Nog later kwam er ook ondersteuning voor tcp bij.

Aanvankelijk werden er weliswaar andere poorten gebruikt, maar uiteindelijk werd door IANA (internet assigned names authority), tcp- en udp-poort 1194 als de standaardpoort voor OpenVPN vastgelegd.

In 2009 lag de ontwikkeling een tijdje stil, maar daar kwam later gelukkig weer verandering in

-

In de praktijk kun je ook andere poorten instellen dan standaardpoort 1194 en sinds versie 2.0 is het mogelijk om verschillende clients tegelijk te bedienen met één server.

De ontwikkeling van OpenVPN lag gedurende enkele jaren nagenoeg stil, maar gelukkig kwam er vanaf eind 2009 weer beweging in. Er werden ook volop andere ontwikkelaars aangetrokken en dat leidde tot heel wat bugfixes, extra functies en een plug-in-vriendelijker broncode. In de daaropvolgende jaren volgden nog meer aanpassingen, zoals ondersteuning voor mobiele platformen als Android en iOS en – met versie 2.0 – een solide ondersteuning voor ipv6. Ook PolarSSL wordt ondersteund: een cryptobibliotheek die een alternatief biedt voor het standaard gebruikte OpenSSL, de opensource-implementatie van het ssl/tls-protocol.

Bij elke nieuwe release worden ook opensource-versies van OpenVPN beschikbaar gesteld, zodat er packages voor zowat alle platformen, inclusief Windows 32 en 64 bit, kunnen worden samengesteld. Je vindt deze ‘community downloads’. Naast deze opensource-versies biedt OpenVPN Technologies ook een commerciële variant aan, onder de naam Access Server. Die biedt allerlei opties aan die met name grotere organisaties kunnen aanspreken. Proefversies vind je hier.

Hoe OpenVPN werkt

Als we OpenVPN van een wat meer technische kant bekijken, dan kunnen we niet om een wezenlijk verschil met de IPsec-implementatie heen. Terwijl deze laatste stevig in de kernelruimte verankerd zit (lees: het is een layer3-protocol en vereist een aanpassing aan de ip-stack) opereert OpenVPN binnen de ‘user-space’ en gedraagt het zich veel meer als een standaardapplicatie. Daartoe maakt OpenVPN handig gebruik van de zogenoemde tun/tap-driver, een concept uit de Linux-wereld waar het standaard deel uitmaakt van het besturingssysteem.

Je kunt zo’n driver zien als een virtuele netwerkadapter voor point-to-point ip-verkeer (tun) of voor zowat alle mogelijke verkeer (tap). Die vangt alle verkeer op dat voor de vpn is bedoeld en stuurt het naar de OpenVPN-applicatie. Daar worden de pakketjes versleuteld en gefragmenteerd, waarna de netwerkadapter de pakketjes doorstuurt naar het remote vpn-endpoint waar het proces in omgekeerde richting wordt afgehandeld.

In vergelijking met het regulier dataverkeer is hier weliswaar sprake van extra overhead. Bij multiclient-servers en vooral wanneer snelheden hoger dan 1 Gbit/s zijn vereist, kan zo’n OpenVPN-opzet tot een hogere vertraging en mindere prestaties leiden. In de praktijk geldt dat vooral voor de tap-drivers onder Windows.

Versleuteling

Zoals gezegd maakt OpenVPN gebruik van ssl/tls, net zoals een regulier ssl-vpn, maar dat gebeurt niet op dezelfde manier. OpenVPN gebruikt normaliter twee virtuele kanalen voor de communicatie tussen client en server: een controlekanaal en een datakanaal. Bij het opzetten van een connectie worden pakketjes, vooral met configuratiedata en versleutelingsinformatie, onder de bescherming van het ssl/tls-protocol over het controlekanaal gestuurd.

Ook de eigenlijke data – die logischerwijze over het datakanaal worden verstuurd – doorlopen encryptie- en authenticatieprotocollen. Daarover wordt bij het opzetten van de connectie echter niet onderhandeld, aangezien die algoritmes vastgelegd zijn in de configuratiebestanden van de OpenVPN-client en -server. Vaak is dat Blowfish voor de encryptie en sha1 voor de hashing.

openvpn

© PXimport

TDP en UDP

We hebben er al een paar keer op gewezen dat OpenVPN zowel over udp als over tcp kan lopen. Dat leidt onwillekeurig tot de vraag: wat is het betere protocol? Het antwoord is echter niet zo eenduidig. Er valt weliswaar iets te zeggen om in eerste instantie het udp-protocol te gebruiken, omdat dit minder overhead geeft en dus tot betere prestaties kan leiden. Immers, dit protocol is connectieloos, wat zoveel betekent als: verloren pakketjes worden niet opgemerkt en dus niet opnieuw uitgestuurd. Bij tcp daarentegen worden pakketten verstuurd en ontvangen met behulp van een ‘handshake’-protocol: dit zorgt ervoor dat alle pakketten uiteindelijk terechtkomen, desnoods na herhaaldelijk versturen.

Natuurlijk, is de verbinding niet optimaal en is het risico op (teveel) dataverlies te groot, dan dient wellicht tcp zich als de betere transporteur aan. Tcp kan ook het aangewezen protocol zijn als blijkt dat een betrokken switch of router het udp-verkeer niet correct doorstuurt, iets wat in de praktijk wel kan gebeuren.

De toekomst van OpenVPN

De ontwikkeling van OpenVPN is behoorlijk stormachtig verlopen, met een lange stilte tussen 2006 en 2009. Gelukkig hebben enkele nieuwe ontwikkelaars inmiddels de schouders weer onder dit project gezet en vind je OpenVPN terug op zo goed als alle platformen. Het is tevens geïntegreerd in routerfirmware als DD-WRT, OpenWrt, pfSense, Untangle en Tomato.

Wat ze met OpenVPN hebt bereikt in de loop der jaren is onmiskenbaar, maar dat neemt niet weg dat er nog punten van aandacht zijn. In dit artikel hebben we je al op enkele minpunten gewezen: OpenVPN kan een bottleneck zijn bij een multiclient-serveropzet en bij hoge snelheden (vooral onder Windows). Op het verlanglijstje van velen staat tevens de mogelijkheid om bij het opzetten van een connectie te onderhandelen over de encryptie- en hashing-algoritmes van de data.

We denken dat OpenVPN nog een mooie toekomst voor zich heeft: er is nog genoeg te ontwikkelen, er is een levendige community met een (weliswaar beperkt aantal) onderlegde ontwikkelaars die hun tijd willen besteden aan dit project en meer dan ooit is er (een stijgende) behoefte aan betrouwbare encryptie voor communicatie via internet.

Deel dit artikel
Voeg toe aan favorieten