Veiligheid

WireGuard VPN: de beste VPN installeren en configureren VPN

WireGuardVPN is een volledig gratis softwaretoepassing waarmee we VPN-tunnels kunnen opzetten. Deze uitgebreide software integreert alle communicatie- en cryptografieprotocollen die nodig zijn om een ​​virtueel particulier netwerk te creëren tussen verschillende clients en een server. WireGuard biedt betere prestaties dan IPsec en OpenVPN (zowel in snelheid als in verbindingslatentie), vandaag zullen we in RedesZone de belangrijkste functies uitleggen, hoe het eenvoudig te installeren en configureren.

WireGuard VPN-functies

WireGuardVPN is software voor maak een virtueel particulier netwerk (VPN) extrêmement eenvoudig te configureren , erg snel (sneller dan IPsec en OpenVPN) en welke gebruikmaakt van standaard cryptografie la moderner , zonder te hoeven kiezen tussen verschillende asymmetrische en hashing symmetrische cijfers. Het doel van WireGuard VPN is om een ​​standaard te worden, waarbij steeds meer thuis- en zakelijke gebruikers het gaan gebruiken, in plaats van IPsec of het populaire OpenVPN te gebruiken, die moeilijker in te stellen en langzamer zijn. Deze software is ontworpen om door alle doelgroepen te worden gebruikt, zowel voor thuisgebruikers als op supercomputers.

Met WireGuard VPN, het is niet nodig om de verbindingen te beheren , zorgen maken over de status van het virtuele privénetwerk zelf, processen beheren of weten wat er onder de software zit om het te laten werken, zoals bij IPsec, waar je vaak naar logs moet kijken en onderzoeken wat er aan de hand is. Een ander sterk punt, de configuratie is extreem basic, maar erg krachtig.

Ce software is L3 VPN , dat wil zeggen hij gebruikt alleen tunneling tunnel , het gebeurt niet zoals OpenVPN waar we de mogelijkheid hebben om in transportmodus of in tunnelmodus te werken. In dit geval zullen we altijd de tunnelmodus gebruiken, bovendien is deze compatibel met: IPv4- en IPv6-netwerken , bovendien kan het IPv4-pakketten inkapselen in IPv6 en vice versa. Het transportlaagprotocol dat door WireGuard wordt gebruikt, is: UDP , zullen we daarom een ​​specifieke poort moeten openen (om te kiezen, deze kan worden gewijzigd) in onze router die NAT doet.

Compatibiliteit met besturingssystemen

Deze nieuwe VPN-software werd voor het eerst uitgebracht voor de Linux-kernel, maar dat is het wel multi platform omdat het compatibel is met Windows-, Linux-, MacOS-, FreeBSD-, Android- en iOS-besturingssystemen . Een van de sterke punten van deze software is dat de configuratie van client en server precies hetzelfde is in verschillende besturingssystemen, met dezelfde syntaxis, zodat u server en clients in Linux kunt configureren, en meer later de configuratie "doorgeeft" aan de rest van de apparaten met andere besturingssystemen erin.

gebruikte cryptografie

Bij de IPsec- en OpenVPN-protocollen is het noodzakelijk dat de clients en de server "akkoord" gaan over de te gebruiken cryptografische protocollen, zowel in fase 1 als in fase 2 (van IPsec), en in het kanaal. OpenVPN) Anders wordt de verbinding niet correct tot stand gebracht. WireGuard biedt een compleet cryptografisch "pakket" , zorgen voor connectiviteit zonder dat we iets hoeven te selecteren. Als op een bepaald moment een van de cryptografische protocollen die door deze VPN worden gebruikt, onveilig blijkt te zijn, is het net zo eenvoudig als het uitvoeren van een tweede versie van WireGuard met een nieuw protocol dat geen beveiligingslek heeft, en tussen hen zullen clients en de server worden aangegeven dat u "versie 2" gebruikt, omdat dit volledig transparant voor ons is.

Een ander zeer belangrijk detail is dat deze VPN gebruik maakt van een zeer kleine broncode . Er zijn heel weinig regels code in vergelijking met StrongSwan of OpenVPN, dus audits kunnen in zeer korte tijd worden voltooid, het zal ook gemakkelijker zijn om potentiële kwetsbaarheden of beveiligingslekken te vinden. Door minder regels code te hebben, is de oppervlakte van een mogelijke aanval op VPN-programmering ook kleiner.

