VPN mreže - OpenVPN i IPSEC

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Sadržaj


Uvod

Srednji i veliki poslovni sustavi, distribuirane (dislocirane) strukture oduvijek su imali potrebu da na brz, siguran i pouzdan način omoguće komunikaciju i općenito prijenos podataka između svojih organizacijskih jedinica.

Mnoga poduzeća danas imaju poslovnice na nekoliko lokacija unutar jedne države, regije, kontinenta ili globalno. Ova komunikacija se najranije ostvarivala putem obične pošte, telefona i telefaksa. Kako je vrijeme odmicalo, a poduzeća postajala sve veća i složenija, ovakav način razmjene informacija više nije zadovoljavao njihove potrebe, kako zbog svoje sporosti, nedostatka fleksibilnosti ali i niske razine sigurnosti.

Potreba za međusobnim povezivanjem pojedinih lokalnih mreža u jedinicama poduzeća u početku je zadovoljena tzv. zakupljenim vodovima (eng. leased line), koji su izravnom fizičkom vezom spajali LAN-ove (eng. Local Area Network, lokalna mreža) u WAN-ove (eng. Wide Area Network, mreža širokog područja/raspona).

WAN mreža za poduzeća ima očite prednosti u vidu pouzdanosti, sigurnosti i performansi, u odnosu na komunikaciju javnim mrežama poput Interneta. Cijena zakupa takvih vodova je varirala, ovisno o tipu veze (ISDN - eng. Integrated Services Digital Network, optički kabeli itd.) i udaljenosti između lokacija ali je u pravilu bila prilično visoka. K tome, vremenom je organizacijska struktura većine poslovnih sustava postajala sve manje rigidna, sve veći broj zaposlenika je postajao vrlo mobilan i sve je manje bio vezan za poslovni prostor.[How VPN works, str. 1]

Ovaj dio radne snage sve se češće nalazio u situacijama kada ima potrebu povezati se s informacijskim resursima poduzeća, a nije u stanju to učiniti spomenutim zakupljenim fizičkim vodovima.

--Matej Divković 20:17, 28. prosinca 2011. (CET)

VPN mreže

VPN (eng. Virtual Private Network) je privatna mreža koja je temeljena na javnoj telekomunikacijskoj infrastrukturi, najčešće onoj koju nudi Internet. Primjer jedne takve mreže možete vidjeti na slici 2.1.

Slika 2.1. VPN mreža [1]

Ove veze su virtualne, što znači da se ne radi o direktnim fizičkim vezama, već se one ostvaruju odgovarajućim usmjeravanjem mrežnog prometa preko Interneta, s jedne na drugu stranu virtualne mreže. Drugi dio kratice VPN se odnosi na privatnost, što znači da samo čvorovi koji su dio VPN mreže smiju imati uvid u sadržaj koji se njome prenosi. To se ostvaruje primjenom raznih kriptografskih tehnika, o kojima ćemo nešto više reći kasnije.

Ponekad se za VPN mreže koristi analogija otoka, ako lokalne mreže poduzeća promatramo kao otoke, a Internet kao more između njih. U tom slučaju, običnu komunikaciju Internetom možemo shvatiti kao transport brodom između otoka (lokalne mreže centrale i lokalne mreže poslovnice ili zaposlenika).

Očito je da ovo nije optimalno rješenje, jer komunikacija može biti narušena raznim vanjskim utjecajima, a potencijalni napadač može uz minimalan trud dobiti uvid u ono što se prenosi. S druge strane, može se donijeti odluka izgradnje trajne veze između otoka, u obliku mostova (već spomenuti zakupljeni vodovi).

Takvi mostovi pružaju višu razinu privatnosti, sigurnosti i pouzdanosti prijenosa. Međutim, njihova izgradnja i održavanje su dugoročno neisplativi.

Promatrane u ovom kontekstu, VPN mreže se mogu shvatiti kao podmornice. One omogućuju transport između pojedinih lokalnih mreža i korisnika preko Interneta ali ipak zadržavaju svojstvo sigurnosti i privatnosti. VPN mreže su i znatno fleksibilnije od zakupljenih vodova. Njihova se fleksibilnost očituje u tome da nije potrebna direktna veza između privatnih lokalnih mreža ili zaposlenika, a to znači tri stvari:

--Matej Divković 23:51, 2. siječnja 2012. (CET)

Bitne značajke

S obzirom na činjenicu da se privatni podaci prenose javnom mrežom, povjerljivost podataka je ključna, a postiže se uz pomoć enkripcije. Više o enkripciji ćemo reći u pregledu protokola ali i u analizi dva protokola iz naslova teme.
Enkripcijom podataka koje šaljemo javnom mrežom nastojimo osigurati povjerljivost, no jednako je važno provjeriti integritet podataka, odnosno utvrditi jesu li oni u prijenosu možda izmijenjeni.
Primatelj VPN poruka mora biti u stanju pouzdano utvrditi identitet pošiljatelja, kako bi se spriječio čitav niz napada koji se temelje na lažnom predstavljanju pošiljatelja.
Replay paketa (eng. packet replay i replay attack) se odnosi na čin presretanja, kopiranja i ponovnog slanja izvornog paketa (općenito, jedinice prijenosa) od treće strane. Ovo je također oblik lažnog predstavljanja (eng. identity spoofing). Može ga se suzbiti odgovarajućim mehanizmima nekih VPN protokola.
Najčešće spominjana značajka VPN mreža, tuneliranje, koristi se za prikrivanje identiteta uređaja s kojeg potiče poruka. Pri tome se misli na prikrivanje od treće strane, dok će primatelj postupkom dekapsulacije (eng. data decapsulation) doći do izvornog paketa unutar tunela. Više o tuneliranju ćemo reći u jednom od sljedećih odlomaka.[How VPN works, str. 4]

--Matej Divković 15:02, 2. siječnja 2012. (CET)

Koncept povezivanja

VPN mreže se dijele u dva osnovna tipa, koji se često kombiniraju, tzv. mreže udaljenog pristupa i mreže između lokacija.

Remote-access VPN

VPN mreže udaljenog pristupa (eng. Remote Access VPNs ili Virtual Private Dial-up Network) karakteristične su za poduzeća koja imaju centralnu lokalnu mrežu i velik broj mobilnih zaposlenika s potrebom povezivanja na nju.

Pojedini korisnik na ovaj način može uspostaviti sigurnu vezu s udaljenom računalnom mrežom i pristupiti informacijskom sadržaju kao da je direktno spojen na poslužitelj.

Za rad ovakve mreže su potrebne dvije komponente, od kojih je prva poslužitelj za upravljanje pristupom mreži (eng. Network Access Server - NAS), odnosno poslužitelj za udaljeni pristup (eng. Remote Access Server - RAS).

NAS je jedinstvena točka pristupa mreži, a može se pojaviti u obliku zasebnog poslužitelja kojemu je to jedina uloga ili kao jedna od nekoliko aplikacija koje se vrte na nekom poslužitelju. Korisnik se preko Interneta spaja upravo na NAS kako bi koristio uslugu VPN-a, a prije nego ga se propusti mora dati na uvid valjane pristupne podatke. Korisnička se autentikacija provodi kao dio samog NAS-a ili korištenjem usluge specijaliziranog autentikacijskog poslužitelja u mreži.

Druga komponenta potrebna za udaljeni pristup je klijentski softver, a zadaća tog softvera je da uspostavi i održava vezu s VPN-om. Korisnici ovdje mogu koristiti rješenja integrirana u neke operacijske sustave ali ovisno o zahtjevima samog VPN-a može biti potrebno upogoniti za to specijaliziranu aplikaciju. U tom slučaju, ovakve se aplikacije brinu za enkripciju i održavanje sigurnosti veze.

U slučaju velikih poduzeća, koja imaju uspostavljene specijalizirane IT odjele, obično se koristi vlastita infrastruktura, dok je za mala i srednja poduzeća češće korištenje usluga vanjskog suradnika, koji pokreće i održava NAS za poduzeće.[12]

--Matej Divković 20:17, 28. prosinca 2011. (CET)

Site-to-site VPN

U slučaju poduzeća koja se sastoje od većeg broja dislociranih poslovnica, koje imaju potrebu za međusobnom razmjenom informacija ali i razmjenom s centralom, koristi se ovaj (eng. Site-to-site) oblik VPN mreže. Ovdje se još može uočiti razlika između dva načina korištenja ovakve mreže, u svrhu ostvarenja ekstraneta (eng. extranet) i intraneta. Intranet je nešto češći, dok se ekstranet odnosi na komunikaciju s poslovnim partnerom, sigurnim kanalom kojeg omogućuje VPN.

Site-to-site i remote access VPN mreže unatoč različitim namjenama često koriste neke zajedničke softverske i hardverske komponente za realizaciju svoje funkcije. Razlika je u tome što bi site-to-site trebao pomoći u tome da se izbjegne potreba za pokretanjem klijentskog VPN softvera na svakom računalu u mreži, što se ostvaruje korištenjem specijalizirane VPN mrežne opreme.[13]

--Matej Divković 20:34, 28. prosinca 2011. (CET)

Tuneliranje

U svrhu ostvarenja željene razine privatnosti, u VPN mrežama se koristi enkripcija sadržaja koji se njima prenosi. Svi podaci s jedne strane se najprije kriptiraju, zatim se šalju, a na drugoj strani se moraju dekriptirati kako bi im se moglo pristupiti. Ova enkripcija štiti sadržaj od nesigurne okoline, poput tunela, pa se zato virtualne privatne mreže najčešće nazivaju VPN tunelima, a VPN tehnologija se općenito naziva tuneliranje. Pri tome valja naglasiti da se pojedine metode enkripcije razlikuju i jedan su od temelja klasifikacije različitih VPN mreža. Tuneliranje ne mora uvijek uključivati enkripciju, kao što ćemo vidjeti kod GRE protokola, ali je ona itekako poželjna.

U praksi, VPN mreža se ostvaruje između dva usmjerivača (eng. router) preko kojih se pristupa Internetu, opremljenih vatrozidom (eng. firewall) i odgovarajućim VPN softverom. Konfiguracija ovih komponenata mora biti takva da omogućuje uspostavu VPN veze između klijentskih aplikacija, da vatrozid dopušta takav promet, a podaci koji se prenose moraju biti kriptirani. Naravno, svi članovi ove VPN mreže moraju poznavati ključ enkripcije kako bi mogli čitati podatke.[Feilner, 2006, str. 11]

--Matej Divković 23:51, 2. siječnja 2012. (CET)

OSI i Internet model u kontekstu VPN mreža

Slika 2.2. Usporedni pregled OSI i TCP modela [2]

Na nekoliko kolegija tijekom studija (Informatika 2, Mreže računala 1, Mreže računala 2 itd.) govorili smo o protokolima i modelima slojeva koji čine temelj mrežne komunikacije danas. Mrežni protokoli, vrlo općenito, su pravila komunikacije između čitavog niza elemenata mreže, bilo hardverskih ili softverskih, a omogućuju da se ta komunikacija odvija na pravilan i predvidiv način.[Kurose, Ross, 2010, str. 7]

Ovisno o tome na kojoj razini komunikacije se koriste, mrežni protokoli se dijele u slojeve. Dva su najpoznatija sustava uslojavanja, OSI (eng. Open Systems Interconnection) koji je dio ISO standarda, dok je TCP/IP model postao de facto standard,[Kurose, Ross, 2010, str. 54] ponajprije zahvaljujući tome što je primijenjen u preteči Interneta, ARPANET-u. Usporedni prikaz u grafičkom obliku možete vidjeti na slici 2.2.

OSI model ima 7 slojeva, a to su:

  1. Fizički sloj - komunikacija signalima na razini hardvera, definicije sučelja, vodova, napona i slično
  2. Sloj podatkovne veze - izravna komunikacija između mrežnih uređaja koji se nalaze na istom vodu, odnosno susjednih čvorova
  3. Mrežni sloj - zadužen za usmjeravanje, mrežno adresiranje, upravljanje pogreškama
  4. Transportni sloj - komunikacija i oporavak od pogrešaka s kraja na kraj (eng. end-to-end)
  5. Sloj sesije - uspostavlja komunikaciju između aplikativnih procesa krajnjeg korisnika
  6. Prezentacijski sloj - omogućuje prijelaz između mrežnih formata prijenosa i formata prikaza koje koriste korisničke aplikacije (i obrnuto)
  7. Aplikacijski sloj - protokoli specifični za pojedine tipove aplikacija

