OpenVPN jest protokołem VPN, który wykorzystuje kod open-source. Oznacza to, że kod źródłowy jest powszechnie dostępny dla każdego, kto ma do niego dostęp i może go rozwijać.

Wokół projektu OpenVPN utworzyła się aktywna społeczność, która uaktualniała go i zapewniała regularne audyty bezpieczeństwa, aby zapewnić jego rentowność.

Jest on szczególnie znany ze swojego bezpieczeństwa i prywatności, jak również możliwości regulacji.

OpenVPN zazwyczaj działa na dowolnym porcie i posiada pięć algorytmów szyfrujących, takich jak SSL, IPSec lub SSH. W celu zapewnienia najlepszego bezpieczeństwa i ochrony prywatności, należy stosować szyfrowanie AES 256-bitowe, które jest zasadniczo nietłukące i powinno również korzystać z portu TCP 443.

Port TCP 443 sprawi, że Twoje połączenie będzie podobne do połączenia https. Jest to zasadniczo bezpieczne połączenie, które może pomóc w zapobieganiu blokowaniu stron internetowych i może pomóc ominąć cenzurę.

Dla większej prędkości zalecane jest użycie portów UDP, można też wybrać domyślny szyfrBlowfish-128. Nie jest to absolutnie najwyższy poziom bezpieczeństwa, ale dla większości ludzi będzie on wystarczający i będzie działał znacznie szybciej niż AES 256 na TCP.

Wyjaśnienie i uzupełnienia

Powyższe akapity zawierają kilka uproszczeń, które warto doprecyzować:

  • Mechanizm szyfrowania: OpenVPN standardowo korzysta z bibliotek TLS/SSL (OpenSSL lub alternatywy). Nie jest sam w sobie „IPSec” ani „SSH” — są to odrębne protokoły VPN/bezpieczeństwa. OpenVPN może jednak konfigurować różne algorytmy szyfrujące dostępne w bibliotece kryptograficznej.
  • Wybór portu: Możesz uruchomić OpenVPN na dowolnym porcie TCP lub UDP. Użycie portu TCP 443 sprawia, że ruch VPN wygląda jak zwykły ruch HTTPS i bywa trudniejszy do zablokowania przez cenzurę lub firewalle. Z kolei UDP (domyślnie port 1194) zwykle daje niższe opóźnienia i lepszą wydajność.
  • Szyfrowanie: AES-256 (zwłaszcza tryb GCM) jest obecnie standardowym i bardzo bezpiecznym wyborem. Blowfish-128 jest przestarzały i mniej bezpieczny, chociaż może być szybszy na starszym sprzęcie. Zalecane jest korzystanie z nowoczesnych trybów (AES-256-GCM) i algorytmów uwierzytelniania (SHA-2/GLM), a także włączenie Perfect Forward Secrecy (PFS).

Bezpieczeństwo — najlepsze praktyki

  • Użyj nowoczesnych algorytmów: AES-256-GCM (jako data-cipher) wraz z auth SHA256 lub lepszym. W konfiguracji serwera/klienta stosuj opcje wymuszające nowoczesne szyfry zamiast polegać na domyślnych, które mogą być starsze.
  • Perfect Forward Secrecy: Włącz ECDH/DH (np. krzywe eliptyczne) w celu zapewnienia PFS. Dzięki temu kompromitacja klucza długoterminowego nie odsłania wcześniejszych sesji.
  • Uwierzytelnianie TLS: Stosuj certyfikaty i infrastrukturę PKI (CA), a do ochrony kanału zarządzania używaj tls-crypt (zastępuje tls-auth) — chroni pliki TLS przed manipulacją i ukrywa metadane pakietów TLS.
  • Wyłącz kompresję: Nie używaj kompresji (np. comp-lzo), jeśli nie jest to niezbędne — kompresja może prowadzić do ataków typu VORACLE i wycieków informacji.
  • Minimalne uprawnienia: Na serwerze uruchamiaj proces jako użytkownik o niskich uprawnieniach (user nobody, group nogroup) i ogranicz dostęp do kluczy prywatnych (odpowiednie prawa plików).
  • Ogranicz protokoły TLS: Wymuś minimalną wersję TLS (np. --tls-version-min 1.2 lub 1.3) i wyłącz przestarzałe protokoły i słabe szyfry.
  • Lista unieważnień (CRL): Utrzymuj i stosuj CRL, aby natychmiast unieważnić skompromitowane certyfikaty użytkowników.

Konfiguracja — kluczowe opcje (przykładowe)

