Nadszedł czas, kiedy VPN nie jest już jakimś egzotycznym narzędziem brodatych administratorów systemów. Użytkownicy mają różne zadania, ale faktem jest, że VPN każdy potrzebuje.
Problem z obecnymi rozwiązaniami VPN polega na tym, że są one trudne do prawidłowej konfiguracji, drogie w utrzymaniu i zawierają przestarzały kod o wątpliwej jakości.
Kilka lat temu kanadyjski specjalista ds. bezpieczeństwa informacji Jason A. Donenfeld stwierdził, że ma już tego dość i zaczął pracować nad tym WireGuard. WireGuard jest obecnie przygotowywany do włączenia do jądra Linuksa i otrzymał nawet pochwały od niego Linus Torvalds i Senat USA.
Deklarowane zalety WireGuard w porównaniu z innymi rozwiązaniami VPN:
Łatwy w użyciu.
Wykorzystuje nowoczesną kryptografię: framework protokołu Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF itp.
Kompaktowy, czytelny kod, łatwiejszy do zbadania pod kątem luk.
Tworzony jest interfejs WireGuard, do którego przypisywany jest klucz prywatny i adres IP. Ładowane są ustawienia innych peerów: ich klucze publiczne, adresy IP itp.
Wszystkie pakiety IP docierające do interfejsu WireGuard są hermetyzowane w formacie UDP i dostarczone bezpiecznie inni rówieśnicy.
Klienci określają publiczny adres IP serwera w ustawieniach. Serwer automatycznie rozpoznaje zewnętrzne adresy klientów po otrzymaniu od nich poprawnie uwierzytelnionych danych.
Serwer może zmienić publiczny adres IP bez przerywania swojej pracy. Jednocześnie wyśle alert do podłączonych klientów, a oni na bieżąco zaktualizują swoją konfigurację.
Stosowana jest koncepcja routingu Routing kluczy kryptograficznych. WireGuard akceptuje i wysyła pakiety w oparciu o klucz publiczny partnera. Kiedy serwer odszyfrowuje poprawnie uwierzytelniony pakiet, sprawdzane jest jego pole src. Jeśli pasuje do konfiguracji allowed-ips uwierzytelniony peer, pakiet jest odbierany przez interfejs WireGuard. Podczas wysyłania pakietu wychodzącego następuje odpowiednia procedura: pobierane jest pole dst pakietu i na jego podstawie wybierany jest odpowiedni peer, pakiet jest podpisywany jego kluczem, szyfrowany kluczem peera i wysyłany do zdalnego punktu końcowego .
Cała podstawowa logika WireGuarda zajmuje mniej niż 4 tysiące linii kodu, podczas gdy OpenVPN i IPSec mają setki tysięcy linii. Aby wspierać nowoczesne algorytmy kryptograficzne, proponuje się włączenie nowego kryptograficznego API do jądra Linuksa Cynk. Obecnie toczy się dyskusja, czy jest to dobry pomysł.
produktywność
Maksymalna przewaga wydajności (w porównaniu z OpenVPN i IPSec) będzie zauważalna w systemach Linux, ponieważ WireGuard jest tam zaimplementowany jako moduł jądra. Ponadto obsługiwane są macOS, Android, iOS, FreeBSD i OpenBSD, ale w nich WireGuard działa w przestrzeni użytkownika, co wiąże się ze wszystkimi konsekwencjami wydajnościowymi. Oczekuje się, że obsługa systemu Windows zostanie dodana w najbliższej przyszłości.
Nie jestem ekspertem od VPN. Kiedyś skonfigurowałem OpenVPN ręcznie i było to bardzo nudne, a nawet nie próbowałem IPSec. Jest zbyt wiele decyzji do podjęcia, bardzo łatwo strzelić sobie w stopę. Dlatego do konfiguracji serwera zawsze korzystałem z gotowych skryptów.
Z mojego punktu widzenia WireGuard jest ogólnie idealny dla użytkownika. Wszystkie decyzje niskiego poziomu podejmowane są w specyfikacji, dlatego proces przygotowania typowej infrastruktury VPN zajmuje tylko kilka minut. Oszukiwanie w konfiguracji jest prawie niemożliwe.
Pozostaje tylko skonfigurować NAT na serwerze, aby klienci mogli uzyskać dostęp do Internetu i gotowe!
Tę łatwość użycia i zwartość bazy kodu uzyskano poprzez wyeliminowanie funkcjonalności dystrybucji kluczy. Nie ma skomplikowanego systemu certyfikatów i całego tego korporacyjnego horroru; krótkie klucze szyfrujące są dystrybuowane podobnie jak klucze SSH. Ale to stwarza problem: WireGuard nie będzie tak łatwy do wdrożenia w niektórych istniejących sieciach.
Wśród wad warto zauważyć, że WireGuard nie będzie działać za pośrednictwem serwera proxy HTTP, ponieważ jako transport dostępny jest tylko protokół UDP. Powstaje pytanie: czy uda się zaciemnić protokół? Oczywiście nie jest to bezpośrednie zadanie VPN, ale np. w przypadku OpenVPN istnieją sposoby na przebranie się za HTTPS, co pomaga mieszkańcom krajów totalitarnych w pełni korzystać z Internetu.
odkrycia
Podsumowując, jest to bardzo ciekawy i obiecujący projekt, można go już używać na serwerach osobistych. Jaki jest zysk? Wysoka wydajność w systemach Linux, łatwość konfiguracji i wsparcia, kompaktowa i czytelna baza kodu. Jest jednak zbyt wcześnie, aby spieszyć się z przenoszeniem złożonej infrastruktury do WireGuarda, warto poczekać na włączenie jej do jądra Linuksa.
Aby zaoszczędzić mój (i Twój) czas, opracowałem Automatyczny instalator WireGuard. Z jego pomocą możesz skonfigurować osobistą sieć VPN dla siebie i swoich znajomych, nawet nie mając o tym zielonego pojęcia.