Momenteel gebruikt WireGuard VPN ChaCha20 voor symmetrische encryptie, geauthenticeerd met Poly1305 , met behulp van een AEAD-construct. Het gebruikt ook Curve 25519 voor ECDH, BLAKE2 voor hashen, SipHash24 voor de sleutels van tafel de hachee et HKDF voor sleutelafleiding, wat betekent dat we de modernste cryptografische algoritmen gebruiken, met als doel maximale veiligheid en prestaties te bieden.

Roaming en Kill-Switch-ondersteuning

Deze software is ontworpen om te kunnen: gemakkelijk en snel verplaatsen , als ons apparaat van netwerk verandert en logischerwijs van openbaar IP verandert, zoals bij het overschakelen van het wifi-netwerk en het 4G / LTE-netwerk van onze operator, blijft de VPN-verbinding op zijn plaats omdat ze snel opnieuw zullen verifiëren met de VPN-server , zodat we altijd verbonden zijn met de VPN.

We kunnen ook activeer de Kill-Switch op het apparaat , op deze manier, als de VPN-verbinding wordt onderbroken, zal de software zelf ook verantwoordelijk zijn voor het onderbreken van al het netwerkverkeer totdat de VPN-verbinding opnieuw tot stand is gebracht, met als doel niet te surfen zonder de bescherming die we deze VPN bieden.

WireGuard VPN installeren

De installatie van deze software is heel eenvoudig, je hoeft alleen maar ga naar de officiële WireGuard-website en download het uitvoerbare bestand voor Windows- of MacOS-besturingssystemen. Als je een op Linux gebaseerd besturingssysteem gebruikt met de bijbehorende repositories, zul je waarschijnlijk de specifieke WireGuard-repositories moeten toevoegen, aangezien deze zich momenteel niet standaard in de stabiele branch bevinden.

We hebben bijvoorbeeld de VPN-server op een nieuwste versie van Debian geïnstalleerd, om deze te installeren hebben we de stappen op de officiële site gevolgd. Superuser-machtigingen zijn vereist voor een succesvolle installatie.

sudo echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list

sudo printf 'Package: *nPin: release a=unstablenPin-Priority: 90n' > /etc/apt/preferences.d/limit-unstable

sudo apt update

sudo apt install wireguard

Vergeet niet dat deze VPN ook compatibel is met besturingssystemen zoals FreeBSD, OpenBSD en zelfs met OpenWRT voor routers, omdat het voldoende is om het eenvoudig via "opkg" te installeren omdat alle aanvullende software meestal is geïnstalleerd.

Als je de VPN-client op je smartphone met Android of iOS gaat installeren, hebben we momenteel de officiële apps, zodat je deze probleemloos kunt installeren vanuit respectievelijk Google Play en App Store:

WireGuard
Ontwikkelaar: WireGuard-ontwikkelteam

WireGuard
Ontwikkelaar: WireGuard-ontwikkelteam

WireGuard-configuratie: openbare, privésleutels en configuratiebestanden

Zodra we WireGuard correct hebben geïnstalleerd, zowel op de computer die als de server fungeert, als op alle clients die we willen verbinden, is het noodzakelijk om het te configureren. Het eerste dat we moeten doen, is het publiek-private sleutelpaar maken, zowel op de server als op alle clients die we willen verbinden. We gebruikten een Debian-besturingssysteem om de sleutels te genereren en ook om de server te configureren, maar we konden dit ook rechtstreeks in Windows-software doen.

Het pad om de WireGuard-server in Debian uit te voeren is / etc / wireguard /, dus we zullen dit pad benaderen met de volgende opdracht:

cd /etc/wireguard/

Een publiek-privaat sleutelpaar voor de server genereren

Om het openbare en privésleutelpaar precies op deze locatie te genereren, plaatst u gewoon:

wg genkey | tee claveprivadaservidor | wg pubkey > clavepublicaservidor

We hebben nu twee bestanden, één met de openbare sleutel en de andere met de privésleutel:

  • Privésleutel: 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
  • Publieke sleutel: xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =

Deze sleutels zijn degene die we zullen gebruiken voor de WireGuard VPN "server".

Publiek-private sleutelparen genereren voor een klant

Om nog een paar openbare en privésleutels te genereren, die we in een client zullen gebruiken, kunnen we ze in een nieuwe map maken of ze op dezelfde locatie maken, maar met een andere naam.

wg genkey | tee claveprivadacliente1 | wg pubkey > clavepublicacliente1

We hebben nu twee bestanden, één met de openbare sleutel en de andere met de privésleutel:

  • Privésleutel: yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
  • Publieke sleutel: 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPLLsri8klE =

Deze sleutels zullen we gebruiken voor een WireGuard VPN-client.

Serverconfiguratiebestand

Het instellen van de WireGuard-server is vrij eenvoudig in vergelijking met IPsec- of OpenVPN-servers, maar er zijn verschillende dingen waarmee we rekening moeten houden die we hieronder uitleggen.

In de server zullen we een . moeten hebben sectie « Interface », In deze sectie kunnen we de . aangeven privé IP-adres die de server identificeert wanneer clients verbinding maken. We moeten onthouden dat deze VPN L3 is, dus we kunnen elk privé-IP-adres plaatsen dat op een bepaald moment niet in gebruik is. Door ejemplo, en OpenVPN la subred por defecto es 10.8.0.0/24, aquí también podremos poner esa misma o cualquier otra como la subred 192.168.2.0/24 (y que 192.168.2.1 sea el propio servidor, en las otras IPs klanten). Met de syntaxis van " Adres »We zullen het VPN-subnet plaatsen dat we willen.

In " privateKey ", We moeten de privésleutel invoeren die we eerder voor de server hebben gegenereerd. In " Luisterpoort »We zullen de UDP-poort die we willen gebruiken voor de server plaatsen, deze poort is degene die we later in NAT moeten «openen» als we ons achter een router met NAT bevinden.

Ten slotte kunnen we in deze sectie "Interface" ook opdrachten definiëren die moeten worden uitgevoerd na het optillen van de virtuele interface met "PostUp" en na het extraheren van de virtuele interface met "PostDown". Zoals je kunt zien, hebben we er momenteel commentaar op gegeven, omdat we geen NAT tegen deze interface willen doen, maar het zou perfect kunnen worden gedaan.

In de rubriek " turen »Is waar we de lijst met clients moeten plaatsen die we toestaan ​​om verbinding te maken. In dit geval gaan we alleen een "peer" verbinden, dus we zullen zijn publieke sleutel definiëren met " Publieke sleutel Dat we eerder hebben gemaakt (of dat de klant ons heeft verstrekt, aangezien het mogelijk is dat het door hem is gegenereerd), en ook kunnen we aangeven of we deze klant met een bepaald IP-adres toestaan ​​om verbinding te maken. Met de richtlijn " Toegestane IP's »We kunnen de bron-IP-adressen filteren, als we 0.0.0.0/0 plaatsen, betekent dit dat we elk IP-adres toestaan.

[Interface] Address = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c=
ListenPort = 51820

#PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
#PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASQUERADE

[Peer] PublicKey = 6c12jLkKzgU9len1kQ/6Fc61xm+LL98TPPlLsri8klE=
AllowedIPs = 0.0.0.0/0

Als we meer "peers" willen toevoegen, hoeven we ze alleen als volgt afzonderlijk in het configuratiebestand te definiëren:

[Interface] Address = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c=
ListenPort = 51820

#PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
#PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASQUERADE

[Peer] PublicKey = 6c12jLkKzgU9len1kQ/6Fc61xm+LL98TPPlLsri8klE=
AllowedIPs = 0.0.0.0/0

[Peer] PublicKey = clave pública del cliente 2
AllowedIPs = 0.0.0.0/0

[Peer] PublicKey = clave pública del cliente 3
AllowedIPs = 0.0.0.0/0

We kunnen het configuratiebestand "wg0.conf" noemen, aangezien WireGuard virtuele interfaces maakt met deze naam, ideaal om ze perfect te onderscheiden. Om dit configuratiebestand uit te voeren, voert u het volgende uit:

root@debian-vm:/etc/wireguard# wg-quick up wg0

Bij het opstarten zorgt WireGuard voor het maken van de virtuele interface, het plaatsen van het IP-adres, MTU en zelfs het creëren van de bijbehorende routes in de routeringstabel:

root@debian-vm:/etc/wireguard# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.2.1 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

Een heel belangrijk detail is dat we in de Linux-firewall de toegang van clients moeten toestaan, met name in de nieuwe wg0-interface die is gemaakt, staat deze standaard op alles accepteren, maar het is mogelijk dat uw beleid is om alles te weigeren , waar je voor moet zorgen:

iptables -I INPUT 1 -i wg0 -j ACCEPT

Configuratiebestand voor klanten

Het instellen van de WireGuard-client is vrij eenvoudig in vergelijking met IPsec- of OpenVPN-servers, maar er zijn verschillende dingen waarmee we rekening moeten houden, die we hieronder uitleggen.

In de klant zullen we een moeten hebben sectie « Interface », In deze sectie kunnen we de . aangeven privé IP-adres die de klant identificeert wanneer we inloggen. We moeten onthouden dat deze VPN L3 is, dus we kunnen elk privé-IP-adres plaatsen dat op een bepaald moment niet in gebruik is. In OpenVPN is het standaard subnet bijvoorbeeld 10.8.0.0/24, hier kunnen we ook hetzelfde of een ander subnet 192.168.2.0/24 plaatsen (en dat 192.168.2.1 de server zelf is, en het adres 192.168.2.2 Nu zijn ze de clients. Met de syntaxis " Adres »We gaan het VPN-subnet plaatsen dat we willen.

In " privateKey »We moeten de privésleutel invoeren die we eerder voor de klant hebben gegenereerd.

In de rubriek " turen » , we zullen de publieke sleutel moeten plaatsen met " Publieke sleutel »Van de WireGuard-server waarmee we verbinding gaan maken, dwz deze openbare sleutel moet door de server zijn verstrekt. Bij deze gelegenheid kunnen we ook de richtlijn gebruiken ” Toegestane IP's Maar het werkt anders, dit keer kunnen we bepalen of we alleen via de VPN naar een bepaald subnet (of meerdere subnetten) willen gaan, of dat we al het internetverkeer willen doorsturen via het virtual private network. Als we de subnetten gescheiden door komma's plaatsen, hebben we toegang tot verschillende die we op de server hebben, als we al het verkeer willen doorsturen, plaatsen we gewoon 0.0.0.0/0, zoals gebeurt met IPsec.

Tot slot, met de richtlijn " Endpoint ", We zullen het openbare IP-adres definiëren van de server waarop WireGuard VPN draait, gevolgd door een dubbele punt (:) van de gebruikte UDP-poort. We moeten onthouden dat WireGuard UDP gebruikt, dus we moeten het niet filteren in firewalls.

De software en communicatie met WireGuard proberen zo onopgemerkt mogelijk te blijven als ze niet in gebruik zijn, d.w.z. het verzendt niet continu gegevens via de VPN om de tunnel actief te houden, ideaal voor het besparen van batterij- en mobiele gegevens op smartphones. In de meeste gebruikelijke configuraties werkt dit perfect, maar als we ons achter een NAT of een firewall bevinden, is het mogelijk dat de communicatie wordt verbroken omdat er geen gegevens worden overgedragen, dus het is noodzakelijk om een ​​"keep alive" te configureren. Om Keep Alive te configureren, hoeft u alleen maar de instructie "PersistentKeepAlive" aan te geven en een geheel getal in te voeren dat de seconden aangeeft waarin de keep alive is verzonden. Volgens de officiële documentatie is 25 seconden voldoende voor de meeste firewalls en NAT-systemen, als u 0 instelt, wordt deze functie uitgeschakeld.

[Interface] PrivateKey = yPMpP2raY4FoCEJkmzQMlxzm/6RBIW9HkjY6pVFIOnI=
Address = 192.168.2.2/32

[Peer] PublicKey = xeTkJjjBUyp8paxTgajwDa+qWjrD2RpXlJRSHMwcGDQ=
AllowedIPs = 0.0.0.0/0
Endpoint = 10.10.2.86:51820

#PersistentKeepalive = 25

In Windows-besturingssystemen kunnen we dezelfde configuratie importeren, en we zullen het klaar hebben om verbinding te maken, hoewel we een client helemaal opnieuw kunnen verbinden, maar we zullen de gegenereerde openbare sleutel moeten "doorgeven" aan de WireGuard-server. .

Het is ook erg belangrijk om de WireGuard-logboeken te controleren om te controleren of de VPN-verbinding correct tot stand is gebracht. We kunnen in de sectie "Interface / Adres" geen privé IP-adres plaatsen dat al in Windows-clients wordt gebruikt, omdat we een fout in de verbinding zullen hebben.

Zoals je hebt gezien, is het instellen van WireGuard VPN echt snel en eenvoudig. We raden u aan dit in te voeren GitHub-project waar je scripts zult vinden waarmee we dit alles kunnen automatiseren, en je zult het in een paar minuten kunnen installeren en configureren.

In de nieuwste versies van Windows 10 lijkt er een probleem te zijn met de officiële WireGuard-client. In RedesZone hebben we problemen gevonden met de routes die in de routeringstabel worden toegevoegd als we de "AllowedIPs = 0.0.0.0/0" plaatsen, als we specifieke subnetten plaatsen, werkt de tunnel probleemloos (maar zonder omleidingsverkeer), echter met 0.0.0.0/0 het brengt geen verbinding tot stand. De oplossing is om download het TunSafe-programma gebaseerd op WireGuard, installeer het en importeer het WireGuard-configuratiebestand dat we in de officiële client hebben, of wijzig het in een tekstbestand met dezelfde syntaxis als altijd:

Zodra we het .conf-bestand hebben, importeren we het in het programma en kunnen we zonder problemen verbinding maken met onze VPN-server met WireGuard, met volledige omleiding van het verkeer voor veilig browsen.

We raden aan om TunSafe te gebruiken omdat er meer configuratie-opties zijn ingebouwd, zoals het kill-switchbeleid en hoewel we het als een service in het Windows-besturingssysteem willen hebben.

WireGuard VPN-prestaties vergeleken met L2TP / IPsec en OpenVPN

In RedesZone hebben we de prestaties van WireGuard VPN vergeleken met L2TP / IPsec en OpenVPN, de tests zijn uitgevoerd in een lokaal netwerk om problemen met de operator te voorkomen, zodat we de werkelijke maximale prestaties kunnen meten die een materiaal ons specifiek kan bieden .

De configuratie van de VPN-server die we hebben gebruikt (zowel voor L2TP / IPsec, OpenVPN als WireGuard) is als volgt:

  • QNAP TS-1277: AMD Ryzen 7 2700-processor; RAM-geheugen: 64 GB DDR4 RAM; netwerkconnectiviteit: QNAP QXG-10G2T-107 bij 10 Gbps met Cat7-bekabeling en a D-Link-schakelaar DXS-1210-10TS .
  • VPN-software voor L2TP / IPsec en OpenVPN (met UDP) is QVPN 2 van QNAP
  • In een tweede test met OpenVPN (met UDP) en AES-256-GCM gebruikten we Virtualization Station met Debian.
  • iperf3 handmatig geïnstalleerd op QTS en ook op gevirtualiseerde Debian.

De configuratie van de VPN-client die we hebben gebruikt (beide voor L2TP / IPsec, OpenVPN en WireGuard) is als volgt:

  • pc met AMD Ryzen 7 3800x-processor; RAM-geheugen: 32 GB DDR4 3200 MHz RAM; netwerkverbinding: ASUS XG-C100C bij 10 Gbit/s met CAT7-bekabeling en a D-Link-schakelaar DXS-1210-10TS om de twee te verbinden appareils . Besturingssysteem gebruikt in de tests: Windows 10 1909.
  • L2TP / IPsec-client, specifiek voor Windows 10
  • Laatste versie van OpenVPN (2.4.8)
  • iperf 3 op Windows 10.

De tijdens de tests behaalde prestaties zijn als volgt:

Zoals je kunt zien, is de werkelijke snelheid van WireGuard het dubbele van die van L2TP / IPsec of OpenVPN, dus het is veilig om te zeggen dat deze VPN echt snel is.

We hopen dat deze installatiehandleiding u helpt en dat u gemakkelijk WireGuard-servers en -clients kunt inzetten om ons overal veilig met ons huis, bedrijf of internet te verbinden.

Vergelijkbare items

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

Terug naar boven knop