Odprtokodni VPN

Objavljeno: 31.3.2009 | Avtor: Luka Kropivnik | Kategorija: Nasveti | Revija: Marec 2009

Vsakdo se je že znašel v situaciji, ko je potreboval varno povezavo z oddaljeno točko v omrežju. Pri tem nimamo v mislih le interneta, temveč vse vrste povezav, pri katerih lahko tretji nepooblaščeno prestreza podatke. Težavo lahko enostavno rešimo z vzpostavitvijo navideznega zasebnega omrežja (VPN). Na trgu je na voljo veliko različnih komercialnih rešitev VPN, mi pa smo si tokrat ogledali odprtokodno različico OpenVPN.

Varen pretok podatkov lahko sicer zagotovimo na več načinov. Varno povezavo z oddaljeno točko lahko npr. vzpostavimo z različnimi obstoječimi varnimi protokoli, kot so npr. SFTP, HTTPS ali SSH, ki pa imajo žal omejitve. Predvsem pa ti protokoli ne koristijo, če bi radi doma uporabljali program, ki potrebuje za svoje delovanje zbirko podatkov, ki je v podjetju. Takrat pomaga le VPN.

OpenVPN je program, ki omogoča vzpostavitev navideznega zasebnega omrežja ob pomoči varnostnega protokola SSL/TLS. Dostopen je brezplačno pod licenčnimi pogoji GNU GPL za različne operacijske sisteme. Tako ga lahko naložimo na Okna od različice 2000 naprej, OSX, Linux in druge unixne izpeljanke. Varno povezavo lahko vzpostavimo med posameznimi računalniki ali pa med omrežji računalnikov.

Najpogostejša raba omrežij VPN so med zunanjimi sodelavci in krajevnim omrežjem podjetja ali pa med oddaljenimi poslovnimi enotami in matičnim podjetjem. Ne glede na namen, za katerega uporabljamo VPN, imamo pri povezavi med dvema točkama vsaj en strežnik, ki čaka na dohodne povezave in odjemalca, ki se z omenjenim strežnikom poveže. Pri tem mora imeti strežnik statičen IP naslov, na katerem je vedno dosegljiv. Tisti strežniki, ki nimajo možnosti statičnega IP naslova, lahko dosežejo enako dosegljivost z uporabo domene in dinamične DNS storitve. Ta ob vsaki spremembi IP naslova ustrezno popravi DNS zapis. Prav tako moramo na strani VPN strežnika poskrbeti, da bo promet skozi določena vrata potekal nemoteno (požarni zid!). Pri OpenVPN je to 1194/UDP. Lahko pa namesto protokola UDP uporabimo tudi protokol TCP.

OpenVPN lahko deluje na dva načina. Prvi in najbolj enostaven je vzpostavitev usmerjene povezave (Routing). Pri tem program oblikuje nov navidezen razpon IP številk, ki jih dodeli svojemu omrežnemu vmesniku in priključenim VPN uporabnikom. Pomembno je, da je na novo oblikovan razpon različen od krajevnega razpona IP številk. Tako lahko računalnik, ki ima nameščen OpenVPN, razlikuje med paketi, ki so namenjeni prek vmesnika VPN, in tistimi, ki so namenjeni v krajevno omrežje. Težava pa nastopi, ko želi neki VPN uporabnik dostop do virov v krajevnem omrežju, na katero je priključen strežnik OpenVPN. Temu se lahko izognemo tako, da vpišemo statične smeri (static routes). Slabost pri tem je, da je to treba storiti ročno, za vsak računalnik v omrežju posebej.

Grafični uporabniški vmesnik nam omogoča izvajanje le omejenih ukazov.

Lahko pa vzpostavimo most med uporabnikom VPN in krajevnim omrežjem (Bridging). Pri tem načinu prejmejo vsi VPN uporabniki IP naslov iz razpona IP številk krajevnega omrežja. Prav tako imajo vsi uporabniki dostop do vseh virov v omrežju, enako kot če bi bili priklopljeni fizično. V primerjavi z usmerjeno povezavo je pri vzpostavitvi mostu povezava manj učinkovita, saj se teže prilagaja večjemu številu uporabnikov in je bolj podvržena IP konfliktom. Zanjo je značilno tudi to, da je teže omejevati dostopnost do virov na ravni posameznega uporabnika.

Drug pomemben vidik varnosti pri vzpostavitvi VPN omrežja je avtentikacija oz. prijava. To je proces, v katerem se strani v povezovanju prepričata, da sta to, kar trdita, da sta. Najbolj znan način je vpis uporabniškega imena in gesla. Omenjeno metodo podpira tudi OpenVPN, vendar je z vidika varnosti slaba, saj je podvržena napadom Man-in-the-middle. Bolj varna je metoda uporabe statičnega ključa. Pri tem prejme vsak uporabnik enak ključ, ki ga uporabi za zaklepanje/odklepanje poslanega/prejetega sporočila. Pri tem moramo paziti, da uporabniki prejmejo ključe prek varne povezave. Če pride do razkritja ključa, se mora ta izdelati na novo in poslati vsem uporabnikom. Tretja, najbolj varna oblika avtentikacije je s certifikati. Ta metoda deluje na podlagi javnega in zasebnega ključa. Strežnik in uporabniki imajo vsak svoj lasten certifikat. Strežnik dovoli povezavo le, če je certifikat pravilen. Uporabnik prav tako avtenticira strežnikov certifikat. Če je na obeh straneh avtentikacija uspela, se povezava vzpostavi. Za zagotovitev še večje varnosti pa lahko certifikat skupaj z zasebnim ključem hranimo na pametni kartici, saj OpenVPN podpira knjižnice Crypto-API oz. standard PKCS #11. Pri izvajanju metod avtentikacije program uporablja algoritme iz knjižnic OpenSSL.

