![]()
OpenVPN je priljubljen protokol in programska oprema za ustvarjanje varnih navideznih zasebnih omrežij (VPN). Gre za odprtokodni projekt, zato je njegova izvorna koda javno dostopna — kar omogoča preglednost, prispevke skupnosti in redne varnostne revizije. Zaradi tega in ker je zelo prilagodljiv, ga pogosto izberejo za zaščito zasebnosti in oddaljeni dostop do omrežij.
Kako deluje
OpenVPN uporablja model klient-server in temelji na varnem tuneliranju prometa preko interneta. Glavni gradniki delovanja so:
- SSL/TLS: OpenVPN uporablja SSL (dejansko sodobne različice TLS) za avtentikacijo in vzpostavitev šifriranega kanala.
- OpenVPN se razlikuje od drugih rešitev, kot so IPSec ali SSH Za, čeprav imajo vsi namen varnega prenosa podatkov.
- Podatki se po tunelu prenašajo v šifrirani obliki, običajno z uporabo simetričnih šifer za hitrost in učinkovitost ter z uporabo javno-zasebne kriptografije za varno izmenjavo ključev.
- Podpira tako usmerjanje celotnega prometa (redirect-gateway) kot pošiljanje le določenih poti (push route), DNS posredovanje, in več različnih načinov avtentikacije (certifikati, uporabniška gesla, OTP).
Varnost in priporočene prakse
OpenVPN velja za zelo varen protokol, čeprav je varnost odvisna od konfiguracije. Pomembne varnostne prakse:
- Uporabite močno šifro: Za najboljšo zasebnost in varnost izberite 256-bitno šifriranje AES (npr. AES-256-GCM). AES v načinu GCM nudi šifriranje in avtentikacijo v enem in je danes pogosto priporočena izbira.
- Avtentikacija in ključi: Uporabljajte PKI: ločene certifikate za strežnik in vsak klient ter ustrezno upravljanje CRL (certificate revocation list). Če uporabljate RSA, bodite vsaj na 2048 bitih (priporočljivo 3072/4096) ali razmislite o ECDSA za manjše ključe z enako varnostjo.
- Perfect Forward Secrecy (PFS): Omogočite ECDHE/DHE izmenjavo ključev, da zagotovite, da kompromitacija dolgoročnega ključa ne omogoči dešifriranja preteklih sej.
- Integriteta in HMAC: Uporabite HMAC (npr. auth SHA256) za zaščito pred manipulacijo paketov.
- TLS zaščita kontrolnega kanala: Aktivirajte tls-auth ali tls-crypt za dodatno zaščito TLS roke in zmanjšanje možnosti DoS napadov.
- Onemogočite kompresijo: Stisnitev podatkov lahko izpostavi VORACLE in druge napade; razmislite o izklopu compress/comp-lzo, razen če imate dobro utemeljeno potrebo.
- Redno posodabljajte: Nadgrajujte OpenVPN strežnik in knjižnice (OpenSSL, LibreSSL, BoringSSL) zaradi popravkov varnostnih ranljivosti.
Vrata, protokoli in zmogljivost
OpenVPN lahko uporablja TCP ali UDP kot transportni protokol. Izbira vpliva na zanesljivost in hitrost:
- UDP (priporočeno za hitrost): UDP je manj zanesljiv glede zagotovil dostave paketov, vendar običajno hitrejši in ima manj režijskih stroškov, zato je primeren za prenos podatkov v VPN.
- TCP 443 (za omrežno kompatibilnost): Če potrebujete, da povezava deluje kot HTTPS, lahko uporabite vrata TCP 443. Povezava preko TCP 443 otežuje blokiranje in pomaga pri zaobitju cenzure, saj je promet zelo podoben običajnemu HTTPS prometu.
- Za lažje razumevanje: privzeto OpenVPN pogosto uporablja UDP port 1194, vendar je spreminjanje vrat in protokola pogosta praksa glede na potrebe omrežja.
Šifre in privzete nastavitve
V zgodovini je bila pogosto uporabljena šifroBlowfish-128 kot privzeta, vendar velja, da je Blowfish zastarela in manj varna v primerjavi z modernimi AES rešitvami. Za večino uporabnikov so priporočila:
- Cipher: AES-256-GCM (ali vsaj AES-256-CBC, če GCM ni na voljo).
- Hash/auth: auth SHA256 ali močnejši.
- TLS: Uporabite najnovejšo varno različico TLS, ki jo podpira vaša različica OpenVPN; novejše različice uvajajo tudi podporo za TLS 1.3.
Dodatne varnostne nastavitve in priporočila
- Enkratna pravica dostopa (least privilege): Strežnik poganjajte z minimalnimi privilegiji in uporabite ločene uporabnike/omejitve procesov.
- Revocation in upravljanje certifikatov: Izvajajte postopek razveljavitve (CRL) ob izgubljenih ali kompromitiranih napravah.
- Two-factor avtentikacija: Dodajte OTP (npr. TOTP) ali druge 2FA metode za dodatno plast varnosti.
- Preprečevanje puščanja DNS/IPv6: Zagotovite, da so na klientih nastavljeni varni DNS strežniki in da je IPv6 pravilno onemogočen ali usmerjen, če ga ne uporabljate, da preprečite puščanje prometa mimo VPN tunela.
- Kill switch: Nastavite sistemske ali požarne stenske (firewall) pravila, ki blokirajo promet, kadar VPN pade, da preprečite nenamerno izpostavitev IP naslova.
- Obfuscation in zaobitje cenzure: Če je potrebno zaobiti globinsko pregledovanje paketov (DPI), uporabite tls-crypt, stunnel ali druge obfuscation rešitve in/ali zamenjajte vrata (npr. TCP 443).
Namestitev in uporaba
OpenVPN deluje na več platformah: Linux, Windows, macOS, Android in iOS. Na strežniški strani boste običajno naredili naslednje korake:
- Ustvarili lastno PKI (CA, strežniški in klientski certifikati).
- Konfigurirali strežnik (izbira porta, proto UDP/TCP, cipher, tls-crypt, crl, push ukazi za DNS in poti).
- Na klientih uvozili certifikate in konfiguracijske datoteke ter nastavili firewall/kill-switch po potrebi.
Zaključek
OpenVPN je zmogljiv, prilagodljiv in varen VPN protokol, če je pravilno konfiguriran. Ključ do varne uporabe so močne kriptografske nastavitve (npr. AES-256-GCM, HMAC/SHA256, PFS), pravilno upravljanje ključev in upoštevanje zaščitnih ukrepov (disable compression, kill switch, DNS nastavitve). Za okolja z omejitvami omrežja je uporaba vrata TCP 443 ali dodatne obfuscation tehnike smiselna izbira.