Radi se o hijerarhijskom ustroju, pa tako svaki sloj gradi na funkcionalnosti neposredno nižeg, bez da se te funkcionalnosti dupliciraju. U principu, to znači da se komunikacija na najvišem sloju, onom aplikacijskom, može ostvariti samo ako je uspješno ostvarena komunikacija na svim nižim slojevima.

TCP/IP model je srodan OSI modelu, no ipak ponešto različit. On ima 4 sloja, od kojih neki objedinjuju više slojeva OSI modela ili pojedine aspekte nekog sloja OSI modela.

Radi se o sljedeća 4 sloja:

  1. Sloj veze - objedinjuje prvi i drugi sloj OSI modela
  2. Sloj Interneta - u grubim crtama može ga se usporediti s mrežnim slojem OSI modela
  3. Transportni sloj - čine ga protokoli kao što su TCP (eng. Transmission Control Protocol) i UDP (User Datagram Protocol), a pružaju uslugu komunikacije s kraja na kraj aplikacijama
  4. Aplikacijski sloj - može se shvatiti kao objedinjavanje aplikacijskog, prezentacijskog i sloja sesije iz OSI modela, a uključuje protokole poput DNS (eng. Domain Name System), FTP (eng. File Transfer Protocol), HTTP (eng. HyperText Transfer Protocol), IRC (eng. Internet Relay Chat) itd.[The TCP/IP Protocol Suite Tutorial, str. 3]
Slika 2.3. Jednostavan primjer VPN paketa

Jedinica mrežne komunikacije koja nas zanima, datagram, sastoji se dva dijela, korisnih podataka (eng. data payload) i zaglavlja (eng. header). Zaglavlje definira neke bitne značajke datagrama, kako bi se on mogao uspješno prenijeti mrežom, a to su adrese pošiljatelja i primatelja te opći podaci o protokolu. Datagram je vrlo poopćen naziv za ovu jedinicu komunikacije, u lokalnim Ethernet mrežama datagrame nazivamo okvirima (eng. frames), a u slučaju Interneta najčešće govorimo o paketima (eng packets).

VPN mreže svoje funkcije ostvaruju tako da Internetske pakete ili okvire Ethernet mreža stavljaju (enkapsuliraju) u novu jedinicu prijenosa, odnosno novi paket. VPN softverska rješenja uzimaju mrežne datagrame, kriptiraju ih u cijelosti - zajedno sa zaglavljem, dodaju novo zaglavlje s podacima o VPN mreži (tunelu) kojem paket pripada, na taj način ih enkapsulirajući u novi paket koji će moći otvoriti samo za to autorizirana strana, odnosno onaj član te VPN mreže kojemu je paket namijenjen. Pojednostavljen primjer izgleda jednog VPN paketa možete vidjeti na slici 2.3.

Kada govorimo o enkapsulaciji, bitno je spomenuti i tzv. overhead, kojeg neću prevoditi. Overhead je onaj dio datagrama koji ne spada pod korisne podatke, odnosno krajnju poruku koju zapravo želimo poslati drugoj strani. Ovdje spadaju sva zaglavlja i općenito metapodaci (eng. metadata) koji se koriste jedino za ostvarenje prijenosa. U navedenim modelima slojeva, protokol svakog sloja na korisne podatke dodaje svoje metapodatke koji postupno povećavaju overhead. Ono što višem sloju predstavlja korisne podatke su zapravo zaglavlje i korisni podaci nižeg sloja. U principu, uvijek se nastoji minimizirati NEPOTREBAN overhead, ali definicija riječi "potrebno" ili "poželjno" ovisi o kontekstu. Overhead je često u direktnoj korelaciji s kvalitetom usluge koju neki protokol pruža, pa tako veći overhead protokoli opravdavaju svojom pouzdanošću ili sigurnošću, koje nam nekada trebaju ali nekada i ne. VPN softver također dodaje svoje zaglavlje i metapodatke, od kojih se znatan dio odnosi na enkripciju. Korisnici VPN mreža često moraju odlučiti, odnosno prioritetizirati sigurnost ili brzinu prijenosa.[Feilner, 2006, str. 12]

--Matej Divković 21:31, 30. prosinca 2011. (CET)

Pregled protokola i tehnologija

Ovdje ću dati kratak pregled protokola koji se koriste na pojedinim slojevima OSI modela, dok ćemo kasnije napraviti detaljnu analizu dva protokola iz naslova teme, OpenVPN i IPsec.

Generic Routing Encapsulation

Slika 2.4. Primjer IP paketa enkapsuliranog u drugom IP paketu pomoću GRE-a [3]

Generic Routing Encapsulation, odnosno GRE, je jedan od prvih mehanizama za tuneliranje, koji je započeo svoj život kao preporuka IETF-a (eng. Internet Engineering Task Force),[RFC 1701][RFC 1702] a iz kojeg je kasnije tvrtka Cisco razvila kompletan protokol. GRE je u stanju enkapsulirati čitav niz protokola mrežnog sloja OSI modela, kako bi ih prenio od točke do točke (eng. point-to-point). Implementacija ovog mehanizma je prilično česta u mnogim VPN protokolima.

GRE radi na jednostavnom principu, novi paket nastaje tako da se stari enkapsulira dodavanjem dva nova zaglavlja, zaglavlja dostave (eng. delivery header) i zaglavlja protokola, odnosno GRE zaglavlja (eng. GRE header), pri čemu se ne vrši enkripcija. Na ovaj način se postiže visoka razina transparencije, jer usmjerivači mogu donositi odluke o propuštanju ovakvog prometa jednostavnim pregledom sadržaja GRE paketa, čime se omogućuje davanje prioriteta određenim aplikacijama.[Feilner, 2006, str. 13] Slika 2.4. prikazuje primjer enkapsulacije jednog IP paketa unutar drugog IP paketa, pomoću GRE-a.

--Matej Divković 23:50, 2. siječnja 2012. (CET)

Protokoli na OSI sloju 2

Enkapsulacija na razini OSI sloja 2 omogućuje prijenos datagrama koji ne moraju nužno pripadati IP protokolu, već bilo kojem protokolu mrežnog sloja. Slijedi pregled 4 protokola VPN mreža koji se koriste na sloju 2, a uključuju enkripciju i autentikaciju.

--Matej Divković 23:51, 2. siječnja 2012. (CET)

Point-to-Point Tunneling Protocol

Slika 2.5. Struktura PPTP paketa[4]

Protokol za tuneliranje od točke do točke (eng. Point-to-Point Tunneling Protocol ili jednostavno PPTP) jedna je od metoda implementacije VPN mreža, razvijena prvenstveno od strane Microsoft-a (u ostatku teksta MS).[14] Podrška za PPTP postoji u svim MS-ovim operacijskim sustavima od Windows 95 nadalje. Osnovna specifikacija protokola ne pokriva stavke enkripcije i autentikacije korisnika, već to prepušta PPP (eng. Point To Point, u TCP/IP sloju veze) protokolu kojeg prenosi svojim tunelima. Implementacija PPTP-a koja dolazi s verzijama MS Windows operacijskog sustava ipak uključuje određene mehanizme enkripcije i korisničke autentikacije.

PPTP uspostavlja dvije paralelene veze između VPN klijenta i poslužitelja. Najprije kontrolnu TCP vezu, na TCP portu 1723, a zatim i drugu vezu, GRE tunel prema istom čvoru. GRE paketi enkapsuliraju PPP pakete, koji onda mogu prenositi pakete protokola Internet sloja TCP/IP modela, najčešće IP protokol.[RFC 2637] Kako ovo zapravo izgleda možete vidjeti na slici 2.5.

Što se tiče sigurnosnih mjera, MS PPTP podržava autentikaciju, kontrolu pristupa, enkripciju podataka i filtriranje paketa. Autentikacija je realizirana kroz CHAP (eng. Challenge Handshake Authentication Protocol), MS-CHAP (eng. Microsoft CHAP) ili PAP (eng. Password Authentication Protocol). Kontrola pristupa je riješena kroz korisnička dopuštenja definirana u NTFS datotečnom sustavu, kojeg Microsoft preporučuje za podatke kojima pristupaju PPTP kiljenti. MS PPTP koristi MPPE enkripciju (eng. Microsoft Point-to-Point Encryption), koja je zapravo derivat RSA enkripcije (eng. Rivest Shamir Adleman), a podržava 40, 56 i 128-bitne ključeve sesije. Ključ enkripcije se temelji na korisničkoj lozinki, a sama enkripcija se provodi na podatkovnom dijelu PPP paketa koji se prenosi VPN tunelom. Filtriranje paketa se odnosi na mogućnost promjene postavki MS PPTP poslužitelja na način da on prihvaća samo promet u obliku PPTP paketa autenticiranih korisnika.[15]

PPTP nije temeljen na standardu, niti je ratificiran od strane IETF-a. Kao takav, bio je na meti mnogih kritika zbog sigurnosnih propusta. Iako je od incijalnog izdanja MS poboljšao svoju implementaciju, stručnjaci za računalnu sigurnost, kao što je Bruce Scheiner,[16][17] preporučuju korištenje drugih rješenja, prvenstveno IPsec i L2TP. Osim na MS operacijskim sustavima, implementacije PPTP protokola su dostupne i na Linux,[18] Mac OS i Android platformama.[19][20]

--Matej Divković 23:33, 2. siječnja 2012. (CET)

Layer 2 Forwarding Protocol

L2F (eng. Layer 2 Forwarding Protocol) se koristi za uspostavu virtualne point-to-point veze između udaljenog korisnika i privatne mreže. Za razliku od PPTP-a, L2F nije toliko ovisan o IP-u i kompatibilan je s drugim protkolima prijenosa sloja podatkovne veze, kao što su Frame Relay i ATM (eng. Asynchronous Transfer Mode). Za autentikaciju koristi mehanizme PPP-a ali uključuje podršku za TACACS+ (eng. Terminal Access Controller Access Control System Plus) i RADIUS (eng. Remote Authentication Dial-In User Service) autentikaciju. [RFC 2341]

L2F je razvila tvrtka Cisco, a nastao je gotovo paralelno s PPTP protokolom, s kojim dijeli mnoge značajke, ali proširuje autentikaciju navedenim mogućnostima i dozvoljava istovremeno uspostavljanje i održavanje većeg broja tunela.

--Matej Divković 23:33, 2. siječnja 2012. (CET)

Layer 2 Tunneling Protocol

Slika 2.6. Princip rada L2TP protokola[5]

L2TP (eng. Layer 2 Tunneling Protocol) protokol za tuneliranje je nastao na temeljima triju već spomenutih protokola, PPP, PPTP i L2F, te je predložen kao IETF standard 1999. godine. U svojoj inicijalnoj definiciji nije pokrivao pitanja enkripcije i povjerljivosti podataka, već je taj zadatak prepuštao protokolima koje prenosi.[RFC 2661]

Paket ovog protokola u svojoj cjelini se prenosi unutar UDP datagrama, a sadržaj paketa su obično PPP datagrami. Što se tiče mehanizama za ostvarenje povjerljivosti i autentikacije, obično se u kombinaciji s ovim protokolom koristi IPsec, o kojemu ćemo više reći kasnije.

Princip rada L2TP-a se temelji na komunikaciji dviju strana, odnosno krajnjih točaka tunela. Strana koja pokreće uspostavljanje tunela se zove L2TP koncentrator pristupa (eng. L2TP Access Concentrator ili LAC), dok L2TP poslužitelj (eng. L2TP Network Server ili LNS) čeka da se prema njemu uspostave tuneli. Nakon što je tunel uspješno uspostavljen, unutar njega je moguć obostran promet raznih protokola viših slojeva. Unutar svakog tunela moguće je uspostavljanje većeg broja sesija ili poziva (eng. session ili call) za svaki protokol višeg sloja koji se tunelom prenosi, na taj način efektivno stvarajući veći broj virtualnih privatnih mreža u jednom tunelu. Za razliku od uspostave tunela, uspostavu sesije mogu pokrenuti obje strane.

Slično kao i kod spomenutog PPTP protokola, L2TP poznaje dvije osnovne kategorije paketa, kontrolne i podatkovne. Dok se za kontrolne pakete jamči pouzdanost prijenosa, kod podatkovnih to nije slučaj, već se po potrebi od protokola koji se prenose L2TP-om zahtijeva pružanje pouzdanosti.[Layer 2 Tunnel Protocol, str. 8][RFC 2661]

--Matej Divković 21:38, 2. siječnja 2012. (CET)

L2TP/IPsec

Ova kombinacija protokola se često naziva i "L2TP preko IPsec-a", a svrha joj je da ujedini tuneliranje L2TP-a s naprednim sigurnosnim značajkama IPsec-a. Uspostava ovakve VPN mreže započinje tako da se dvije krajnje točke tunela dogovore oko tzv. security association, što je zapravo skup parametara kao što su algoritam kriptografije, ključ enkripcije i slična bitna obilježja veze. U slučaju IPsec-a to se vrši uz pomoć IKE protokola (eng. Internet Key Exchange), koristeći zajedničku lozinku, javne ključeve, certifikate i slično. U sljedećem koraku uspostavlja se ESP (eng. Encapsulating Security Payload, potprotokol IPsec-a) komunikacija između strana, u transportnom modu rada (IPsec ima dva moda rada, koje ćemo detaljnije spomenuti i objasniti kasnije). Ovo je sve što je potrebno da se uspostavi sigurni kanal, nakon čega treba uspostaviti i L2TP tunel. Parametri samog tunela se dogovaraju unutar već uspostavljene enkripcije IPsec-a.

Po završetku ovog postupka, svaki L2TP paket koji dvije strane u komunikaciji razmjenjuju se najprije sprema i kriptira unutar IPsec paketa. Na taj način sprečava se neovlašteni pristup bilo kakvim informacijama o VPN-u, a istovremeno se zaobilazi problem kojeg je izvorno imao L2TP, s pitanjem otvorenosti UDP porta 1701 u vatrozidovima. Pošto su L2TP paketi ovdje unutar IPsec paketa i kriptirani, njihov port postaje značajan tek kada krajnji uređaj već primi i dekriptira IPsec paket, odnosno kada je već prošao kroz vatrozid.[RFC 3193][21]

--Matej Divković 22:13, 2. siječnja 2012. (CET)

Protokoli na OSI sloju 3

IPsec je vrlo raširena tehnologija tuneliranja i uspostave virtualnih privatnih mreža općenito. Zapravo se radi o skupu protokola, standarda i mehanizama. Razvijen je kao standard za internetsku sigurnost sloja 3, od strane IETF-a još davne 1995. godine, te je obnavljan i nadopunjavan novim definicijama, najprije 1998., zatim 2005. i 2010. godine. [RFC 1825][RFC 2401][RFC 4301][RFC 6040].

IPsec se koristi za enkapsulaciju protokola od sloja Interneta naviše, nije u stanju enkapsulirati protokole nižih slojeva, a NAT (eng. Network Address Translation) je moguć jedino uz određena ograničenja. IPsec može koristiti nekoliko različitih mehanizama enkripcije, protokole autentikacije i ostale sigurnosne postavke. Softver koji implementira IPsec kao VPN rješenje je vrlo raširen. Općenito je dobro podržan, kako na softverskoj tako i na hardverskoj strani, što je jedna od glavnih prednosti ove tehnologije.

IPsec može raditi u dva moda, tunelskom i transportnom. Tunelski mod (eng. tunnel mode), kao što mu ime govori, uspostavlja tunel, na način da kriptira kompletnu jedinicu prijenosa (eng. transmission unit) protokola kojeg prenosi, zajedno sa zaglavljem, čime se uspostavlja tunel u kojem su zaštićeni i metapodaci veze. U transportnom modu (eng. transport mode) kriptira se samo podatkovni dio gostujućeg protokola, čime se znatno smanjuje overhead, ali zapravo ne postoji tunel, jer su bilo kojem presretaču dostupni podaci o primatelju i pošiljatelju (narušena privatnost). Ipak, povjerljivost je zadržana, jer podaci koji su predmet komunikacije su kriptirani i nerespoznatljivi napadaču.[Feilner, 2006, str. 14]

Više o ovoj tehnologiji možete pročitati u zasebnom odlomku.

--Matej Divković 22:49, 2. siječnja 2012. (CET)

Protokoli na OSI sloju 4

Osim na nižim slojevima, VPN tunele je moguće uspostaviti i samo na aplikacijskom sloju, što se obično čini uz pomoć SSL (eng. Secure Sockets Layer) i TSL (eng. Transport Layer Security) protokola. Ovi protokli primjenjuju asimetričnu kriptografiju za razmjenu ključeva, simetričnu enkripciju za ostvarenje privatnosti i autentikacijske kodove za osiguranje integriteta poruka.[Kurose, Ross, 2010, str. 728]

Korištenjem ovoga koncepta omogućava se pristup VPN mreži, npr. neke tvrtke, preko veze između VPN klijentskog softvera i VPN poslužitelja, na sličan način kako sigurnu vezu prema poslužiteljima uspostavljaju web preglednici. Korištenjem sigurne veze između SSL/TLS VPN preglednika i poslužitelja korisnici s mrežom mogu povezati mrežne diskove i pristupiti servisima udaljene mreže. SSL/TLS mehanizmi enkripcije mrežnog prometa su se pokazali pouzdanima, a uz to ih se kontinuirano testira i nadograđuje.[Feilner, 2006, str. 15]

Sustavi poput OpenVPN-a, kojeg ćemo detaljnije analizirati nakon ovog pregleda, vrše tuneliranje kroz SSL i TLS protokole.

--Matej Divković 00:50, 29. prosinca 2011. (CET)

IPsec

Slika 2.7. Security [6]

IP security protokol, bolje poznat kao IPsec, je skup protokola koji pružaju sigurnost na mrežnom (ISO/OSI model) odnosno Internet (TCP/IP model) sloju. Dizajniran je od strane Naval Research Laboratory koji je bio sponzoriran od stranje DARPAe. IPsec zaštićuje komunikaciju putem IP protokola s autentikacijom i šifriranjem svakog IP datagrama komunikacijske veze. Može se koristiti za zaštitu komunikacije između dva računala (engl. host-to-host), između dvije mreže (engl. network-to-network) ili između mreže i računala (engl. network-to-host). IPsec je veoma kompleksan te su dijelovi IPseca opisani u nekoliko RFCa (eng. Request for Comments). Raniji sigurnosni pristupi su unijeli sigurnost na aplikacijskom sloju komunikacijskog modela kao npr. SSH (engl. Secure Shell) ili pak na transportnom sloju - npr. SSL (engl. Secure Socket Layer) i TLS (engl. Transport Layer Security). To je zahtjevalo da aplikacije budu pisane tako da mogu korisiti SSL/TLS. S druge strane, IPsec štiti sav promet generiran od bilo koje aplikacije, tako da aplikacije ne moraju biti posebno dizajnirane da bi mogle koristiti prednosti IPseca. Najveća prednost IPseca je ta što se sigurnost može postići bez da išta mijenjamo na individualnim računalima koja žele koristiti IPsec. IPsec se najviše koristi kod VPN mreža.

Prije nego počnemo s detaljima IPseca, treba prvo objasniti što znači pružiti sigurnost na mrežnom sloju odnosno što je to povjerljivost mrežnog sloja. Mrežni bi sloj pružao povjerljivost, ako bi sav sadržaj koje prenosi IP datagram bio šifriran. To znači da svaki put kad bi računalo htjelo poslati IP datagram, najprije bi šifriralo polje s podacima unutar IP datagrama i tek onda poslalo u mrežu. Podatkovno polje bi moglo biti šifrirano bilo kojom tehnikom šifriranja (simetrična enkripcija ili asimetrična enkripcija), a unutar podatkovnog polja bi se mogao nalaziti TCP segment, UDP segment, ICMP poruka itd.. Postojanjem takvog servisa na mrežnom sloju, svi podaci poslani u mrežu – uključujući e-mail, web stranice, kontrolne poruke, i upravljačke poruke ( kao što su ICMP i SNMP) – bile bi sakrivene od prisluškivanja od strane treće osobe. Dakle takav servis bi pružao određeni „plašt“ za sav Internet promet i svim korisnicima pružio određeni osjećaj sigurnosti.

Osim povjerljivosti, dobro bi bilo da mrežni sloj provjerava i autentičnost poruke. Kad odredišno računalo primi IP datagram sa određenom izvorišnom IP adresom, da može provjeriti da li je stvarno to računalo, čija je izvorišna adresa upisana u IP datagram, poslalo taj IP datagram.

U IPsec skupini protokola postoje dva glavna protokola: Authentication Header (AH) i Encapsulation Security Payload (ESP). AH protokol pruža autentikaciju pošiljatelja poruke i integritet podataka, ali ne pruža povjerljivost tj. sigurnost podataka. ESP protokol pak s druge strane pruža autentikaciju, integritet i povjerljivost podataka. Budući da ESP protokol pruža više servisa, prirodno tome je kompleksniji i zahtjeva više procesorske snage od AH protokola.

U oba AH i ESP protokola, prije nego se šalju ikakvi podaci, pošiljatelj i primatelj se „rukuju“ (engl. handshake) i kreiraju logičku vezu na mrežnom sloju. Ta veza se naziva security association (SA). Prema tome, IPsec transformira tradicionalni mrežni sloj kod kojeg nema stvaranja veze između dviju strana u sloj s logičkim vezama. Ta logička veza je simpleks veza tj. podaci se šalju u samo jednom smjeru. Ukoliko obje strane žele slati podatke tj. datagrame jedna drugoj, tada su potrebne dvije logičke veze tj. SA, svaka za jednu stranu.

Svaka SA je jedinstveno identificirana ovim trima elementima:

Za danu SA (tj. za danu logičku vezu od pošiljatelja odnosno izvorišta do primatelja odnosno odredišta), svaki IPsec datagram će imati specifično polje za SPI (engl. Security Parameter Index), a svaki poslani datagram od SA će imati zapisanu istu SPI vrijednost u tom polju.[22]

--Andbelic 14:29, 5. siječnja 2012. (CET)

Authentication Header (AH) Protocol

Kao što smo već gore spomenuli, AH protokol pruža autentikaciju pošiljatelja poruke i integritet podataka, ali ne pruža povjerljivost tj. sigurnost podataka. Kad određeni pošiljatelj odnosno izvor želi slati jedan ili više datagrama određenom primatelju odnosno odredištu tada se prvo uspostavlja SA s odredištem. Nakon uspostavljene SA veze, izvorište može slati zaštićene datagrame do odredišta. Zaštićeni datagrami uključuju AH zaglavlje koje je dodano u IP datagram između podataka i IP zaglavlja.

Slika 2.8. AH datagram

Prema tome AH zaglavlje proširuje originalno podatkovno polje koje se tada, tako prošireno, inkapsulira u standardni IP datagram. Unutar IP zaglavlja postoji protokol polje (protokol polje služi da se zna odrediti kojem protokolu višeg sloja – npr. TCP, UDP ili ICMP - mrežni sloj mora predati podatke koji se nalaze u podatkovnom polju) u koje se upisuje vrijednost 51 koja označava da je datagram proširen AH zaglavljem. Kad odredište primi datagram, pročita vrijednost 51 u protokol polju i obradi ga pomoću AH protokola.

AH zaglavlje sadrži nekoliko polja:

Ima istu ulogu kao što i protokol polje u IP zaglavlju. Označava da li su podaci u podatkovnom polju TCP segment, UDP segment, ili ICMP segment itd. (Protokol polje u IP zaglavlju sada služi da bi označavalo prisustvo AH zaglavlja, znači da se više to polje ne može koristiti za označavanje protokola višeg sloja, pa tu ulogu sad preuzima Next Header polje).
Proizvoljna 32-bitna vrijednost koja u kombinaciji s odredišnom IP adresom i sigurnosnim protokolom, jedinstveno identificira datagrame od SA.
32-bitno polje u koje je zapisani sekvencijalni broj za svaki datagram. Inicijalno je postavljen na 0 prilikom utvrđivanja SA. AH protokol koristi sekvencijalni broj da bi mogao spriječiti playback i man-in-the-middle napade.
Polje varijabilne veličine koje sadrži digitalni potpis za taj datagram. Digitalni potpis je izračunat na temelju originalnog datagrama i time pruža autentikaciju izvorišta i integritet IP datagrama. Digitalni potpis je izračunat pomoću specifičnih algoritma za SA, kao što su MD5 i SHA.

Kad odredište zaprimi IP datagram koji u sebi sadrži AH zaglavlje, ono određuje SA za datagram i tada autenticira datagramov integritet tako da procesira Authentication Data polje.[RFC 2402]

