WireGuard — skvelý VPN budúcnosti?

WireGuard — skvelý VPN budúcnosti?

Nastala doba, kedy VPN už nie je exotickým nástrojom pre starších administrátorov. Používateľské úlohy sú rôzne, no faktom je, že VPN sa stal potrebným pre každého.

Problémom súčasných VPN riešení je, že sú ťažko správne nastaviť, sú drahé na údržbu a obsahujú množstvo starého kódu pochybnou kvalitou.

Pred niekoľkými rokmi sa kanadský odborník na bezpečnosť Jason A. Donenfeld rozhodol, že je načase to zmeniť, a začal pracovať na WireGuard. V súčasnosti sa WireGuard pripravuje na zaradenie do jadra Linuxu a dokonca získal pochvalu od Linusa Torvalds a v americkom senáte.

Vyhlásené výhody WireGuardu oproti iným VPN riešeniam:

  • Jednoduché na používanie.
  • Používa modernú kryptografiu: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF atď.
  • Kompaktný a čitateľný kód, jednoduchšie na skúmanie zraniteľností.
  • Vysoký výkon.
  • Jasná a prepracovaná špecifikácia.

Nájdeme nakoniec striebornú guľu? Je čas zakopať OpenVPN a IPSec? Rozhodol som sa to preskúmať a zároveň som vytvoril skript na automatickú inštaláciu osobného VPN servera.

Princípy práce

Princípy fungovania môžu byť opísané asi takto:

  • Vytvorí sa rozhranie WireGuard, pridelí sa mu súkromný kľúč a IP adresa. Načítajú sa nastavenia iných peerov: ich verejné kľúče, IP adresy a pod.
  • Všetky IP pakety, ktoré prichádzajú na rozhranie WireGuard, sú enkapsulované do UDP a bezpečne doručené ostatným peerom.
  • Klienti zadávajú verejnú IP adresu servera v nastaveniach. Server automaticky zisťuje vonkajšie adresy klientov, keď od nich prichádzajú správne autentifikované údaje.
  • Server môže zmeniť verejnú IP adresu bez prerušenia prevádzky. Pri tom pošle oznámenie pripojeným klientom a oni aktualizujú svoju konfiguráciu za behu.
  • Používa sa koncept smerovania Cryptokey Routing. WireGuard prijíma a posiela pakety na základe verejného kľúča peera. Keď server dešifruje správne autentifikovaný paket, kontroluje jeho src pole. Ak zodpovedá konfigurácii allowed-ips autentifikovaného peera, paket sa prijíma rozhraním WireGuard. Pri odosielaní výstupného paketu prebieha príslušný proces: vezme sa dst pole paketu a na jeho základe sa vyberie príslušný peer, paket sa podpíše svojím kľúčom, zašifruje kľúčom peera a odošle na vzdialený koncový bod.

Celá základná logika WireGuardu zaberá menej ako 4 tisícky riadkov kódu, zatiaľ čo OpenVPN a IPSec majú stovky tisíc riadkov. Na podporu moderných kryptografických algoritmov sa navrhuje zahrnúť do jadra Linux nový kryptografický API. Zinc. Momentálne sa diskutuje, ako úspešná je táto myšlienka.

Výkon

Najvyššie výhody výkonu (v porovnaní s OpenVPN a IPSec) sa dajú pozorovať na systémoch Linux, pretože tam je WireGuard implementovaný ako modul jadra. Okrem toho sú podporované aj macOS, Android, iOS, FreeBSD a OpenBSD, ale v týchto systémoch sa WireGuard vykonáva v userspace so všetkými dôsledkami na výkon. Podporu pre Windows sľubujú pridať v blízkej budúcnosti.

Výsledky benchmarkov s oficiálnej stránky:

WireGuard — skvelý VPN budúcnosti?

Môj zážitok z používania

Nie som expert na nastavenie VPN. Raz som nastavoval OpenVPN ručne a bolo to veľmi zdĺhavé, a IPSec som sa ani nepokúšal. Príliš veľa rozhodnutí je potrebné urobiť, je veľmi ľahké sa sekírovať. Preto som vždy používal hotové skripty na nastavenie servera.

Takže podľa môjho názoru je WireGuard ideálny pre užívateľov. Všetky low-level rozhodnutia sú prijaté v špecifikácii, takže príprava typickej VPN infraštruktúry trvá len pár minút. Zmazať sa v konfigurácii je prakticky nemožné.

Proces inštalácie podrobne popísané na oficiálnej stránke, osobitne by som chcel vyzdvihnúť vynikajúcu podporu OpenWRT.

Generujú sa šifrovacie kľúče pomocou nástroja wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

Potom je potrebné vytvoriť serverový konfiguračný súbor /etc/wireguard/wg0.conf so nasledujúcim obsahom:

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

a zdvihnúť tunel skriptom wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

V systémoch s systemd namiesto toho môžete použiť sudo systemctl start wg-quick@wg0.service.

Na klientskej mašine vytvorte konfiguračný súbor /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # Externá IP servera
PersistentKeepalive = 25 

A presne takisto zdvihnúť tunel:

sudo wg-quick up /etc/wireguard/wg0.conf

Zostáva nastaviť NAT na serveri, aby sa klienti mohli pripojiť na Internet, a všetko je hotové!

Túto jednoduchosť používania a kompaktnosť zdrojového kódu sa podarilo dosiahnuť vďaka odmietnutiu funkcionality distribúcie kľúčov. Tu nie je zložitý systém certifikátov a všetkého toho korporátneho chaosu, krátke šifrovacie kľúče sa šíria približne ako SSH kľúče. V súvislosti s tým však vzniká problém: WireGuard nebude tak jednoduché implementovať v niektorých už existujúcich sieťach.

Medzi nevýhody patrí, že WireGuard nebude fungovať cez HTTP proxy, pretože ako transportný protokol je k dispozícii len UDP. Vzniká otázka, je možné obfuskovanie protokolu? Samozrejme, nie je to priamy cieľ VPN, ale pre OpenVPN existujú spôsoby maskovania pod HTTPS, čo pomáha obyvateľom totalitných krajín plne využívať internet.

Zhrnutie

Na záver, ide o veľmi zaujímavý a perspektívny projekt, ktorý už teraz môžete použiť na osobných serveroch. Aký je zisk? Vysoký výkon na systémoch Linux, jednoduchosť nastavenia a údržby, kompaktný a čitateľný zdrojový kód. Avšak, prechádzať na WireGuard s komplexnou infraštruktúrou je ešte predčasné, treba počkať na jeho zaradenie do jadra Linux.

Aby som ušetril svoj (a váš) čas, vyvinul som automatický inštalátor WireGuard. S jeho pomocou si môžete zdvihnúť osobný VPN pre seba a svojich známych, aj keď tomu vôbec nerozumiete.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster