OpenVPN

VPN način: točka-na-točko

V tem članku si bomo podrobneje pogledali način povezave točka-na-točko, pri čemer se vzpostavi navidezno zasebno omrežje med največ dvema računalnikoma.

Pri takšnem načinu je ena točka zasidrana in predstavlja strežnik, medtem ko je preostala, druga točka lahko poljubna in predstavlja odjemalca. Takšno omrežje seveda dopušča več različnih odjemalcev, vendar je lahko sočasno povezan le en odjemalec. S postavitvijo več omrežij točka-na-točko in povezovanjem nastalih navideznih omrežij lahko med seboj povežemo tudi več odjemalcev, vendar se v takšnih primerih priporoča preostale načine povezovanja, ki jih podpira OpenVPN.

Prednosti povezave točka-na-točko

Pomanjklivosti povezave točka-na-točko

Uporaba tajnega ključa

Za zaščito prometa oziroma za zagotavljanje zasebnosti je potrebno izdelati tajni ključ, s katerim se bo šifriral promet. Tega lahko ustvarimo z naslednjim ukazom, ki bo shranil tajni ključ v datoteko secret.key.

$ openvpn --genkey --secret secret.key

Uporabo ustvarjenega tajnega ključa uvedemo z nastavitvijo secret preko argumentov ali preko datoteke nastavitev.

Ustvarjen tajni ključ, dolžine 2048 bitov oziroma 256 zlogov, ima sledečo glavo in je zapisan v šestnajstiškem sistemu, katerega sestavlja 16 vrstic, v vsakemu po 16 zlogov.

$ head -n 5 secret.key
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
a1ee79ecc5c58317e035c57d53392787

Tajni ključ se ne uporablja v celoti, temveč se uporablja v delih; en del (ali dva dela) za šifrirni mehanizem in en del (ali dva dela) za zgostitveno funkcijo. Najdaljši del, ki ga lahko uporabi šifrirni mehanizem, je dolg 256 bitov (2 vrstici) in najdaljši del, ki ga lahko uporabi zgostitvena funkcija 512 bitov (4 vrstice).

Število uporabljenih delov, enega ali dva, določa vrednost drugega parametra nastavitve secret. Če je ta prisoten, pomeni 0 prvi par in 1 drugi par.

Pri strežniku naj se uporabi en par in pri odjemalcu pa preostali par.

Primeri postavitev navideznih zasebnih omrežij v načinu točka na točko

1. primer – enostaven primer povezave

V prvem primeru bomo postavili predor brez varovanja. Na strežniku bo OpenVPN poslušal na privzetih vratih UDP 1194 ter ustvaril TUN prilagodilni člen, ki bo imel ip naslov 10.2.0.1. IP naslov določa prvi argument nastavitve ifconfig.

[root@server] # openvpn --dev tun --ifconfig 10.2.0.1 10.2.0.2

Na odjemalcu prav tako poženemo OpenVPN s TUN prilagodilnem členom, pri čemer zamenjamo parametra argumenta ifconfig in dodamo argument remote, s katerim določimo naslov strežnika.

[root@client] # openvpn --dev tun --ifconfig 10.2.0.2 10.2.0.1 --remote server.bogus

Kot omenjeno bo takšno navidezno omrežje ostalo brez varovanja, kar nam sporoča naslednja vrstica.

******* WARNING *******: all encryption and authentication features disabled -- all data will be tunnelled as cleartext

Prikaže se nam mrežni vmesnik tun0, ki ima MTU nastavljen na 1500.

[root@client] # ip addr show dev tun0
3: tun0:  mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100
    link/none 
    inet 10.2.0.2 peer 10.2.0.1/32 scope global tun0
       valid_lft forever preferred_lft forever

Sedaj lahko preverimo, če nam omrežje deluje.

[root@client] # ping -c 3 10.2.0.1
PING 10.2.0.1 (10.2.0.1) 56(84) bytes of data.
64 bytes from 10.2.0.1: icmp_seq=1 ttl=64 time=0.381 ms
64 bytes from 10.2.0.1: icmp_seq=2 ttl=64 time=0.338 ms
64 bytes from 10.2.0.1: icmp_seq=3 ttl=64 time=0.467 ms

--- 10.2.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.338/0.395/0.467/0.056 ms

2. primer – primer zaščitene povezave

V drugem primeru bomo med računalnikoma vzpostavili zaščiteno omrežje, pri čemer bomo uporabili tajni ključ, AES-256-CBC šifrirni mehanizem in SHA384 zgoščevalno funkcijo. Datoteka z nastavitvami za strežnik je sledeča.

dev tun
ifconfig 10.2.0.1 10.2.0.2
secret secret.key 0
cipher AES-256-CBC
auth SHA384

Datoteka z nastavitvami za odjemalec je sledeča.

dev tun
ifconfig 10.2.0.2 10.2.0.1
secret secret.key 1
cipher AES-256-CBC
auth SHA384

Možnost secret določa datoteko s tajnim ključem in število za tem uporabljen par. Možnosti cipher in auth določata šifrirni mehanizem oziroma zgoščevalno funkcijo.

Strežnik in odjemalec zaženemo z dodatnimi argumenti, s katerim določimo datoteko z nastavitvami in naslov strežnika, kamor se odjemalec poveže. Če želimo več informacij o dogajanju (pred, med in po vzpostavitvi), lahko dodamo --verb 7.

[root@server] # openvpn --config server.conf
[root@client] # openvpn --config client.conf --remote server.bogus

Po desetih sekundah se vzpostavi zasebno zaščiteno omrežje, katerega delovanje lahko preverimo tako kot prej. Če želimo, da se OpenVPN izvaja v ozadju dodamo daemon v datoteko z nastavitvami ali --daemon kot argument.