Przykładowe, typowe ustawienia w pliku server.conf (skrótowo):

  • port 1194 (lub 443 jeśli chcesz maskować ruch)
  • proto udp (dla wydajności) lub proto tcp-server (jeśli potrzebujesz przezwyciężyć filtrację)
  • dev tun (routowanie IP) lub dev tap (mostkowanie Ethernet — rzadziej stosowane)
  • ca ca.crt, cert server.crt, key server.key, dh dh.pem (lub użycie ECDH)
  • tls-crypt ta.key (zabezpiecza handshakes)
  • cipher AES-256-GCM
  • auth SHA256
  • persist-key, persist-tun
  • user nobody, group nogroup
  • keepalive 10 120
  • push "redirect-gateway def1 bypass-dhcp" (jeśli chcesz tunelować cały ruch klienta)
  • push "dhcp-option DNS 1.1.1.1" (aby wymusić DNS przez VPN i zapobiec wyciekom)
  • verb 3 (logowanie; dostosuj poziom)

Do tworzenia PKI zwykle używa się narzędzia easy-rsa (lub alternatyw). Regularnie odnawiaj klucze i rozważ stosowanie kluczy ECDSA/ECDH (krzywe eliptyczne) zamiast RSA dla lepszej wydajności przy tej samej sile bezpieczeństwa.

Uwierzytelnianie i zarządzanie dostępem

  • Certyfikaty użytkowników: Każdy klient powinien mieć własny certyfikat podpisany przez CA. Ułatwia to kontrolę dostępu i unieważnianie dostępu pojedynczych użytkowników.
  • Uwierzytelnianie dodatkowe: Rozważ łączenie certyfikatów z uwierzytelnianiem na podstawie nazwy użytkownika/hasła (PAM, LDAP, RADIUS) i MFA (np. TOTP) dla zwiększonego bezpieczeństwa.
  • Revokacja: Przygotuj procedury na wypadek kompromitacji (CRL) i automatyczne monitorowanie nieprawidłowych logowań.

Wydajność i praktyczne wskazówki

  • UDP vs TCP: UDP daje zwykle lepszą wydajność (mniejsze opóźnienia). TCP przez 443 może pomóc w ominięciu cenzury, ale może powodować tzw. TCP meltdown — spadek wydajności przy tunelowaniu ruchu TCP przez TCP.
  • AES-NI i sprzętowe przyspieszenie: Włącz wsparcie AES-NI na serwerze/kliencie — znacząco przyspiesza szyfrowanie AES.
  • MTU i fragmentacja: Ustawienia MTU/MSS mogą wymagać dostrojenia (np. mssfix 1400), aby uniknąć fragmentacji i problemów z łącznością.
  • Kompresja: LZ4 może przyspieszyć niektóre rodzaje ruchu, ale niesie ryzyko wycieków — rozważ tylko jeśli znasz konsekwencje.
  • Monitorowanie: Testuj przepustowość (iperf), monitoruj zużycie CPU i opóźnienia, by dobrać optymalne ustawienia.

Ruch i polityka sieciowa

  • Routowanie vs mostkowanie: dev tun (routowanie) jest najczęściej używane i bardziej wydajne; dev tap (most) przydaje się, gdy potrzebujesz przesyłać broadcast/dynamiczne adresy w warstwie 2.
  • Firewall i NAT: Upewnij się, że ruch VPN jest poprawnie przekierowany (iptables/nftables) i że reguły NAT są skonfigurowane dla ruchu wychodzącego przez serwer.
  • Ochrona przed wyciekami DNS: Wymuś DNS przez VPN i przetestuj klienta pod kątem wycieków DNS/IPv6 (wyłącz IPv6 jeśli nie jest obsługiwane przez konfigurację VPN).

Klienci i kompatybilność

OpenVPN ma klientów dla Windows, macOS, Linux, Android i iOS oraz implementacje na routerach (OpenWrt, pfSense). Wiele komercyjnych dostawców VPN opiera swoje usługi na OpenVPN dzięki jego elastyczności i silnemu wsparciu społeczności.

Podsumowanie i rekomendacje

  • Stosuj nowoczesne szyfry: AES-256-GCM, auth SHA256, PFS (ECDH).
  • Preferuj UDP dla wydajności; użyj TCP 443, gdy potrzebujesz maskowania ruchu lub omijać restrykcje.
  • Włącz tls-crypt, wyłącz kompresję, utrzymuj CRL i minimalizuj uprawnienia serwera.
  • Regularnie aktualizuj oprogramowanie OpenVPN i biblioteki kryptograficzne oraz monitoruj logi i aktywność.

OpenVPN to potężne i elastyczne rozwiązanie VPN — przy prawidłowej konfiguracji zapewnia wysoki poziom bezpieczeństwa i prywatności oraz dobrą wydajność. Pamiętaj jednak, że bezpieczeństwo to proces: konfiguracja, aktualizacje, monitorowanie i dobre praktyki operacyjne są równie ważne jak wybór algorytmów.