--Andbelic 15:08, 5. siječnja 2012. (CET)

ESP protokol

ESP protokol pruža povjerljivost na mrežnom sloju kao i autentikaciju izvorišta te integritet podataka. Isto kao i kod AH protokola, sve počinje tako da izvorišno računalo uspostavlja SA vezu s odredišnim računalom i tek tada izvorište može sigurno slati IP datagrame odnosno podatke do odredišta.

Sigurnosni datagram je stvoren tako da je originalni datagram proširen zaglavljima i podnožjima koji se inkapsuliraju zajedno s podatkovnim poljem IP datagrama u novo prošireno podatkovno polje IP datagrama. U protokol polje IP zaglavlja upisuje se vrijednost 50 koja označava da je datagram zaštićen IPsecom pomoću protokola ESP. Kad odredište zaprimi taj IP datagram odma može zaključiti da je datagram potrebno obraditi pomoću ESP protokola jer je zapisana vrijednost 50 (Da se radi o AH protokolu tada bi upisana vrijednost bila 51). Kao što je iz slike gore vidljivo originalno podatkovno polje s ESP podnožjem je šifrirano i to pomoću DES-CBC enkripcije. ESP zaglavlje sastoji se od 32-bitnog polja za SPI i 32-bitnog polja za sekvencijalni broj, što je apsolutno isto kao i kod AH protokola. U ESP podnožju je zapisano Next Header polje koje je također potpuno jednako kao i kod AH protokola. Budući da je ESP podnožje s podatkovnim poljem šifrirano, napadač neće moći odrediti koji je protokol na transportnom sloju koristi odnosno kojem protokolu višeg sloja su namijenjeni podaci u podatkovnom polju IP datagrama. ESP autentikacija sadrži polje Authentication Data koje je također ima jednaku funkciju kao i kod AH protokola. [RFC 2406]

Slika 2.9. ESP datagram

--Andbelic 15:08, 5. siječnja 2012. (CET)

Security association (SA)

SA je najjednostavnije rečeno skupina algoritma i parametra (poput ključeva) koji se koriste za šifriranje i autentikaciju podataka u jednom smjeru, no za normalnu dvosmjernu komunikaciju potrebno je uspostaviti dvije SA veze. Za uspješan razvoj IPseca bio je potreban automatiziran način uspostavljanja SA veze i „nabave“ ključeva. Za dobivanje ključa postoje nekoliko protokola.

Kako bi IPsec znao kakvu zaštitu mora pružiti, najprije pročita SPI polje zajedno sa odredišnom IP adresom, koji zajedno jedinstveno identificiraju SA, i tada pomoću tih parametra pogleda u SADB (engl. security association database) o kojoj se SA radi i kakva je zaštita potrebna.

--Andbelic 15:08, 5. siječnja 2012. (CET)

Način rada

IPsec može biti implementiran na dva moguća načina:

Transportni način

Kod transportnog načina implementacije IPseca, komunikacija se odvija samo između dva povezana računala (engl. host-to-host), a zašto je to tako objasnit ćemo sada. Kad je u pitanju transportni način, samo se podaci šifriraju i/ili autenticiraju. IP zaglavlje se ne modificira ni šifrira. „Problem“ je taj što postoji polje Authentication Data koje sadrži digitalni potpis za taj datagram. Digitalni potpis je izračunat na temelju originalnog datagrama i time pruža autentikaciju izvorišta i integritet IP datagrama. Ukolko bi paket morao izaći iz određene mreže tada bi taj paket trebalo promijenit, a shodno tome digitalni potpis više ne bi vrijedio i integritet podataka bi bio narušen. Gore opisan princip rada vrijedi upravo za transportni način.

Tunel način

Kod ovog načina, cijeli se IP datagram šifrira i/ili autenticira te tako obrađen inkapsulira u novi IP datagram s novim IP zaglavljem. Drugim riječima, šifriran IP datagram se stavlja u podatkovno polje novog IP datagrama. Ovaj način se koristi kod kreiranja VPN mreža za komunikaciju između mreža (engl. network-to-network), za komunikaciju između računala i mreže (engl. host-to-network), ali i za komunikaciju između dva računala (engl. host-to-host).[23]

--Andbelic 15:08, 5. siječnja 2012. (CET)

OpenVPN

Slika 2.10. OpenVPN logo[7]

OpenVPN je open source aplikacija objavljena pod GNU GPL licencom koja omogućuje uspostavljanje virtualne privatne mreže. Potkraj 2001. godine aplikaciju je izgradio James Yonan, a sada na aplikaciji rade mnogi developeri budući da je otvorenog koda. Aplikacija je od 2001. godine mnogo napredovala uz brze nadogradnje. Zadnja stabilna verzije aplikacije je 2.2.2 (22.12. 2011.). Aplikacija koristi vlastiti protokol koji je razvijen na SSL/TLS protokolima. Aplikacija pruža mogućnosti udaljenog pristupa, site-to-site VPN-a, Wi-Fi sigurnosti te druge mogućnosti za udaljen pristup privatnim podacima. Dizajn aplikacije je pojednostavljen kako bi bila čim lakša za korištenje jer tvorci smatraju da pojednostavljeni dizajn olakšava uspostavljanje bolje sigurnosti.[24]

Slika 2.11. OpenVPN[8]

Korisnici se u OpenVPN-u mogu autenticirati preko tajnih ključeva koje su prije razmijenili, certifikata ili preko korisničkih imena i lozinki. Kada koristimo OpenVPN u server – klijentskoj konfiguraciji onda on omogućuje da server klijentima izda certifikate za autentikaciju ili izradi digitalni potpis. Aplikacija za sigurnost koristi OpenSSL biblioteku, SSLv3/TLSv1 protokol kao i mnoge druge sigurnosne zaštite. Još neke od mogućnosti su potpora za dinamičke IP adrese i potpora za NAT (eng. Network Address Translation).[25]

Dejan Gubez 21:44, 3. siječnja 2012. (CET)

Arhitektura

Enkripcija

Slika 2.12. OpenVPN paketi[9]

Za enkripciju ova aplikacija koristi OpenSSL. Tijekom komunikacije enkriptiraju se podaci i naredbe koje aplikacija razmjenjuje. OpenSSL odrađuje sav posao prilikom enkripcije podataka. Sam OpenSSL je open source implementacija protokola SSL i TLS namjenjena raznim sustavima.

Osim ovakve zaštite moguća je i dodatna preko HMAC-SHA1 (eng. Hash-based Message Authentication Code) paketa opcija zaštite. HMAC omogućuje izračunavanje zaštitne vrijednosti poruka koje se prenose preko kriptografskih hash funkcija i tajnog ključa. Uskoro će biti moguća i zaštita preko PolarSSL-a koja također pruža implementaciju protokola SSL i TLS.

OpenSSL

OpenSSL je projekt kojemu je početna namjena bila da napravi open source implementaciju protokola SSL i TLS. Osim ovih protokola OpenSSL sadržava i kriptografsku biblioteku. Projekt se razvijao slično kao i OpenVPN pomoću različitih zaljubljenika diljem svijeta.

OpenSSL je pisan u C jeziku te ga je moguće upotrebljavati na različitim platformama. Zadnja stabilna verzija je 1.0.0e (6. 10. 2011.). Ako želimo upotrebljavati OpenSSL nemamo previše prepreka jer je izdan pod Apache licencom koja omogućuje da se koristi besplatno u komercijalne svrhe. Razvoj OpenSSL-a je krenuo od SSLeay biblioteke koju su izdali Eric A. Young i Tim J. Hudson.

HMAC
Slika 2.13. HMAC-SHA1[10]

HMAC (eng. Hash-based Message Authentication Code) je jedna vrsta MAC-a (eng. Message Authentication Code). Posebnost izrade ove autentikacije je u tome što se koriste kriptografske hash funkcije u kombinaciji s tajnim ključem. Ovakav način zaštite može se koristiti za provjeru integriteta podataka i autentikaciju poruke. Kao što je prethodno spomenuto OpenSSL koristi SHA-1 kriptografsku hash funkciju. Mihir Bellare, Ran Canetti i Hugo Krawczyk su prvi objavili definiciju HMAC-a. Sigurnost HMAC-a ovisi o dužini tajnog kljuća. Standardizaciju HMAC-a možemo pronaći u FIPS PUB 198, dok njegovu definiciju možemo pronaći u RFC 2104.[RFC 2104]


Dejan Gubez 21:44, 3. siječnja 2012. (CET)

Autentikacija

OpenVPN ima nekoliko načina na koji se može provesti autentikacija. Temeljni način je pomoću tajnih ključeva koje korisnici prethodno izmijene te ih zatim prilikom VPN spajanja upotrebljavaju. Sljedeći način koji možemo koristiti je pomoću certifikata koji nam omogućuju prepoznatljivost. Kod Windows okruženja možemo imati čitanje certifikata iz pametnih kartica samo nam treba Windows Crypto API. Zadnji način je pomoću korisničkog imena i lozinke kojeg možemo, ali i ne moramo, koristiti zajedno s certifikatima. Problem kod autentikacije s korisničkim imenom i lozinkom je u tome što sam OpenVPN ne može pružiti ovakvu autentikaciju već ovisi o nadogradnjama koje nam pruža.

Dejan Gubez 21:44, 3. siječnja 2012. (CET)

Networking

OpenVPN može raditi i preko UDP i TCP-a, pomoću multipleksiranja kreira IPsec ESP tunel na jednom TCP/UDP portu. Aplikacija radi preko većine proxy servera i dobra je u radu s NAT-om te prolasku kroz vatrozide. Server može proslijediti postavke klijentu, neke od tih postavki su IP adrese, naredbe za usmjeravanje i neke opcije za spajanje veze. Postoje dva sučelja za spajanje:

OpenVPN može koristiti LZO knjižnicu za kompresiju podataka. LZO kompresija je kompresija bez gubitaka.

Velika prednost OpenVPN je mogućnost rada između različitih platformi. Ova mogućnost ostvarena korištenjem TUN ili TAP virtualnih uređaja. Ovi virtualni uređaji kreiraju vezu koja omogućuje razmjenu između različitih platformi. TUN se brine za pakete na 3. sloju dok se TAP brine za pakete na 2. sloju. TUN simulira uređaje na sloju mreže dok TAP simulira Ethernet uređaj. Pošto su TUN i TAP prisutni na većini platforma ovo se pokazalo kao dobro rješenje za odabir je pridonosi i samoj sigurnosti korištenja OpenVPN-a. Može se reći da je uvođenje TUN/TAP uređaja dalo OpenVPN-u prednost pred konkurencijom.


Dejan Gubez 21:44, 3. siječnja 2012. (CET)

Sigurnost

Slika 2.14. OpenVPN enkripcija[11]

Sigurnost kao glavni segment VPN komunikacije je omogućena preko nekoliko funkcija. Sve radnje se odvijaju u korisničkom prostoru, a ne na IP stogu, mogu se ukinuti root privilegije, koristi se mlockall (funkcija koja sprečava da se podaci straniče na disk s kojeg bi se kasnije mogli vratiti)[26] kako bi se spriječilo brisanje osjetljivih podataka s diska, uđe se u chroot jail (okruženje u kojem je korisniku promijenjen root direktorij i ne može raditi van tog direktorija)[27] nakon inicijalizacije i provedbe SELinux sadržaja. SELinux(eng. Security Enhanced Linux) je nadogradnja za Linux koja omogućuje veću kontrolu nad sadržajem.

Kao što je već spomenuto, koriste se protokoli temeljeni na SSL/TLS. Implementacija pomoću SSL-a je odabrana zbog toga da se izbjegne problem koji se javlja kod implementacije pomoću IPSec-a, da se za svaki sustav mora raditi drugačija implementacija. Za tuneliranje preko UDP-a koristi se IPSec ESP protokol.

Dejan Gubez 21:44, 3. siječnja 2012. (CET)

Proširivost

OpenVPN ima mogućnost proširivanja pomoću zakrpi ili skripti od trećih osoba. Ove skripte omogućuju razvoj naprednijih mogućnosti za korisnike. Ove mogućnosti koje pruža otvoreni kod aplikacije donose veliku prednost jer napredniji korisnici mogu prilagođavati aplikaciju svojim potrebama.

Dejan Gubez 21:44, 3. siječnja 2012. (CET)

Platforme

OpenVPN možemo koristiti na sljedećim desktop platformama:

Mobilne platforme:

Postoji mnogo klijentskih aplikacije za različite platforme. Ovdje ćemo spomenuti neke od njih:

Sve spomenute aplikacije osim Guizmovpn su besplatne.

Dejan Gubez 21:44, 3. siječnja 2012. (CET)

OpenVPN i Android

Budući da Android postaje vodeća platforma u svijetu pametnih telefona spomenut ćemo nešto o postavljanju VPN veze na Android uređajima. Kako bi se na Andorid uređaj postavio OpenVPN uređaj mora biti rooted. Ovo znači da moramo dobiti više ovlasti nad svojim uređajem. Da odmah napomenemo da ovaj postupak može dovesti do gubljenja jamstva nad uređajem. Sam proces se mora izvesti pomoću neke od aplikacija koje omogućuju dobivanje administratorskih ovlasti. Nakon ovog postupka trebaju se preuzeti alati OpenVPN Settings koja kontrolira ponašanje OpenVPN-a na uređajima. Nakon ove aplikacije instalira se neki od programa koji omogućuje upravljanje OpenVPN-om. Za više informacija na sljedećim linkovima mogu se pronaći detaljni koraci kod instalacije[28] [29].

Prednosti OpenVPN nad IPSec VPN

OpenVPN ima mnogo prednosti nad IPSec VPN-om. Glavna prednost koja će biti značajna za mnoge je jednostavnost izrade, konfiguracije i modularnosti. Kod IPSec VPN-a konfiguracija nije tako lagana te je nešto kompleksniji. Kada govorimo o samoj tehnologiji za OpenVPN je potreban samo jedan port u vatrozidu kako bi se uspostavila veza dok je kod IPSec VPN-a potrebno više portova i dodatni protokoli unutar vatrozida. OpenVPN koristi stadardan SSL/TLS protokol dok kod se IPSec VPN-a javljaju neki problemi u sigurnosti. Prednosti OpenVPN-a su još brzina prometa, rad s NAT-om, DynDNS. IPSec je nekad imao prednost jer je bio standardan način, ali u današnje vrijeme OpenVPN svojom jednostavnošću i kvalitetom preuzima glavnu riječ.[Feilner, 2006, str. 36]

Iz usporedbe jasno možemo vidjeti da je OpenVPN bolji odabir kod izgradnje VPN-a, te da svojom jednostavnošću omogućava jednostavnu izgradnju i korištenje početnicima.

Dejan Gubez 22:55, 5. siječnja 2012. (CET)

Praktični dio

Tuneliranje Internet prometa kroz OpenVPN (Windows 7)

NAPOMENA: "Windows 7" u naslovu znači "Windows 7 x64 Ultimate, Service Pack 1" i odnosi se samo na poslužiteljsko računalo. Moje poslužiteljsko računalo je povezano na Internet preko T-COM-ovog Siemens Gigaset SX763 usmjerivača, s kojim je spojeno direktno, ethernet kablom. Spajanje na VPN je testirano i s prijenosnikom koji koristi VIP Mobile Connect HSDPA karticu.

Koliko mi je poznato, ne bi trebalo biti nikakvih problema u ponavljanju ovog postupka na 32-bitnim verzijama ovog OS-a, niti pri spajanju klijenata drugih OS-ova na takav poslužitelj. Osobno sam testirao spajanje s 32-binih Windows XP SP3 i Windows Vista SP3 klijenta. Za Linux postoje detaljne upute online, rekao bih čak više nego za Windows, pa ovdje neću govoriti o tome.



Osim za povezivanje korporativnih mreža i udaljenih lokalnih mreža te korisnika na terenu, VPN tehnologija se sve češće koristi u individualne svrhe, kao mehanizam zaštite privatnosti i povjerljivosti u komunikaciji s Internetom. Kako javne bežične mreže postaju sve raširenije i dostupnije kod nas, a njihova sigurnost je u najmanju ruku upitna, postavlja se pitanje tko sve ima uvid u promet između nas i Interneta dok koristimo usluge takvih mreža. Ako ne primjenjujemo nikakve posebne mehanizme zaštite, odgovor na to pitanje je "svatko s malo vještine i dovoljno želje", jer se velik dio naše komunikacije odvija prijenosom običnog teksta preko mreže (eng. plaintext).[30] Na sreću, postoje VPN rješenja, poput OpenVPN-a, koja nas uz malo truda mogu zaštititi od ovakvih opasnosti.

--Matej Divković 17:41, 4. siječnja 2012. (CET)

Postupak

NAPOMENA: Ako odlučite pratiti ove korake, podrazumijeva se da ovaj postupak radite na SVOJEM računalu, SVOJEM usmjerivaču, na SVOJEM računu s administratorskim ovlastima. Nisam odgovoran za eventualne mrežne ili sigurnosne poteškoće koje biste si mogli prouzročiti, koliko god minimalna ta vjerojatnost bila.

Što se tiče slika koje prate postupak, nisam ih odlučio sve staviti na Wiki da ga ne pretrpam - stavio sam samo one za koje smatram da su nužne. Međutim, tijekom postupka sam napravio veći broj screenshot-a, koje možete preuzeti na ovdje referenciranom linku.[31]

(datoteke sam postavio na FileJungle poslužitelj, nakon klika na link jednostavno odaberite opciju slow download, upišite captchu, pričekajte 30 sekundi i preuzmite ih)

Preuzimanje i instalacija OpenVPN softvera
Slika 2.15. Instalacija TAP virtualnog mrežnog adaptera

Najprije trebate preuzeti instalacijsku datoteku MS Windows verzije OpenVPN-a na ovdje referenciranom linku.[32] Treba naglasiti da se na tom linku mogu preuzeti potpune verzije OpenVPN-a, koje uključuju i poslužiteljsku i klijentsku funkcionalnost, kao i osnovno grafičko sučelje. Postoji i druga mogućnost, da preuzmete tzv. OpenVPN Connect, koji je samo klijent, a onda morate registrirati račun na PrivateTunnel servisu, koji će vam biti poslužitelj. Besplatni račun na navedenom servisu dozvoljava samo 100 mb prometa dnevno i kao korisnik nemate nikakvu kontrolu nad poslužiteljem.[33][34] Taj postupak je daleko jednostavniji od onog kojeg ću opisati ovdje, pa je možda prikladniji za manje zahtjevne korisnike, ali nije fleksibilan i nudi mnogo manje kontrole nad korisničkom privatnošću, pa ga nisam odabrao.[35]

Nakon što ste preuzeli datoteku, pokrenite instalaciju, pri čemu preporučujem da to učinite desnim klikom na datoteku i odabirom opcije Run as Administrator, bez obzira na to što ste već prijavljeni na administratorski račun. Windows je mušičav, better safe than sorry. Pratite upute, nakon par klikova na Next, trebala bi se pojaviti opcija odabira komponenti, moja preporuka je da ostavite sve kvačice uključene. U jednom trenutku pojavit će vam se dijaloški okvir u kojem se od vas traži da prihvatite instalaciju virtualnog TAP mrežnog adaptera, kojeg OpenVPN koristi, što možete vidjeti na slici 2.15. Nakon što prihvatite dodavanje adaptera, instalacija će normalno nastaviti i završiti. Na kraju imate opciju pregleda readme datoteke.

Na radnoj površini će vam se pojaviti prečac za pokretanje OpenVPN grafičkog sučelja. Iako je potrebno provesti još dosta pripremnih koraka prije nego što budete mogli i trebali pokrenuti GUI, moja je preporuka da odmah desnim klikom na ikonu, pod Properties->Compatibility uključite kvačicu na Run this program as an Administrator i sačuvate promjene.

Postupak preuzimanja i instalacije, koji je ovdje opisan, potrebno je provesti na poslužitelju i svim klijentskim računalima koja želite uključiti u svoju OpenVPN mrežu.

--Matej Divković 17:41, 4. siječnja 2012. (CET)

Kreiranje CA, generiranje ključeva i certifikata

Prema službenim uputama, OpenVPN mreža, od verzije 2.0 nadalje, se može uspostaviti na jedan od dva načina, pomoću statičkih ključeva ili pomoću X509 infrastrukture javnih ključeva (eng. Public Key Infrastructure, kraće PKI). O prednostima i nedostacima, odnosno kontekstima kada je pojedina mogućnost bolja ili lošija možete pročitati u dokumentaciji koju ovdje referenciram.[36] Ja sam odabrao drugu opciju, jer statički ključevi omogućuju isključivo kombinaciju jednog poslužitelja i jednog klijenta, dok će meni osobno trebati barem dva klijenta.

Za uspostavu PKI infrastrukture morate najprije generirati parove certifikata i privatnog ključa za poslužitelj i sve klijente, kao i glavni certifikat i ključ tzv. certifikacijskog autoriteta (eng. Certificate Authority). S ovim potonjim će se potpisati certifikati poslužitelja i klijenata. Autentikacija u OpenVPN mrežama je obostrana, što znači da će i klijent i poslužitelj najprije provjeriti je li certifikat druge strane potpisan od CA, onda će u ovjerenom certifikatu provjeravati o kakvom se tipu čvora radi (klijent/poslužitelj), kako se on zove itd., da bi na kraju uspostavili vezu. Više o ovome možete pročitati na prethodno referenciranom linku.

--Matej Divković 17:41, 4. siječnja 2012. (CET)


Pripremne radnje
Slika 2.16. Izmijenjena vars.bat datoteka, u Notepad++

OpenVPN u sebi uključuje nekoliko skripti koje će vam olakšati proceduru generiranja certifikata i ključeva. Njih ćete pokrenuti koristeći Command Prompt (dalje ću jednostavno koristiti izraz 'konzola') u administratorkom načinu rada. Kliknite na Windows Start ikonu, u Search programs and files upišite command prompt, nakon čega bi vam se prvi u rezultatima trebao pojaviti upravo on. Prije nego što kliknete na prečac, pritisnite i držite na tipkovnici kombinaciju tipki Ctrl i Shift. Ova kombinacija će vam otvoriti administratorsku konzolu, što ćete znati prepoznati po tome što u naslovnoj traci prozora piše Administrator: Command Prompt. U konzoli trebate navigirati do podmape easy-rsa, u mapi gdje ste instalirali OpenVPN. U mojem slučaju instalacija je izvršena na D: particiju pa sam ja sljedećim dvjema naredbama ušao u easy-rsa mapu:


d:

cd "Program Files (x86)\OpenVPN\easy-rsa"


U sljedećem koraku potrebno je pokrenuti skriptu koja će pripremiti potrebne konfiguracijske datoteke, to ćete učiniti naredbom:


init-config


Slika 2.17. Generiranje CA

Prije nego što krenete dalje, minimizirajte konzolu, pomoću Windows Explorer-a uđite u mapu gdje vam je instaliran OpenVPN, a zatim u podmapu easy-rsa. Ovdje ćete pronaći vars.bat datoteku, koja je generirana prethodnom naredbom. Ovu datoteku treba malo preurediti prije nego što nastavite s postupkom, za to preporučujem neki tekstualni editor kao što je Notepad++,[37], jer će vam u Windows Notepad-u sadržaj ostati u jednoj liniji, neformatiran i bit će ga iznimno teško urediti. Na slici 2.16. je prikazan sadržaj te datoteke nakon što sam je ja uredio. Potrebno je izmijeniti vrijednosti za polja na linijama od 31. do 35., od ključa države do ključa email-a. Ovdje stavite svoje vrijednosti, po želji, ali vodite računa da za prva dva polja vrijednosti mogu biti duge najviše dva znaka (HR i VZ u mojem slučaju) i da ni jedno od ovih 5 polja na smije ostati prazno. Kada završite, spremite promjene i vratite se u konzolu koju ste maloprije minimizirali.

--Matej Divković 17:41, 4. siječnja 2012. (CET)

Certifikacijski autoritet

Sam postupak kreiranja CA i ključeva ćete pokrenuti sa sljedeće tri naredbe:

vars

clean-all

build-ca

Posljednja od ove tri naredbe pokreće postupak kreiranja CA, a nakon nje će vam se u konzoli pokrenuti dijalog za unošenje određenih vrijednosti, kao što možete vidjeti na slici 2.17. Prepoznat ćete imena polja, radi se o poljima koja ste maloprije mijenjali u vars.bat. Ne trebate unositi ništa, preuzet će se vrijednosti iz vars.bat, već samo pritisnite tipku Enter, dok se od vas ne zatraži da unesete Common Name. U ovo polje MORATE unijeti ime certifikacijskog autoriteta kojeg ćete kreirati, to može biti bilo koje ime, po vašoj želji, samo ga zapamtite. Nakon ovoga, certifikacijski autoritet je kreiran.

