Je WireGuard skvelá VPN budúcnosti?

Je WireGuard skvelá VPN budúcnosti?

Nastal čas, keď VPN už nie je nejakým exotickým nástrojom bradatých systémových administrátorov. Používatelia majú rôzne úlohy, ale faktom je, že každý potrebuje VPN.

Problém súčasných riešení VPN je v tom, že je ťažké ich správne nakonfigurovať, sú drahé na údržbu a sú plné starého kódu pochybnej kvality.

Pred niekoľkými rokmi sa kanadský špecialista na informačnú bezpečnosť Jason A. Donenfeld rozhodol, že už toho má dosť a začal na tom pracovať WireGuard. WireGuard sa teraz pripravuje na zahrnutie do linuxového jadra a dokonca dostal od neho pochvalu Linus Torvalds a Senát USA.

Tvrdené výhody WireGuard oproti iným riešeniam VPN:

  • Jednoduché použitie.
  • Používa modernú kryptografiu: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF atď.
  • Kompaktný, čitateľný kód, ktorý sa dá ľahšie preskúmať z hľadiska zraniteľnosti.
  • Vysoký výkon.
  • Jasné a prepracované špecifikácia.

Našla sa strieborná guľka? Je čas pochovať OpenVPN a IPSec? Rozhodol som sa to riešiť a zároveň som to aj urobil skript na automatickú inštaláciu osobného servera VPN.

Princípy práce

Princípy fungovania možno opísať takto:

  • Vytvorí sa rozhranie WireGuard a priradí sa mu súkromný kľúč a IP adresa. Načítajú sa nastavenia ostatných partnerov: ich verejné kľúče, IP adresy atď.
  • Všetky IP pakety prichádzajúce na rozhranie WireGuard sú zapuzdrené v UDP a bezpečne doručené iných rovesníkov.
  • Klienti špecifikujú verejnú IP adresu servera v nastaveniach. Server automaticky rozpozná externé adresy klientov, keď od nich dostane správne overené údaje.
  • Server môže zmeniť verejnú IP adresu bez toho, aby prerušil svoju prácu. Zároveň odošle upozornenie pripojeným klientom a tí budú priebežne aktualizovať svoju konfiguráciu.
  • Používa sa koncept smerovania Smerovanie kryptokey. WireGuard prijíma a odosiela pakety na základe verejného kľúča partnera. Keď server dešifruje správne overený paket, skontroluje sa jeho pole src. Ak sa zhoduje s konfiguráciou allowed-ips autentifikovaný peer, paket prijme rozhranie WireGuard. Pri odosielaní odchádzajúceho paketu nastáva zodpovedajúca procedúra: berie sa pole dst paketu a na základe neho sa vyberie zodpovedajúci peer, paket sa podpíše jeho kľúčom, zašifruje sa kľúčom partnera a odošle sa na vzdialený koncový bod. .

Celá základná logika WireGuard zaberá menej ako 4 tisíc riadkov kódu, zatiaľ čo OpenVPN a IPSec majú stovky tisíc riadkov. Na podporu moderných kryptografických algoritmov sa navrhuje zahrnúť nové kryptografické API do jadra Linuxu zinok. V súčasnosti prebieha diskusia o tom, či je to dobrý nápad.

produktivita

Maximálna výkonová výhoda (v porovnaní s OpenVPN a IPSec) bude zrejmá na systémoch Linux, pretože WireGuard je tam implementovaný ako modul jadra. Okrem toho sú podporované macOS, Android, iOS, FreeBSD a OpenBSD, v ktorých však WireGuard beží v používateľskom priestore so všetkými z toho vyplývajúcimi dôsledkami na výkon. Očakáva sa, že v blízkej budúcnosti bude pridaná podpora pre Windows.

Porovnať výsledky s oficiálne stránky:

Je WireGuard skvelá VPN budúcnosti?

Moje skúsenosti s používaním

Nie som odborník na VPN. Raz som OpenVPN nastavil manuálne a bolo to veľmi únavné a IPSec som ani neskúšal. Je priveľa rozhodnutí, je veľmi ľahké vystreliť si do nohy. Preto som na konfiguráciu servera vždy používal hotové skripty.

WireGuard je teda z môjho pohľadu pre používateľa vo všeobecnosti ideálny. Všetky rozhodnutia na nízkej úrovni sa robia v špecifikácii, takže proces prípravy typickej infraštruktúry VPN trvá len niekoľko minút. V konfigurácii je takmer nemožné podvádzať.

Postup inštalácie podrobne popísané na oficiálnej webovej stránke by som chcel osobitne poznamenať vynikajúce Podpora OpenWRT.

Šifrovacie kľúče generuje obslužný program wg:

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

Ďalej musíte vytvoriť konfiguráciu servera /etc/wireguard/wg0.conf s nasledujúcim obsahom:

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

a zdvihnite tunel pomocou skriptu wg-quick:

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

Na systémoch so systemd môžete namiesto toho použiť toto sudo systemctl start [email protected].

Na klientskom počítači vytvorte konfiguráciu /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 # Внешний IP сервера
PersistentKeepalive = 25 

A zdvihnite tunel rovnakým spôsobom:

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

Zostáva len nakonfigurovať NAT na serveri tak, aby klienti mali prístup na internet, a hotovo!

Táto jednoduchosť použitia a kompaktnosť kódovej základne bola dosiahnutá odstránením funkcie distribúcie kľúčov. Neexistuje žiadny zložitý certifikačný systém a všetky tieto podnikové hrôzy; krátke šifrovacie kľúče sú distribuované podobne ako kľúče SSH. To však predstavuje problém: WireGuard nebude také ľahké implementovať do niektorých existujúcich sietí.

Medzi nevýhody stojí za zmienku, že WireGuard nebude fungovať cez HTTP proxy, pretože ako prenos je k dispozícii iba protokol UDP. Vynára sa otázka: bude možné protokol zahmliť? Samozrejme, nie je to priama úloha VPN, ale napríklad pre OpenVPN existujú spôsoby, ako sa prezliecť za HTTPS, čo pomáha obyvateľom totalitných krajín naplno využívať internet.

Závery

Aby som to zhrnul, je to veľmi zaujímavý a sľubný projekt, už ho môžete použiť na osobných serveroch. Aký je zisk? Vysoký výkon na systémoch Linux, jednoduché nastavenie a podpora, kompaktná a čitateľná kódová základňa. Je však príliš skoro ponáhľať sa s prenosom komplexnej infraštruktúry na WireGuard; oplatí sa počkať na jej zahrnutie do linuxového jadra.

Aby som ušetril svoj (a váš) čas, vyvinul som sa Automatický inštalačný program WireGuard. S jeho pomocou môžete nastaviť osobnú sieť VPN pre seba a svojich priateľov bez toho, aby ste o tom niečomu rozumeli.

Zdroj: hab.com

Pridať komentár