Okno stanja prikazuje stanje povezave.

Kot lahko vidimo iz zgoraj opisanega, nam OpenVPN omogoča veliko različnih nastavitev. Tako lahko vzpostavimo omrežje VPN, ki popolnoma ustreza določenim potrebam. Po drugi strani pa je ravno zaradi veliko različnih možnosti teže nastaviti program tako, kot želimo. Še posebej bodo imeli težave z nastavljanjem uporabniki, ki so vajeni grafičnih uporabniških vmesnikov in čarovnikov. Res je, da je na voljo neki grafični vmesnik, vendar je omejen le na osnovne ukaze, kot so vzpostavitev povezave in prekinitev. Vse drugo moramo storiti sami ob pomoči nastavitvenih datotek, ki jih program ob zagonu prebere. Prav zato bomo opisali postopek enostavne nastavitve sistema v primeru, ko želimo vzpostaviti varno povezavo med dvema računalnikoma (en uporabnik VPN in en strežnik). Pri tem smo za prenos podatkov uporabili protokol UDP in usmerjeno povezavo (Routing), za avtentikacijo pa statični ključ.

OpenVPN na usmerjevalniku

Podprt je tudi bolj "grafični" WRT - operacijski sistem DDWRT. Ta ima v osnovi le nekaj možnosti prepuščanja prometa VPN, z OpenVPN mu lahko dodamo še vse kaj več.

OpenVPN lahko namestimo in uporabljamo tudi z usmerjevalnikom, ki ga imamo. Seveda je pogoj, da je mogoče na usmerjevalnik namestiti odprtokodni namenski sistem OpenWRT (npr. na usmerjevalnike serije WRT54G znamke Linksys), ki temelji na operacijskem sistemu Linux. Namen OpenWRT je sprememba WLAN usmerjevalnika tako zelo, da omogoča dodajanje funkcij, ki prvotno s strani izdelovalca sploh niso bile mišljene. Funkcije dodajamo enostavno prek namestitvenih paketov, to velja tudi za OpenVPN. Vendar kljub temu ni vse tako enostavno, kot se sprva bere. Največja težava je v procesorski moči usmerjevalnika, saj ne bo zmogel več kot 1 ali 2 povezavi hkrati. Vse je odvisno od pretoka, ki ga želimo doseči, saj se lahko zgodi, da se bo ta zelo zmanjšal.

Namestitev paketa OpenVPN je enostavna, prek ukazne vrstice. Po vnosu ustreznega ukaza se usmerjevalnik poveže v internet, prenese primerni paket in ga namesti. Nato vnesemo potrebne nastavitve v požarni zid in oblikujemo primerne ključe. Seveda je vse odvisno od tega, za kakšen namen bomo OpenVPN uporabljali. Poleg običajnega povezovanja zunanjih uporabnikov v krajevno omrežje lahko npr. uporabimo OpenVPN tudi za varovanje naše komunikacije WLAN. Vendar - naj še enkrat opozorimo, da se bo zaradi procesorske moči usmerjevalnika pretok zmanjšal ...

Zgled

Program OpenVPN smo prenesli z uradne spletne strani in ga namestili. Postopek nameščanja je potekal brez težav, saj namestitveni program stori vse korake samodejno. Med nameščanjem preveri tudi, ali je na voljo starejša različica programa, ki jo odstrani. Po uspešni namestitvi smo preverili, ali imamo v računalniku, ki je sprejel povezavo, odprta vrata 1194/UDP. V našem primeru smo predpostavili, da bo imel strežnik dodeljeno številko 10.1.0.1 in uporabnik 10.1.0.2. Najprej smo izdelali statični ključ in ga prenesli v oba računalnika. Postopek izdelave je naslednji.

Odpremo terminalsko okno Command Prompt. Z ukazom cd se pomaknemo v mapo, v kateri je nameščen program OpenVPN (če ste pustili med namestitvijo vse privzeto, je na "C:\Program Files\OpenVPN\bin"). Nato vnesemo ukaz

openvpn --genkey --secret static.key

Ta nam izdela statični ključ in ga shrani v datoteko static.key. Tega nato prenesemo v oba računalnika, v mapo, v kateri je nastavitvena datoteka. Gre za običajno besedilno s končnico *.ovpn. V računalniku, ki bo rabil kot strežnik, ustvarimo naslednjo nastavitveno datoteko:

dev tun

ifconfig 10.1.0.1 10.1.0.2

secret static.key

V računalniku, ki bo rabil za povezovanje na strežnik, pa ustvarimo naslednjo datoteko:

remote IP_STREZNIKA

dev tun

ifconfig 10.1.0.2 10.1.0.1

secret static.key

Na koncu nam preostane le še to, da OpenVPN zaženemo z namestitveno datoteko. To storimo tako, da se postavimo z mišjim kazalcem nad nastavitveno datoteko, pritisnemo na desni gumb in z menuja izberemo "Start OpenVPN on this config file".

OpenView je zmogljiv program, ki deluje na večini operacijskih sistemov. Vendar pa so nastavitve za običajne uporabnike, še posebej tiste, vajene uporabniških vmesnikov iz okenskih okolij, precej zahtevne.

OpenVPN

Kaj: Program za vzpostavitev navideznega zasebnega omrežja.

Spletna stran: www.openvpn.net.

Cena: Brezplačen.

Za: Zmogljivost, podprta je večina operacijskih sistemov.

Proti: Zahtevna konfiguracija sistema.

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!
Prijava

ph

Komentirajo lahko le prijavljeni uporabniki