NAPOMENA: Vjerojatno ćete primijetiti upozorenja The system cannot find the path specified i unable to write 'random state'. I mene je ovo zabrinulo, no nakon malo istraživanja došao sam do zaključka da se radi o konfliktima s Windows dopuštenjima pisanja i čitanja za određene direktorije. Na svu sreću NE radi se o nečemu što bi trebalo uzrokovati probleme kod uspostave OpenVPN sustava.

--Matej Divković 17:41, 4. siječnja 2012. (CET)

Poslužitelj

Generiranje certifakata za poslužitelj pokrećete naredbom:


build-key-server server


Jednako kao i kod kreiranja CA, od vas će se tražiti da unesete vrijednosti za spomenuta polja. Možete ponoviti isti postupak, a kad dođete do Common Name, unesite server, ako ste tako napisali u gore spomenutoj naredbi. Nakon ovoga trebat ćete potvrdno odgovoriti na dva pitanja, Sign the certificate? [y/n] i 1 out of 1 certificate requests certified, commit? [y/n]. Ovo znači da ćete certifikat poslužitelja potpisati od strane certifikacijskog autoriteta kojeg ste maloprije kreirali.

--Matej Divković 17:41, 4. siječnja 2012. (CET)

Klijenti

Certifikati za prvog klijenta se generiraju naredbom

build-key client1

, pri čemu client predstavlja naziv klijenta i može biti što god želite. Procedura će biti gotovo identična kao i za poslužitelj, naravno pod Common Name ćete unijeti ime iz naredbe, u mojem slučaju client1 za prvog klijenta, od ukupno tri koliko sam ih ja generirao.

NAPOMENA: U službenom dokumentu s uputama piše da, ako želite koristiti i autentikaciju s lozinkama za klijente, umjesto build-key naredbe koristite build-key-pass. Očito se radi u zastarjeloj uputi, jer navedena skripta ne dolazi s novijim verzijama OpenVPN-a, već build-key uključuje u sebi i unošenje tih dodatnih parametara. U postupku unošenja vrijednosti, nekoliko koraka nakon Common Name, će vas se svakako upitati da po želji unesete i lozinku za tog klijenta. Ja sam to i učinio, međutim, kasnije sam otkrio da standardni GUI OpenVPN-a ne podržava mogućnost autentikacije lozinkama, već je to moguće uz neka third-party grafička sučelja. To ne znači da će doći do pogreške ako unesete lozinku, već samo da vas se za nju neće u standardnom GUI-u nikada pitati. Pošto ovaj tutorial neće obrađivati druga sučelja osim standardnog, možete ostaviti ovo polje prazno ili unositi lozinke - svejedno je.

--Matej Divković 17:41, 4. siječnja 2012. (CET)

Diffie-Hellman parametri

Diffie-Hellman je metoda razmjene ključeva, koja se u OpenVPN-u koristi za generiranje novih ključeva sesije, otprilike svakih sat vremena, nakon što je već uspostavljena autentikacija pomoću RSA certifikata i ključeva. Da ne ulazim previše u detalje, ako vas zanima više o D-H metodi i algoritmima možete konzultirati dva linka koja ovdje referenciram.[38][39]

U ovom koraku ćete generirati D-H parametre koji će se u vašoj OpenVPN mreži koristiti za generiranje ključeva sesije. To ćete učiniti pomoću sljedeće naredbe:

build-dh

Postupak generiranja parametara neće biti trenutačan, već će potrajati malo duže, ovisno o snazi vašeg računala.

Ako ste uspješno izvršili ovaj i prethodne korake, sada možete zatvoriti konzolu.

--Matej Divković 18:07, 4. siječnja 2012. (CET)

Prijenos ključeva i certifikata na pripadajuća računala
Slika 2.18. Sadržaj mape keys

U prethodnih nekoliko koraka ste generirali ključeve i certifikate za svoj poslužitelj i klijente, međutim oni se sada svi nalaze na jednom računalu, vašem. Prije nego što upogonite svoju OpenVPN mrežu morate prenijeti odgovarajuće datoteke na njima pripadajuća računala. Za ovo se preporučuje sigurni kanal, a s obzirom na to da imam fizički pristup svim računalima s kojima sam radio, za ovu svrhu sam koristio USB stick osiguran TrueCrypt-om.[40] U njemu sam najprije kreirao 3 mape, po jednu za poslužitelj i za druga dva klijenta, vi ćete možda imati manje, a možda više.

NAPOMENA: Prvi klijent, u mojem slučaju, je računalo na kojem sam generirao sve potrebne datoteke, pa na njega nije trebalo prenositi ništa). Vi ćete možda provoditi ovaj postupak na računalu koje planirate koristiti kao OpenVPN poslužitelj, u tom slučaju USB-om ćete prenositi samo datoteke za klijente.


U Windows Exploreru otvorite mapu easy-rsa, o kojoj smo ranije govorili. Sada u njoj imate novu podmapu pod nazivom keys, pa uđite u nju. U ovoj mapi nalaze se ključevi, certifikati i parametri koje se generirali, sada trebate odgovarajuće datoteke prenijeti iz ove mape u već pripremljene mape na svojem USB sticku. Na slici 2.18. vidite crvenom bojom označene datoteke potrebne poslužitelju, zelenom datoteke potrebne drugom klijentu, plavom bojom datoteke potrebne trećem klijentu. Kopirajte označene datoteke u odgovarajuće mape na vašem USB sticku. Datoteka ca.crt je certifikat CA i potrebna je svim čvorovima vaše mreže, stoga ju kopirajte na USB u sve mape. Na slici je označena žutom bojom.

Datoteku ca.key sam odlučio staviti na poslužitelj. Ona se koristi za potpisivanje certifikata čvorova, prema tome nove čvorove ili certifikate za postojeće čvorove ćete moći potpisati samo s računala na kojem imate ovu datoteku. Uz to, preporučujem da smjestite i Notepad++ na ovaj USB jer će vam trebati i na ostalim računalima.

Fizički prijenos ovih datoteka na njima pripadajuća računala ćete obaviti u sljedećem koraku, tako da ne trčite od jednog do drugog nepotrebno. U sljedećem čete koraku pripremiti i konfiguracijske datoteke, pa možete zajedno prenijeti USB-om i njih i ovdje generirane ključeve.

--Matej Divković 17:41, 4. siječnja 2012. (CET)

Priprema konfiguracijskih datoteka za poslužitelj i klijente

Prije nego što zaista prenesete datoteke na njihova računala, morate još i pripremiti kofiguracije za klijente i poslužitelje. U mapi gdje ste instalirali OpenVPN imate dvije relevantne podmape, config i sample-config. U prvoj se nakon svježe instalacije ne nalazi ništa osim readme datoteke. U drugoj se nalaze primjeri konfiguracijskih datoteka za poslužitelj i klijent s osnovnim postavkama - njih NEĆETE koristiti u ovom tutorialu. Ja sam ovdje priložio vlastite predloške, koje ćete moći koristiti uz minimalne izmjene.

Linkovi:

Klijentska konfiguracija[41]

Poslužiteljska konfiguracija[42]

Ako ste instalirali OpenVPN na sva računala koja mislite uključiti u svoju privatnu mrežu, u mapi gdje je on instaliran, uđite u podmapu config i ovdje smjestite odgovarajuću .ovpn konfiguracijsku datoteku (za poslužitelj ili klijent). Datoteke se moraju zvati upravo tako, client.ovpn za klijent i server.ovpn za poslužitelj, bez obzira na to kakav ste im Common Name dali u prethodnom koraku.

Kako biste uredili konfiguracijske datoteke ponovo možete koristiti Notepad++. S obzirom na to da ćete vjerojatno imati više klijenata, jednostvano ćete duplicirati datoteku client.ovpn i mijenjati putanje do certifikata/ključeva (npr. ako se jedan klijent zove client1 onda ćete putanje u toj konfiguraciji podesiti da pokazuju na client1.cert i client1.key, u onoj mapi u koju ste instalirali OpenVPN na tom računalu). Opcija koju ćete za sada trebati promijeniti je putanja do datoteka certifikata, ključeva (u oba predloška) i D-H parametara (u predlošku poslužitelja).


Kasnije, kada konfigurirate DDNS servis ćete u konfiguraciji klijenata promijeniti hostname OpenVPN poslužitelja.


Kako ne biste zaboravili, sada je pravi trenutak prenesete certifikate, ključeve i parametre, koje ste u ranijem koraku pripremili na USB-u, na njima pripadajuća računala. Na tim ćete računalima trebati ući u podmapu easy-rsa, unutar mape gdje je OpenVPN instaliran. Ovdje kreirajte novu mapu pod nazivom keys i unutra prenesite certifikate,ključeve itd. za to računalo, s vašeg USB sticka.

Na primjer, na računalu koje predstavlja client3 moje OpenVPN mreže, na putanji "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\" nalaze se sljedeće datoteke:

Poslužiteljsko računalo na istoj putanji ima sljedeće datoteke:

--Matej Divković 23:51, 4. siječnja 2012. (CET)

Postavke poslužiteljskog računala i usmjerivača
Slika 2.19. Poslužitelj uspješno spojen

Prije nego što vaš sustav bude spreman za rad potrebno je provesti određene aktivnosti na računalu koje će vrtiti vaš OpenVPN poslužitelj, kao i pripremiti usmjerivač za propuštanje UDP prometa na odgovarajućem portu prema tom računalu.

Krenite sa sljedećim koracima, uključite vaš OpenVPN GUI, preko njegovog prečaca na radnoj površini, u administratorkom modu. U donjem desnom uglu ekrana, u Notification Area Windows Taskbar-a će vam se pojaviti ikona s dva crvena ekrana, to je ikona OpenVPN GUI-a. Desnim klikom na nju i odabirom opcije Connect povežite poslužitelj na mrežu. Otvorit će vam se prozor s ispisom statusa, nakon desetak sekundi trebali biste dobiti poruku u obliku balončića s obaviješću da je poslužitelj spojen na određenu IP adresu, a ekrani na ikoni bi trebali pozeleniti - primjer možete vidjeti na slici 2.19. Ako se to ne dogodi, ne očajavajte (još). Ako vam na kraju ovog cijelog tutoriala i ponovnog pokretanja računala s poslužiteljem i dalje ne bude radilo, morat ćete rješenje pronaći sami korištenjem kombinacije Google-a i poruka koje budete dobivali u statusnom prozoru OpenVPN-a. Nadajmo se da to neće biti potrebno.

--Matej Divković 23:51, 4. siječnja 2012. (CET)


Postavke vatrozida

OpenVPN i vatrozid na Windows OS-u se nikako ne vole, o tome ćete pronaći mnogo dokaza jednostavnim Google pretraživanjem, a ovaj fenomen sam iskusio i ja. U principu, najbolja opcija vam je da potpuno isključite ugrađeni Windows vatrozid i zamijenite ga nekim samostalnim rješenjem te za njega potražite konfiguracijske upute. Ako vam je potreban softverski vatrozid, pokušajte sa ZoneAlarm Free Firewall.[43] U njemu onda možete primijeniti određena pravila propuštanja prometa na UDP port-u 1194 u oba smjera, dopuštenja za openvpn.exe, openvpn-gui-1.0.3.exe, TAP virtualni adapter i slično.

U većini slučajeva kada ljudi ne uspijevaju uspostaviti vezu između poslužitelja i klijenata, problem je upravo u ugrađenom vatrozidu. Kada dođemo do koraka testiranja veze, prvo provjerite kako vam veza radi kada je vatrozid isključen, prije nego što počnete sumnjati na druge probleme.

--Matej Divković 23:51, 4. siječnja 2012. (CET)

Dijeljenje Internet veze poslužiteljskog računala s OpenVPN klijentima

