![]()
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.