Terug naar blog

OpenVPN instellen op Ubuntu 18.04

OpenVPN instellen op Ubuntu 18.04

Inleiding

Wilt u veilig toegang krijgen tot het internet vanaf uw smartphone of laptop wanneer u verbinding maakt met een onbetrouwbaar netwerk (bijv. wifi in een hotel of café)? Gelukkig is er een manier om uw wensen in vervulling te laten gaan. U kunt veilig verbinding maken met een onbetrouwbaar netwerk alsof u zich op een privénetwerk bevindt met behulp van een Virtual Private Network (VPN).

Wat is een VPN?

VPN staat voor een Virtual Private Network. Het biedt de mogelijkheid om een beveiligde tunnel te openen naar een betrouwbare server. Alle verzoeken worden vervolgens via deze server verzonden en ontvangen. Het voordeel is het beveiligen van uw toegang en transacties bij het gebruik van openbare netwerken zoals gratis wifi in een hotel.

Via de VPN worden alle gegevens versleuteld en via de server verwerkt. Tussenliggende apparaten, zoals routers van derden en dergelijke, hebben geen mogelijkheid om het verkeer naar ongewenste bestemmingen om te leiden. Bovendien maakt u, zodra de verbinding met succes tot stand is gebracht, deel uit van het netwerk van de server. Andere servers, computers of apparaten zoals printers die normaal gesproken alleen toegankelijk zouden zijn in het lokale netwerk van de server, kunnen nu ook via de VPN-tunnel worden bereikt. Omdat echter niet alle gegevens via een versleutelde tunnel hoeven te worden verzonden, is het mogelijk om de VPN-client zo te configureren dat slechts een gedefinieerd deel van de verzoeken via de VPN-tunnel wordt verzonden. De rest van het verkeer wordt normaal via het internet verwerkt.

In deze handleiding leiden we u door de stappen voor het opzetten van een OpenVPN-server op Ubuntu 18.04.

Vereisten

U moet toegang hebben tot een Ubuntu 18.04-server om uw OpenVPN-service te hosten om deze handleiding te voltooien. Voordat u deze gids start, moet u ook een non-root gebruiker met sudo-rechten configureren. U kunt uw server eenvoudig installeren door onze handleiding over het opzetten van een Ubuntu-server te volgen..

Daarnaast hebt u een aparte computer nodig die fungeert als een certificeringsinstantie (CA). Technisch gezien kunt u uw OpenVPN-server of uw lokale computer als certificeringsinstantie gebruiken. We raden dit echter niet aan, omdat dit uw VPN blootstelt aan beveiligingslekken. Volgens de officiële OpenVPN-documentatie moet u de certificeringsinstantie op een aparte computer plaatsen die speciaal is bedoeld voor het importeren en ondertekenen van certificaatverzoeken. We gaan er dus van uit dat uw certificeringsinstantie zich op een aparte Ubuntu 18.04-server bevindt die ook een non-root gebruiker met sudo-rechten en een basisfirewall heeft. In deze handleiding zullen alle installatie- en configuratiestappen voor elk van de installaties zo eenvoudig mogelijk zijn. U kunt ook een kijkje nemen in onze handleiding over het opzetten van een Open VPN-server onder Docker.

Stap 1 – OpenVPN en EasyRSA installeren

Werk eerst de pakketindex van uw VPN-server bij en installeer OpenVPN. U kunt OpenVPN installeren met behulp van apt omdat het beschikbaar is in de standaard Ubuntu-repositories:

Stap 2: Een certificeringsinstantie maken

Maak een eenvoudige certificeringsinstantie (CA) om vertrouwde certificaten voor de OpenVPN-server uit te geven. Download hiervoor de nieuwste versie van EasyRSA op zowel uw CA-machine als uw OpenVPN-server met behulp van wget. Om de nieuwste versie te downloaden, gaat u naar de Releases-pagina van het officiële EasyRSA GitHub-project, kopieer de downloadlink voor het bestand dat eindigt op .tgz en plak deze in de volgende opdracht:

Pak vervolgens de tarball uit:

 OpenVPN EasyRSA software

Op dit punt is alle vereiste software met succes geïnstalleerd op uw CA-computer en -server.

Stap 3 – EasyRSA-variabelen configureren en de CA bouwen

EasyRSA wordt geleverd met een configuratiebestand dat u kunt bewerken om een aantal variabelen voor uw CA te definiëren met behulp van deze opdracht:

Er bevindt zich een bestand in de map met de naam vars.example. Maak een kopie van dit bestand en noem de kopie vars zonder bestandsextensie:

Gebruik de tekst-editor van uw voorkeur om dit nieuwe bestand te openen:

Zoek vervolgens de instellingen die de standaardwaarden voor velden voor nieuwe certificaten bepalen. Dit zal er ongeveer zo uitzien:

Werk deze variabelen bij naar wens, zoals hieronder weergegeven:

Sla het bestand op en sluit het zodra u klaar bent. De volgende stap is om het easyrsa-script aan te roepen en uit te voeren met de optie init-pki om de openbare-sleutelinfrastructuur op de CA-server te initialiseren:

easyrsa init-pki

Voer vervolgens het commando build-ca uit met de optie nopass, zodat u niet telkens om een wachtwoord wordt gevraagd wanneer u met uw CA communiceert:

In de uitvoer wordt u gevraagd om de common name voor uw CA te bevestigen:

 OpenVPN build-ca

Daarmee is uw CA ingesteld en klaar om certificaataanvragen te ondertekenen.

Stap 4 – Servercertificaat, sleutel en versleutelingsbestanden genereren

Nadat de CA gereed is, kunt u de privésleutel en de certificaataanvraag vanaf de server genereren en deze vervolgens naar de CA sturen voor ondertekening door het vereiste certificaat aan te maken. Navigeer eerst naar de EasyRSA-map op de OpenVPN-server:

Voer vanaf daar het easyrsa-script uit met de optie init-pki. Hoewel u dit commando al op de CA-computer hebt uitgevoerd, moet dit commando hier ook worden uitgevoerd. Dat komt omdat de PKI-mappen van de server en de CA verschillend zijn:

Roep vervolgens het easyrsa-script opnieuw aan, ditmaal met de optie gen-req, gevolgd door de computer’s generieke naam:

Dit maakt een privésleutel voor de server en een certificaataanvraagbestand met de naam server.req aan. Kopieer de serversleutel naar de map /etc/openvpn/:

Zet het bestand server.req over naar uw CA-computer met behulp van een veilige methode (zoals SCP in het volgende voorbeeld):

Navigeer vervolgens naar de EasyRSA-map op uw CA-computer:

Gebruik het easyrsa-script opnieuw om het bestand server.req te importeren en voeg de common name toe na het bestandspad:

Onderteken vervolgens de aanvraag door het easyrsa-script uit te voeren met de optie sign-req, gevolgd door het type aanvraag en de common name. Zorg er bij de certificaataanvraag van de OpenVPN-server voor dat u het type serveraanvraag gebruikt:

De uitvoer vraagt u te controleren of het verzoek afkomstig is van een betrouwbare bron. Typ yes en druk op Enter om te bevestigen. Controleer de hieronder weergegeven details om de nauwkeurigheid te garanderen. Let op: dit verzoek is nog niet met een wachtwoord geverifieerd.

Vraag het onderwerp aan en onderteken het als een servercertificaat voor 3650 dagen:

 OpenVPN sign certificate for server

Als u de CA-sleutel hebt versleuteld, wordt u op dit punt om het wachtwoord gevraagd. Gebruik vervolgens een veilige methode om het ondertekende certificaat terug te sturen naar uw VPN-server:

Zet het ca.rt-bestand over naar de server voordat u zich afmeldt bij de CA-computer:

Log vervolgens opnieuw in op uw OpenVPN-server en kopieer de bestanden server.crt en ca.crt naar uw /etc/openvpn/-map:

Navigeer vervolgens naar uw EasyRSA-map:

Voer de volgende code in om een sterke Diffie-Hellman-sleutel te maken die u kunt gebruiken tijdens de sleuteluitwisseling:

Wanneer dit is gebeurd, genereert u een HMAC-handtekening om de TLS-statuscontrolefunctionaliteit van de server te verbeteren:

Wanneer de opdracht is voltooid, kopieert u de twee nieuwe bestanden naar de map /etc/openvpn/:

Op deze manier worden alle certificaten en sleutelbestanden die de server nodig heeft gegenereerd. Nu kunt u het juiste certificaat en de juiste sleutel maken die de clientcomputer zal gebruiken om toegang te krijgen tot de OpenVPN-server.

Stap 4 – Clientcertificaat en sleutelpaar genereren

Vervolgens maken we een clientsleutel en verschillende certificaten. Als u meerdere clients hebt, kunt u dit proces voor elke client herhalen. Houd er echter rekening mee dat u voor elke client een unieke naamwaarde aan het script moet doorgeven. In deze handleiding noemen we het eerste certificaat/sleutelpaar client1. Maak eerst een mapstructuur aan in uw thuismap om clientcertificaten en sleutelbestanden op te slaan:

Aangezien u het certificaat/sleutelpaar en het configuratiebestand van de client om veiligheidsredenen in deze map opslaat, moet u nu de machtigingen intrekken:

Navigeer vervolgens terug naar de EasyRSA-map en voer het easyrsa-script uit met de opties gen-req en nopass, evenals de generieke naam van de client:

Druk op Enter om de algemene naam te bevestigen. Kopieer daarna het bestand client1.key naar de eerder gemaakte map /client-configs/keys/:

Gebruik vervolgens een veilige methode om het bestand client1.req over te zetten naar uw CA-computer:

Log in op uw CA-computer, navigeer naar de EasyRSA-map en importeer het certificaatverzoek:

import client.req

Onderteken vervolgens, net als in de vorige stap, het verzoek op de server. Maar deze keer moet u het type clientverzoek opgeven:

Typ bij de prompt yes om te bevestigen dat u het certificaatverzoek wilt ondertekenen en dat het certificaatverzoek afkomstig is van een betrouwbare bron. Voer het woord “yes” in om door te gaan of voer iets anders in om te annuleren:

sign certificate

Als u de CA-sleutel hebt versleuteld, wordt u ook gevraagd om hier het wachtwoord in te voeren. Hiermee wordt een clientcertificaatbestand met de naam client1.crt gemaakt. Zet dit bestand terug over naar de server:

Maak opnieuw verbinding via SSH met je OpenVPN-server en kopieer het clientcertificaat naar de map / client-configs / keys /:

Kopieer vervolgens de bestanden ca.crt en ta.key naar de map / client-configs / keys /:

Tegelijkertijd zijn alle certificaten en sleutels van de server en de client gegenereerd en opgeslagen in de bijbehorende mappen op de server. Nu kun je doorgaan met het configureren van OpenVPN op de server.

 Stap 5 – De OpenVPN-service configureren

Na het genereren van de client- en servercertificaten kun je de OpenVPN-service configureren om deze inloggegevens te gebruiken. Kopieer eerst het OpenVPN-voorbeeldbestand naar je configuratiemap en pak het vervolgens uit om het als basis voor de installatie te gebruiken:

Open het serverconfiguratiebestand in de teksteditor van jouw voorkeur:

Zoek vervolgens het HMAC-gedeelte door te zoeken naar de tls-auth-opdracht:

Zoek het wachtwoordgedeelte door te zoeken naar de uitgecommenteerde wachtwoordregel. AES-256-CBC-versleuteling biedt een goed niveau van versleuteling en wordt goed ondersteund. De regel mag niet uitgecommenteerd zijn, maar als dat wel zo is, verwijder dan de “;” ervoor:

Voeg daaronder een Auth-opdracht toe om het HMAC message-digest-algoritme te selecteren. SHA256 is hiervoor een goede keuze:

Zoek vervolgens de regel met de dh-instructie die de Diffie-Hellman-parameters definieert. Vanwege enkele recente wijzigingen in EasyRSA kan de bestandsnaam van de Diffie-Hellman-sleutel afwijken van de bestandsnaam in het voorbeeldconfiguratiebestand van de server. Wijzig indien nodig de hier vermelde bestandsnaam door 2048 te verwijderen om deze af te stemmen op de sleutel van de vorige stap:

Zoek ten slotte de gebruikers- en groepsinstellingen en verwijder de “;” aan het begin van elke regel:

Tot nu toe zouden de wijzigingen die je in het voorbeeld-server.conf-bestand hebt aangebracht, OpenVPN moeten laten werken.

Stap 6 – Servernetwerkconfiguratie

Configureer IP-doorsturen om verkeer correct via de VPN te routeren. Dit is essentieel voor de VPN-functionaliteit die je server biedt:

Zoek naar de uitgecommenteerde regel die net.ipv4.ip_forward instelt. Verwijder het “#”-teken aan het begin van de regel om deze instelling te de-commentariëren:

Sla het bestand op en sluit het zodra je klaar bent. Om het bestand te lezen en de waarden voor de huidige sessie aan te passen, typ je:

sysctl -p

Voeg vervolgens de openbare netwerkinterface van je machine toe:

Je openbare interface is de tekenreeks in de uitvoer van deze opdracht die volgt op het woord “dev”. Dit resultaat toont bijvoorbeeld de interface met de naam ens3.

default ip route

Open het bestand /etc/ufw/before.rules om de relevante configuratie toe te voegen:

Voeg bovenaan het bestand de onderstaande gemarkeerde regels toe om het standaardbeleid voor de POSTROUTING-chain in de nat-tabel in te stellen en al het verkeer dat van de VPN komt te maskeren. Vervang ens3 in de onderstaande -A POSTROUTING-regel door de interface die je in de bovenstaande opdracht hebt gevonden:

Sla het bestand op en sluit het zodra u klaar bent. Vervolgens moet u UFW vertellen om doorgestuurd verkeer standaard ook toe te staan. Open hiervoor het bestand /etc/default/ufw:

Zoek daarin naar de richtlijn DEFAULT_FORWARD_POLICY en wijzig de waarde van DROP in ACCEPT:

Sla het bestand op en sluit het wanneer u klaar bent. Pas vervolgens de firewall aan om verkeer naar OpenVPN toe te staan. Als u de poort en het protocol in het bestand /etc/openvpn/server.conf niet hebt gewijzigd, moet u UDP-verkeer naar poort 1194 openstellen. Als u de poort en/of het protocol hebt gewijzigd, vervang dan de waarden die u hier hebt geselecteerd. Als u bent vergeten de SSH-poort toe te voegen tijdens het volgen van de voorafgaande handleiding, voeg deze dan hier ook toe:

Nadat u deze regels hebt toegevoegd, schakelt u UFW uit en weer in om het opnieuw te starten en de wijzigingen te laden van alle bestanden die u hebt gewijzigd:

ufw commands

Gefeliciteerd, uw server is nu geconfigureerd om OpenVPN-verkeer correct af te handelen!

Conclusie

Als u deze handleiding helemaal hebt gevolgd, kunt u nu veilig op internet surfen. U kunt uw identiteit, locatie en verkeer weghouden van nieuwsgierige blikken.

Veel computerplezier!

 

 

author

Akshay Nagpal

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.