Kako bi vaš OpenVPN poslužitelj mogao dati pristup Internetu klijentima koji se spoje na njega, vi morate omogućiti dijeljenje te veze u Windows OS-u. To ćete učiniti odlaskom u Control Panel->Network and Internet->Network Sharing Center. Ovdje ćete s popisa veza klikom odabrati onu koja vam pruža pristup Internetu i pod Properties->Sharing uključiti kvačicu kraj "Allow other network users to connect through this computer's Internet connection". Istovremeno će vam se uključiti i donja kvačica, no nju možete isključiti. Aktivirat će vam se i padajući izbornik odabira veze s kojom želite dijelit mrežu. Ovdje izaberite onu lokalnu mrežu koja pripada TAP virtualnom mrežnom adapteru, kojeg ste instalirali na samom početku ovog tutoriala. Ako imate više ponuđenih mreža i ne znate koja je ona koja vama treba, vratite se na popis svih mreža i redom im u Properties provjeravajte dok ne nađete onu koja pod poljem Connect using: ima vrijednost TAP-Win32 Adapter 9.

--Matej Divković 23:51, 4. siječnja 2012. (CET)

Windows Routing and Remote Access servis
Slika 2.20. Promjena postavke IPEnableRouter ključa

U ovom ćete koraku uključiti i postaviti automatsko podizanje Windows Routing i Remote Access servisa, koji je u osnovnoj konfiguraciji isključen. Kliknite na Windows Start ikonu, u Search programs and files polje upišite services.msc i pritisnite Enter. Otvorit će vam se popis servisa koji postoje na vašem računalu. Pronađite Routing and remote Access servis. Desnim klikom na njega izaberite opciju Properties->General->Startup type i promijenite je u Automatic, zatim prihvatite promjene. Sada opet kliknite desnom tipkom miša na ovaj servis i odaberite opciju Start.

Možete zatvoriti prozor sa servisima.

Sada kliknite na Windows Start ikonu, u Search programs and files polje upišite regedit i pritisnite Enter. Otvorit će vam se uređivač registra. S lijeve strane imate navigator u obliku stabla, u njemu pronađite sljedeći ključ "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters". Nakon toga s desne strane pronađite vrijednost IPEnableRouter i dvostruko kliknite na nju. Vrijednost, ako je niste ranije mijenjali, je 0 - sada je promijeniti u 1 i spremite promjene.[44] Ovo je prikazano na slici 2.20.


Možete zatvoriti uređivač registra.

--Matej Divković 00:07, 5. siječnja 2012. (CET)

Prosljeđivanje UDP prometa

Ovaj korak će uvelike ovisiti o vašem usmjerivaču, ja ću vam ovdje samo objasniti postupak kojim sam prema poslužiteljskom računalu proslijedio promet UDP port-a 1194, kojeg OpenVPN koristi u osnovnoj konfiguraciji.

Za prosljeđivanje porta sam morao najprije saznati lokalnu IP adresu poslužiteljskog računala, a to ćete najverojatnije morati i vi ako je ne znate napamet. To možete učiniti otvaranjem Command Prompt-a i upisom naredbe

ipconfig/all

Trebale bi vam se izlistati sve veze koje postoje na tom računalu. Ove veze imaju iste nazive kao one koje ste vidjeli maloprije u Network and Sharing Center, pa mi je samo preostalo da u listi nađem onu koja me povezuje s usmjerivačem i Internetom, u mojem slučaju jednostavno Local Area Connection. Pod njezinim podacima sam pronašao IPv4 address polje i zapisao adresu na komad papira (znam, jako staromodno).

Slika 2.21. Prosljeđivanje UDP prometa

Zatim sam otvorio Firefox i u adresno polje upisao 192.168.1.1, što je lokalna adresa Web sučelja mojeg usmjerivača. Nakon prijave, odabrao sam opciju Advanced Settings->Internet->Address Translation (NAT)->Port Forwarding. Na slici 2.21. je prikazano kako sam dodao pravilo za prosljeđivanje UDP prometa na port-u 1194 prema IP adresi koju sam maloprije zapisao.

Time je ovaj korak završen.

--Matej Divković 00:07, 5. siječnja 2012. (CET)

DDNS servis

Kako bi vaši OpenVPN klijenti uvijek mogli pristupiti poslužitelju, on mora biti uvijek dostupan. To znači da računalo s poslužiteljem mora biti uključeno i povezano na Internet, da OpenVPN mora biti pokrenut, ali i s mrežne strane priče, da će promet koji oni pošalju na Internet prema poslužitelju nekako naći svoj put prema njemu. Za ovo potonje vam je potrebna jedna od dvije stvari, statička WAN IP adresa ili račun na nekom od DDNS (eng. Dynamic DNS) servisa. Ako ste kao ja, onda nemate statičku IP adresu, moj račun kod T-COM-a je u osnovnom paketu ne uključuje, već ju je potrebno dodatno platiti.[45] Moja WAN IP adresa je dinamička, konretno, mijenja se najmanje svakih 24 sata.

Slika 2.22. No-Ip kontrolna ploča

DDNS servisi, s druge strane, nude uslugu dodjele globalnog imena vašem računalu (eng. global hostname), pri čemu će oni osvježavati vašu IP adresu u DNS-u (Domain Name System) svaki put kada se ona promijeni. Na taj način bi svatko trebao moći doznati vašu globalnu IP adresu, koja se mijenja, preko vašeg hostname-a, koji je uvijek isti.


Postoji nekoliko tvrtki koje nude ovakve usluge, vrlo dugo je bio popularan DynDNS, međutim prošle godine su prestali nuditi besplatnu DDNS uslugu, odnosno, možete joj pristupiti ali je najprije potrebno dati podatke za plaćanje, što je prema mojem mišljenju nepotrebna komplikacija. Za potrebe ovog tutoriala ja ću preporučiti da koristite No-Ip DDNS servis, koji je potpuno besplatan i jednostavan - link na naslovnu stranicu referenciram ovdje.[46]

Slika 2.23. No-Ip dodavanje novog host-a

Ako već imate DDNS hostname za to računalo, ili barem imate račun kod nekog davatelja usluge i možete dodati novi hostname, učinite to. Pri kraju ovog odlomka se nalazi uputa kamo trebate upisati taj hostname. U suprotnom nastavite čitati...


Kad posjetite no-ip stranicu, registrirate i aktivirate račun, prijavite se klikom na Your No-IP link u gornjem desnom uglu stranice. Trebali biste biti u stanju pristupiti kontrolnoj ploči vašeg računa gdje možete dodati novi host, a prikazana je na slici 2.22. Ovdje odaberite opciju Add a Host. Otvorit će vam se obrazac, prikazan na slici 2.23, u kojem morate jedino upisati željeni hostname i odabrati mu domenu. Pri odabiru domene, pazite da iz padajućeg izbornika birate besplatne domene, koje se nalaze na dnu, u No-Ip Free Domains grupi. Trenutnu IP adresu će vam sustav sam dohvatiti, a ostale opcije možete ostaviti kakve jesu, pa kliknite Create Host na dnu stranice. Dobit će te ili poruku da je uspješno dodan ili upozorenje da ime nije dostupno.

Kreirali ste host, zapišite mu ime negdje, zajedno s domenom, u mojem slučaju to je sisvpnprojekt.redirectme.net. Sada vam treba neki mehanizam za osvježavanje IP adrese ako se ona promijeni. Za to ćete se vratiti na početnu stranicu No-IP-a i odabrati izbornik Downloads. Tamo imate link na instalacijsku datoteku Windows klijenta, pa ga preuzmite. Instalacija je vrlo jednostavna, a kada završi pokrenite klijent. Od vas će se zatražiti No-Ip korisničko ime i lozinka, pa ih unesite. Nakon prijave će vam se otvoriti popis vaših hostov-a, pa odaberite onaj koji ste upravo kreirali i kliknite na Save.

To je to! Dok god je pokrenut No-Ip klijent, vaša će se IP adresa automatski osvježavati u DNS-u i OpenVPN klijenti će moći pristupiti vašem poslužitelju... ili?

Sjetite se da smo ranije govorili o jednoj maloj promjeni koju ćete trebati napraviti u .ovpn konfiguracijskim datotekama vaših klijenata, nakon što konfigurirate DDNS. To ćete učiniti sada. Jednostavno na svakom klijentskom računalu otvorite u Notepad++ client.ovpn i pronađite liniju


remote sisvpnprojekt.redirectme.net 1194


Tu će biti i komentar, da biste ovu liniju trebali promijeniti.

Iza ključne riječi remote se nalazi hostname mojeg poslužitelja i broj porta. Broj ostavite kakav jest, a za hostname stavite onaj koji ste upravo kreirali za svoj poslužitelj. Pohranite promjene.

--Matej Divković 00:07, 5. siječnja 2012. (CET)

Testiranje

Slika 2.24. Klijent uspješno spojen

Prepručujem da prije testiranja ugasite i ponovo upalite računala koja mislite koristiti u testu, a u svakom slučaju ono na kojem se treba vrtiti poslužitelj. Za početak testirajte rad na jednom klijentu i poslužitelju.

Podrazumijeva se da ste uspješno izvršili sve prethodne korake ovog tutoriala.


Ne zaboravite


Nakon kraćeg vremena ikonice bi vam na oba računala trebale pozeleniti, a primjer za klijent možete vidjeti na slici 2.24. Ako se to ne dogodi, pažljivo provjerite da ste izvršili sve prethodne korake prema uputama. Ako ste sigurni da jeste, onda vam na žalost ne mogu pomoći, morat ćete potražiti pomoć na Internetu ili od nekoga stručnijeg tko ima pristup i uvid u vaše računalo i opremu. U statusnom prozoru OpenVPN GUI-a će vam se gotovo sigurno ispisati u čemu je problem, pa vam to može biti nit vodilja u traženju rješenja.

Ako ikonice pozelene znači da je veza barem deklarativno uspostavljena, a sada ćemo provjeriti radi li ona zaista kako treba.

--Matej Divković 00:07, 5. siječnja 2012. (CET)


Ping test

Ako malo zadržite strelicu miša iznad OpenVPN statusne ikone, pojavit će vam se oblačić s nekim podacima o vašoj vezi. Između ostaloga, tu se nalazi i OpenVPN IP adresa tog računala. Sada ćete napraviti mali ping test najprije od klijenta prema poslužitelju i obrnuto. Ping je alat kojim možete provjeriti dostupnost računala (uređaja) u mreži pomoću njihovog hostname-a ili IP adrese. On šalje ICMP (eng Internet Control Message Protocol) echo zahtjeve prema tom računalu, pa ako dobije odgovor, znači da je računalo dostupno, u suprotnom nije. U mojem slučaju poslužitelj ima IP adresu 10.8.0.1, a klijent 10.8.0.6.

Ja sam otvorio Command Prompt na oba računala i zatim na poslužitelju izvršio naredbu


ping 10.8.0.6


, a na klijentu naredbu


ping 10.8.0.1


Ako dobijete odgovor u oba slučaja, onda veza funkcionira kako bi trebala i možete nastaviti sa sljedećim korakom. Ako na jednom ili oba računala ne dobijete odgovor, ovisno o kombinaciji upišite u Google svoju situaciju, npr. "openvpn can't ping server" i među prvim rezultatima ćete dobiti diskusije sa službenog foruma OpenVPN gdje sam razvojni tim odgovara na pitanja i u većini slučajeva uspiju riješiti probleme korisnika.

--Matej Divković 23:55, 4. siječnja 2012. (CET)

Browser test
Slika 2.25. Uspješan browser test

NAPOMENA: Ovaj korak podrazumijeva da klijentsko računalo i poslužitelj nisu spojeni na Internet preko istog Gateway-a, jer ćete u suprotnom teško utvrditi ide li vaš promet zaista kroz OpenVPN. Internet Gateway je uređaj preko kojeg promet putuje između Interneta i vašeg računala. U ovom testu ćemo provjeriti mijenja li se vaša vanjska IP adresa (ona koju ostatak svijeta vidi, zapravo adresa vašeg Gateway-a) prije i nakon spajanja na OpenVPN. Ja sam zato na klijentu koristio vezu preko VIP Mobile Connect HSDPA kartice, koja ima sasvim drugačiju WAN IP adresu od one koju mi ima T-COM-ov usmjerivač. U krajnjem slučaju, ostavite si poslužitelj da vam radi kod kuće, a onda na nekoj javnoj bežičnoj mreži, kod prijatelja i slično, s klijentom se pokušajte spojiti na OpenVPN, pa onda nastavite testiranje.

Ovdje podrazumijevam da ste uopće u mogućnosti pristupiti Internetu nakon što ste odabrali Connect opciju OpenVPN GUI-a i uspješno se povezali s poslužiteljem. To provjerite odlaskom na neku stranicu koju obično posjećujete. Ako se ona uspješno učita, onda nastavite s ovim testom. U suprotnom, jedino što vam mogu reći je Google is your friend. Pretražite openvpn connected, but can't browse ili nešto slično.

Ako možete pristupiti Webu preko browsera i spojeni ste na OpenVPN (statusna ikonica GUI-a pokazuje dva zelena monitora) onda posjetite WhatIsMyIp, kojeg referenciram ovdje.[47]. Zapišite negdje IP adresu koja vam se prikaže, ili još bolje, ostavite prozor preglednika otvoren.

Sada desnim klikom na statusnu ikonicu OpenVPN GUI-a i odabirom Disconnect opcije prekinite vezu s OpenVPN-om, a za svaki slučaj možete odabirom Exit opcije i ugasiti OpenVPN klijent. Nakon 30-ak sekundi otvorite novi prozor preglednika i ponovo posjetite WhatIsMyIp. Sada bi vam trebao pokazivati sasvim drugu globalnu IP adresu.

Ako to nije slučaj, a pratili ste sve upute do sada, postoje dvije mogućnosti:

  1. Vaš promet ne putuje kroz OpenVPN (gotovo nemoguće, ali guglajte)
  2. Vaš se Gateway nije promijenio spajanjem na OpenVPN, što bi značilo da niste pročitali napomenu (sram vas bilo) i s klijentom pristupate Internetu iz iste lokalne mreže u kojoj vam se nalazi OpenVPN poslužitelj, odnosno vi i računalo s poslužiteljem ionako imate isti Gateway.

Kako izgleda uspješan test možete vidjeti na priloženoj slici 2.25.

31.45.137.60 mi je IP adresa preko VIP kartice bez OpenVPN-a, a 93.139.181.42 s uključenim OpenVPN-om, kada se sav promet vuče preko T-COM računa i kriptiran šalje do VIP-ovog Gateway-a, a on do mene. U ovom slučaju VIP-ov Gateway glumi vezu na nesigurnu javnu mrežu.

--Matej Divković 00:07, 5. siječnja 2012. (CET)

Zaključak

Ovim tutorialom sam nastojao ujediniti čitav niz raštrkanih informacija o tome kako uspostaviti ovakav VPN sustav. Koliko mi je poznato ovaj Wiki je jedino mjesto gdje postoje upute od početka do kraja postupka, u jednom vodiču. Ako iz nekog razloga niste uspjeli upogoniti vašu OpenVPN mrežu, možete koristiti neke od resursa koji su referencirani ovdje ili pomoću informacija i znanja koje ste uspjeli usvojiti potražiti rješenja problema na Webu, eventualno kod nekog stručnjaka. Ja sam daleko od ovog potonjeg i mogu samo zahvaliti raznim božanstvima da je sve ovo u mojem slučaju relativno brzo proradilo (Plug-and-Pray princip), jer je u cijelu proceduru uključen zaista velik broj faktora i elemenata koji trebaju raditi kako treba, da bi sustav radio.

Trudio sam se detaljno pokriti svaki korak, no naravno da postoji vjerojatnost da mi je nešto promaklo. Ako tijekom svojih iskustava naiđete na nešto što je potrebno dodati ovdje, slobodno to učinite i potpišite se.

Useless fact #17: cijeli ovaj tutorial je napisan preko OpenVPN tunela.

--Matej Divković 23:43, 4. siječnja 2012. (CET)


PPTP, Routerboard i iPhone

U ovom dijelu pokazat ćemo kako napraviti PPTP server na Routerboardu, koji se nalazi unutar lokalne mreže, i pomoću iPhonea spojit se na taj server te koristiti resurse lokalne mreže.

NAPOMENA: Koristim Routerboard 411 s Mikrotik RouterOS v5.11, iPhone 3Gs (isti postupak je na svim verzijama iPhonea), ADSL modem AirLive WT-2000ARM i naravno svoje računalo.

Postupak

Slika 2.30. Dodavanje novog korisnika za PPTP vezu

Najprije se pomoću programa winbox [48] logiramo u Routerboard. Zatim trebamo dodati novog korisnika. Koraci za dodavanje novog korisnika su: PPP-->Secrets-->Add(+). Unosimo ime, lozinku, servis: PPTP, lokalnu adresu: adresa Routerboarda (u mojem slučaju 192.168.1.16) i udaljena adresa (adresa koju će dobiti uređaj koji se spoji na lokalnu mrežu): stavio sam 192.168.1.42 što prikazuje i slika 2.30..

Slika 2.31. Uključivanje PPTP servera




Nakon što smo dodali korisnika odnosno klijenta, moramo uključiti PPTP server: PPP-->Interface-->PPTP Server. Označimo Enabled i sve ostale postavke ostavimo kako jesu. Autentikaciju možemo promijeniti, no ja sam ostavio da podržava sve ponuđene protikole za autentikaciju (Slika 2.31.).

Slika 2.32. iPhone PPTP konfiguracija
Slika 2.33. Veza uspostavljenja




Što se tiče Routerboarda tu je sad sve namješteno i možemo krenuti na drugi dio, a to je konfiguracija iPhonea. Da bi ušli u meni s postavkama VPN konekcije tapnemo: Setting-->General-->Network-->VPN-->Add VPN Configuration. Konfiguracija je prilično jednostavna, unesemo opis odnosno ime konekcije, IP adresu servera (u moje slučaju 192.168.1.16), račun odnosno ime korisnika kojeg smo prije stvorili, lozinku, a ostalo ostavimo zadano kao što se i vidi na slici 2.32.. Isto tako iz slike 2.33. možemo iščitati da je PPTP uspješno uspostavljena.

Slika 2.34. Uspostavljenja veza preko Interneta

Ovo što smo sad napravili će samo raditi unutar lokalne mreže. Budući da se moj Routerboard nalazi iza ADSL modema odnosno unutar lokalne mreže, moramo reći ADSL modemu da sve zahtjeve za uspostavljanje PPTP veze s Interneta (port 1723) propusti do Routerboarda koji ima statičku IP adresu 192.168.1.16. Da bi to napravili, moramo se ulogirat u ADSL modem i pronaći opciju Port Forwarding. Ukoliko ne znate gdje se u vašem ADSL modemu nalazi ta opcija pogledajte ovjde. Ukoliko imate modem isti kakav imam ja tada kliknete: Advanced Setup-->NAT-->Virtual Server. Pod Aplication upišemo npr. PPTP, pod Protocol odaberemo TCP, Start i End Port Number je 1723 (port za PPTP), a pod Local IP adress unesemo IP adresu servera (192.168.1.16 je kod mene).


Sad se možemo spojiti na lokalnu mrežu s bilo koje "lokacije" na Internetu, ako znamo IP adresu ADSL modema. Ovdje nastale problem, a problem je taj što ja nemam zakupljenu statičku vanjsku (public) IP adresu, nego dinamičku koja se mijenja svakih 24 sata. Problem je vrlo jednostavno riješiti. Postoje servisi kao što je NO-IP koji prevađaju dinamičku IP adresu našeg modema u nešto jednostavnije za zapamtiti, kao npr. sis.no-ip.org. Svaki put kad modem dobije novu IP adresu on "javi" NO-IP servisu da se IP adresa promijenila, koji tada ažurira sis.no-ip.org na novo dobivenu adresu. Sve što si mi moramo zapamtiti je sis.no-ip.org koji će se svakodnevno ažurirati. Većina današnjih modema imaju u sebi aplikaciju za ažuriranje, ukoliko nema možemo koristiti aplikacije za računalo. Postupak kako doći do računa je kolega već prije objasnio.

I to je to. Sada možemo pristupiti našoj lokalno mreži bilo kada i bilo gdje u svijetu (Slika 2.34.), naravno uz pretpostavku da imamo pristup Internetu i da port 1723 nije blokiran od strane vatrozida. Na server se možemo također spojiti i sa svim drugim uređajima koji podržavaju PPTP VPN vezu kao npr. računalo s većinom operacijskih sustava, pametnim mobitelima, tablet računalima itd.


--Andbelic 16:55, 6. siječnja 2012. (CET)

Izvori

Izvori su podijeljeni u knjige, opće Web resurse i službene dokumente IETF-a, RFC (eng. Request For Comments).

Knjige

Web

http://www.cisco.com/application/pdf/paws/14106/how_vpn_works.pdf
http://computer.howstuffworks.com/vpn.htm
http://www.fujitsu.com/downloads/TEL/fnc/pdfservices/TCPIPTutorial.pdf
http://technet.microsoft.com/en-us/library/cc771298%28WS.10%29.aspx
http://www.cisco.com/en/US/docs/ios/12_0t/12_0t1/feature/guide/l2tpT.pdf
http://technet.microsoft.com/en-us/library/bb878088.aspx
http://www.metafilter.com/67162/Amazing-discoveries-in-plaintext-Tor-exit-traffic
http://openvpn.net/index.php/open-source/overview.html
http://pubs.opengroup.org/onlinepubs/000095399/functions/mlockall.html
http://en.wikipedia.org/wiki/Chroot
http://en.wikipedia.org/wiki/IPsec
http://www.freeswan.org/freeswan_snaps/CURRENT-SNAP/doc/ipsec.html
http://www.unixwiz.net/techtips/iguide-ipsec.html
http://openvpn.net/index.php/open-source/downloads.html
https://www.privatetunnel.com/
https://forums.openvpn.net/topic8902.html
http://openvpn.net/index.php/open-source/documentation/howto.html
http://portableapps.com/apps/development/notepadpp_portable
http://www.rsa.com/rsalabs/node.asp?id=2248
http://openvpn.net/archive/openvpn-users/2004-11/msg00532.html
http://www.truecrypt.org/
http://www.zonealarm.com/security/en-us/fza-install-steps.htm
https://forums.openvpn.net/topic7806.html
http://www.t-com.hr/privatni/kzona/pitanjaiodgovori/index.asp?a=show&ID=265
http://www.no-ip.com/
http://www.whatismyip.com/
http://www.openssl.org/about/
http://www.mikrotik.com/download/winbox.exe
http://portforward.com/

Službeni dokumenti

http://tools.ietf.org/html/rfc1701
http://tools.ietf.org/html/rfc1702
http://tools.ietf.org/html/rfc1825
http://tools.ietf.org/html/rfc2104
http://tools.ietf.org/html/rfc2341
http://tools.ietf.org/html/rfc2401
http://tools.ietf.org/html/rfc2402
http://tools.ietf.org/html/rfc2406
http://tools.ietf.org/html/rfc2411
http://tools.ietf.org/html/rfc2637
http://tools.ietf.org/html/rfc2661
http://tools.ietf.org/html/rfc3193
http://tools.ietf.org/html/rfc4301
http://tools.ietf.org/html/rfc6040

Autori i podjela zadaća

Matej Divković

1 Uvod

2 VPN mreže

2.1 Bitne značajke
2.2 Koncept povezivanja
2.2.1 Remote-access VPN
2.2.2 Site-to-site VPN
2.3 Tuneliranje
2.3.1 OSI i Internet model u kontekstu VPN mreža
2.4 Pregled protokola i tehnologija
2.4.1 Generic Routing Encapsulation
2.4.2 Protokoli na OSI sloju 2
2.4.2.1 Point-to-Point Tunneling Protocol
2.4.2.2 Layer 2 Forwarding Protocol
2.4.2.3 Layer 2 Tunneling Protocol
2.4.2.4 L2TP/IPsec
2.4.3 Protokoli na OSI sloju 3
2.4.4 Protokoli na OSI sloju 4


2.7 Praktični dio
2.7.1 Tuneliranje Internet prometa kroz OpenVPN (Windows 7) - u cijelosti

Dejan Gubez

2.6 OpenVPN
2.6.1 Arhitektura
2.6.1.1 Enkripcija
2.6.1.1.1 OpenSSL
2.6.1.1.2 HMAC
2.6.1.2 Autentikacija
2.6.1.3 Networking
2.6.1.4 Sigurnost
2.6.2 Proširivost
2.6.3 Platforme
2.6.4 OpenVPN i Android
2.6.5 Prednosti OpenVPN nad IPSec VPN


Andrej Belić

2.5 IPsec

2.5.1 Authentication Header (AH) Protocol
2.5.2 ESP protokol
2.5.3 Security association (SA)
2.5.4 Način rada
2.5.4.1 Transportni način
2.5.4.2 Tunel način


2.7. Praktični dio

2.7.2 PPTP, Routerboard i iPhone
2.7.2.1 Postupak
Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima