Po dwóch i pół roku od publikacji wersji 2.5 przygotowano wydanie OpenVPN 2.6.0, pakietu do tworzenia wirtualnych sieci prywatnych, który umożliwia nawiązanie szyfrowanego połączenia między dwoma klientami lub działanie centralnego serwera VPN, który obsługuje jednoczesną pracę wielu klientów. Kod OpenVPN jest rozpowszechniany na licencji GPLv2, gotowe pakiety binarne są tworzone dla Debian, Ubuntu, CentOS, RHEL i Windows.
Główne nowości:
- Zapewniono wsparcie dla nieograniczonej liczby połączeń.
- W skład wchodzi moduł jądra ovpn-dco, który znacznie zwiększa wydajność. VPN. Przyspieszenie osiągane jest poprzez przeniesienie wszystkich operacji szyfrowania, przetwarzania pakietów i zarządzania kanałem komunikacyjnym do jądra Linuksa, co pozwala w eliminacji narzutów związanych z przełączaniem kontekstu, umożliwia optymalizację działania dzięki bezpośredniemu dostępowi do wewnętrznych API jądra oraz wyklucza powolny transfer danych między jądrem a przestrzenią użytkownika (szyfrowanie, deszyfrowanie i routowanie wykonywane jest przez moduł bez przesyłania ruchu do przetwarzacza w przestrzeni użytkownika).
W przeprowadzonych testach w porównaniu do konfiguracji opartej na interfejsie tun zastosowanie modułu po stronie klienta i serwera przy użyciu szyfru AES-256-GCM pozwoliło osiągnąć wzrost przepustowości o 8 razy (z 370 Mbit/s do 2950 Mbit/s). Przy zastosowaniu modułu tylko po stronie klienta przepustowość wzrosła trzykrotnie dla ruchu wychodzącego i nie zmieniła się dla przychodzącego. Przy zastosowaniu modułu tylko po stronie serwera przepustowość wzrosła czterokrotnie dla ruchu przychodzącego oraz o 35% dla wychodzącego.
- Umożliwiono korzystanie z trybu TLS z certyfikatami samopodpisanymi (przy użyciu opcji «—peer-fingerprint» można pominąć parametry «—ca» i «—capath» oraz obejść się bez uruchamiania serwera PKI opartego na Easy-RSA lub podobnym oprogramowaniu).
- W serwerze UDP wprowadzono tryb negocjacji połączenia oparty na Cookie, w którym jako identyfikator sesji używane jest Cookie oparte na HMAC, co pozwala serwerowi na weryfikację bez zachowania stanu.
- Dodano wsparcie dla kompilacji z biblioteką OpenSSL 3.0. Dodano parametr «—tls-cert-profile insecure» do wyboru minimalnego poziomu bezpieczeństwa OpenSSL.
- Dodano nowe polecenia sterujące remote-entry-count i remote-entry-get do zliczania liczby zewnętrznych połączeń i wyświetlania ich listy.
- W procesie uzgadniania kluczy bardziej priorytetową metodą pozyskiwania materiału do generacji kluczy jest teraz mechanizm EKM (Exported Keying Material, RFC 5705), zamiast specyficznego mechanizmu OpenVPN PRF. Aby zastosować EKM, wymagana jest biblioteka OpenSSL lub mbed TLS 2.18+.
- Zachowana jest zgodność z OpenSSL w trybie FIPS, co pozwala na korzystanie z OpenVPN w systemach spełniających wymagania bezpieczeństwa FIPS 140-2.
- W mlock wdrożono kontrolę rezerwacji odpowiedniej ilości pamięci. Przy dostępności poniżej 100 MB RAM zadziała wywołanie setrlimit() w celu zwiększenia limitu.
- Dodano opcję „—peer-fingerprint” do weryfikacji zgodności lub powiązania certyfikatu na podstawie odcisku palca z użyciem hasza SHA256, bez stosowania tls-verify.
- Dla skryptów wprowadzono możliwość opóźnionej (deferred) autoryzacji, implementowanej za pomocą opcji „—auth-user-pass-verify”. W skryptach i wtyczkach dodano wsparcie dla informowania klienta o oczekiwaniu (pending) na autoryzację podczas stosowania opóźnionej autoryzacji.
- Dodano tryb zgodności (—compat-mode), umożliwiający łączenie się ze starszymi serwerami, na których używane jest OpenVPN 2.3.x lub starsze wersje.
- Na liście przekazywanej przez parametr „—data-ciphers” zezwolono na podanie prefiksu „?” w celu określenia opcjonalnych szyfrów, które będą używane tylko w przypadku ich wsparcia w SSL-bibliotece.
- Dodano opcję „—session-timeout”, która pozwala ograniczyć maksymalny czas trwania sesji.
- W pliku konfiguracyjnym zezwolono na podanie nazwy i hasła za pomocą tagu .
- Zaproponowano możliwość dynamicznego dostosowania MTU klienta na podstawie danych MTU przekazanych przez server. Aby zmienić maksymalny rozmiar MTU, dodano opcję „—tun-mtu-max” (domyślnie 1600).
- Dodano parametr „—max-packet-size” do określenia maksymalnego rozmiaru pakietów sterujących.
- Usunięto wsparcie dla trybu uruchamiania OpenVPN przez inetd. Usunięto opcję ncp-disable. Opcje verify-hash oraz tryb kluczy statycznych zostały oznaczone jako przestarzałe (pozostawiono tylko TLS). Protokół TLS 1.0 i 1.1 zostały uznane za przestarzałe (domyślnie ustawiono parametr tls-version-min na wartość 1.2). Usunięto wbudowaną implementację generatora liczb pseudolosowych (—prng), należy używać implementacji PRNG z bibliotek kryptograficznych mbed TLS lub OpenSSL. Zaprzestano wsparcia dla filtrów pakietowych PF (Packet Filtering). Domyślnie wyłączono kompresję (—allow-compression=no).
- Dodano CHACHA20-POLY1305 do domyślnej listy szyfrów.
Źródło: opennet.ru
