Erinevus lehekülje "OpenVPN" redaktsioonide vahel

Allikas: Kuutõrvaja
(OpenVPN ühenduse katsetamine)
(Eesmärk)
5. rida: 5. rida:
 
OpenVPN kasutab OpenBSD poolel tun seadet ning Linuxi poolel analoogilist tun/tap seadet. Need on virtuaalsed võrguseadmed, mis tähendab, et nad on realiseeritud tarkvaraliselt võimaldades neid kasutaval programmil saata andmeid operatsioonisüsteemi võrgu pinnu (ingl. k. networking stack) ning vastupidi, võtta sealt andmeid vastu.
 
OpenVPN kasutab OpenBSD poolel tun seadet ning Linuxi poolel analoogilist tun/tap seadet. Need on virtuaalsed võrguseadmed, mis tähendab, et nad on realiseeritud tarkvaraliselt võimaldades neid kasutaval programmil saata andmeid operatsioonisüsteemi võrgu pinnu (ingl. k. networking stack) ning vastupidi, võtta sealt andmeid vastu.
  
tun/tap seade võib töötada kahes kihis
+
tun/tap seade võib töötada kahes kihis võimaldades vastavalt kahte erinevat OpenVPN kasutusjuhtu
  
* layer 2 - etherneti kiht, nt moodustada sildu (Linuxi puhul tap)
+
* sillatud ühendus - tun/tap seade töötab etherneti kihis (layer 2), Linuxi puhul tap
* layer 3 - ip kiht, tegeleda ruuditavate ip pakettidega (Linuxi puhul tun)
+
* ruuditud ühendus - tun/tap seade töötab ip kihis (layer 3), Linuxi puhul tun
  
 
Kuna andmevahetuse krüptimisel kasutatakse sertifikaate, siis OpenVPN tarkvaraga koos jagatakse ka pisikest CA tarkvara, millega on mõnus sertifikaate hallata.
 
Kuna andmevahetuse krüptimisel kasutatakse sertifikaate, siis OpenVPN tarkvaraga koos jagatakse ka pisikest CA tarkvara, millega on mõnus sertifikaate hallata.

Redaktsioon: 26. juuli 2008, kell 13:04

Eesmärk

Käesolevas tekstis kirjeldatakse OpenVPN kasutamist eesmärgiga on seada käima turvaline ühendus ühe OpenBSD arvuti ja ühe või mitme Debian arvuti vahel, kusjuures OpenBSD juures töötab OpenVPN server režiimis ning Debianil klient režiimis.

OpenVPN kasutab OpenBSD poolel tun seadet ning Linuxi poolel analoogilist tun/tap seadet. Need on virtuaalsed võrguseadmed, mis tähendab, et nad on realiseeritud tarkvaraliselt võimaldades neid kasutaval programmil saata andmeid operatsioonisüsteemi võrgu pinnu (ingl. k. networking stack) ning vastupidi, võtta sealt andmeid vastu.

tun/tap seade võib töötada kahes kihis võimaldades vastavalt kahte erinevat OpenVPN kasutusjuhtu

  • sillatud ühendus - tun/tap seade töötab etherneti kihis (layer 2), Linuxi puhul tap
  • ruuditud ühendus - tun/tap seade töötab ip kihis (layer 3), Linuxi puhul tun

Kuna andmevahetuse krüptimisel kasutatakse sertifikaate, siis OpenVPN tarkvaraga koos jagatakse ka pisikest CA tarkvara, millega on mõnus sertifikaate hallata.

OpenVPN kasutamisel on oluline, et osalevate arvutite kellaajad oleksid õiged, alates sertifikaatide moodustamisest.

OpenVPN tarkvara paigaldamine

Käesolevas tekstis kirjeldatakse OpenVPN tarkvara versioon 2.0 kasutamist.

Debianile tuleb paigaldada pakett openvpn

 # apt-get install openvpn

Käesoleva punkti edasine jutt puudutab OpenBSD poolt, mis on OpenVPN serveriks, seal moodustatakse kasutatavad sertifikaadid ja jaotatakse OpenVPN klientidele laiali.

OpenBSD arvutil paigaldada pakett openvpn

 # pkg_add openvpn

OpenVPN ühenduse katsetamine

Selleks, et veenduda, et arvutitesse on OpenVPN tarkvara paigaldamine õnnestunud sh virtuaalsete seadmete jaoks on olemas vajalikud tuumamoodulid ning osaliste versioonid omavahel sobivad.

Krüptimata ühendus

Lihtsamal juhul, kus andmevahetust ei krüptita pole vaja midagi ettevalmistada, vajalikud parameetrid näidatakse käsureal

 kalake-openbsd# openvpn --remote 192.168.50.144 --dev tun0 --ifconfig 10.4.0.2 10.4.0.1 --verb 3 
 Sat Jul 26 12:43:33 2008 OpenVPN 2.0.9 i386-unknown-openbsd4.3 [SSL] [LZO] built on Mar 13 2008
 Sat Jul 26 12:43:33 2008 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA.  OpenVPN 2.  0-beta16 and earlier used 5000 as the default port.
 Sat Jul 26 12:43:33 2008 ******* WARNING *******: all encryption and authentication features disabled -- all data will be tunnelled as cleartext
 Sat Jul 26 12:43:33 2008 /sbin/ifconfig tun0 destroy
 Sat Jul 26 12:43:33 2008 /sbin/ifconfig tun0 create
 Sat Jul 26 12:43:33 2008 NOTE: Tried to delete pre-existing tun/tap instance -- No Problem if failure
 Sat Jul 26 12:43:33 2008 /sbin/ifconfig tun0 10.4.0.2 10.4.0.1 mtu 1500 netmask 255.255.255.255 up
 Sat Jul 26 12:43:33 2008 TUN/TAP device /dev/tun0 opened
 Sat Jul 26 12:43:33 2008 Data Channel MTU parms [ L:1500 D:1450 EF:0 EB:4 ET:0 EL:0 ]
 Sat Jul 26 12:43:33 2008 Local Options hash (VER=V4): '08b6a7d0'
 Sat Jul 26 12:43:33 2008 Expected Remote Options hash (VER=V4): '7d01953d'
 Sat Jul 26 12:43:33 2008 UDPv4 link local (bound): [undef]:1194
 Sat Jul 26 12:43:33 2008 UDPv4 link remote: 192.168.50.144:1194
 Sat Jul 26 12:43:43 2008 Peer Connection Initiated with 192.168.50.144:1194
 Sat Jul 26 12:43:44 2008 Initialization Sequence Completed
 tuvike-debian# openvpn --remote 172.16.0.254 --dev tun0 --ifconfig 10.4.0.1 10.4.0.2 --verb 3
 Sat Jul 26 12:44:34 2008 OpenVPN 2.1_rc7 i486-pc-linux-gnu [SSL] [LZO2] [EPOLL] built on Jun 16 2008
 Sat Jul 26 12:44:34 2008 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA.  OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
 Sat Jul 26 12:44:34 2008 ******* WARNING *******: all encryption and authentication features disabled -- all data will be tunnelled as cleartext
 Sat Jul 26 12:44:34 2008 TUN/TAP device tun0 opened
 Sat Jul 26 12:44:34 2008 TUN/TAP TX queue length set to 100
 Sat Jul 26 12:44:34 2008 /sbin/ifconfig tun0 10.4.0.1 pointopoint 10.4.0.2 mtu 1500
 Sat Jul 26 12:44:34 2008 Data Channel MTU parms [ L:1500 D:1450 EF:0 EB:4 ET:0 EL:0 ]
 Sat Jul 26 12:44:34 2008 Local Options hash (VER=V4): '7d01953d'
 Sat Jul 26 12:44:34 2008 Expected Remote Options hash (VER=V4): '08b6a7d0'
 Sat Jul 26 12:44:34 2008 Socket Buffers: R=[109568->131072] S=[109568->131072]
 Sat Jul 26 12:44:34 2008 UDPv4 link local (bound): [undef]:1194
 Sat Jul 26 12:44:34 2008 UDPv4 link remote: 172.16.0.254:1194
 Sat Jul 26 12:44:40 2008 Peer Connection Initiated with 172.16.0.254:1194
 Sat Jul 26 12:44:40 2008 Initialization Sequence Completed

Kummassegi arvutiss moodustatakse automaatselt tun seade ning seadistatakse vastavalt käsureal näidatud parameetritele, OpenBSD poolel

 kalake-openbsd# ifconfig tun0 
 tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
       groups: tun
       inet 10.4.0.2 --> 10.4.0.1 netmask 0xffffffff

ning Debiani poolel

 tuvike-debian# ifconfig tun0
 tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
           inet addr:10.4.0.1  P-t-P:10.4.0.2  Mask:255.255.255.255
           UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
           RX packets:31 errors:0 dropped:0 overruns:0 frame:0
           TX packets:33 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:100 
           RX bytes:4604 (4.4 KiB)  TX bytes:5508 (5.3 KiB)

Ühenduse kontrollimisel peab saama teise arvutisse üle võrgu ligi, nt pingida või ssh abil sisse logida pöördudes tunneli teise otsa aadressiga. Millegipärast OpenBSD poolel ei saa nö omapoolse otsa poole pöörduda, aga praktiliselt ei ole see ka oluline.

Staatilise võtmega krüptitud ühendus

Sarnane eelmisele, kuid ühenduse krüptimiseks kasutavad osalised ühist saladust staatilise võtme kujul. Esmalt tuleb moodustada saladus öeldes

 # cd /etc/openvpn
 # openvpn --genkey --secret saladus.key

Seejärel kopeerida teisele osalisele ning öelda

 kalake-openbsd# openvpn --remote 192.168.50.144 --dev tun0 --ifconfig 10.4.0.2 10.4.0.1 --verb 3 --secret saladus.key
 tuvike-debian# openvpn --remote 172.16.0.254 --dev tun0 --ifconfig 10.4.0.1 10.4.0.2 --verb 3 --secret saladus.key

Sertifikaatide ettevalmistamine

Seejärel tuleb moodustada mõned kataloogid ja failid

 # mkdir /etc/openvpn /etc/openvpn/keys
 # touch /etc/openvpn/keys/index.txt
 # echo 01 > /etc/openvpn/keys/serial
 # cp /usr/local/share/examples/openvpn/easy-rsa/openssl.cnf /etc/openvpn

Seada sobivab keskkonnamuutujad

 # . /usr/local/share/examples/openvpn/easy-rsa/vars

Seejärel tuleb genereerida sertifikaadid

  • Süsteemi CA sertifikaat
 # cd /etc/openvpn/keys
 # /usr/local/share/examples/openvpn/easy-rsa/build-ca

Oluline on, et CA ja järgneval serveri sertifikaadil oleks sama organisatsiooni nimi, sisestage mõistlikud andmed, näiteks

 ...
 Country Name (2 letter code) [KG]:EE
 State or Province Name (full name) [NA]:Tartu
 Locality Name (eg, city) [BISHKEK]:Tartu
 Organization Name (eg, company) [OpenVPN-TEST]:LOOMAAED
 Organizational Unit Name (eg, section) []:
 Common Name (eg, your name or your server's hostname) []:aix.loomaaed.tartu.ee
 Email Address [me@myhost.mydomain]:
 ..

Tekivad failid

 keys/ca.key
 keys/ca.crt
  • OpenVPN serveri sertifikaat
 # /usr/local/share/examples/openvpn/easy-rsa/build-key-server server
 ...
 The Subject's Distinguished Name is as follows
 countryName           :PRINTABLE:'EE'
 stateOrProvinceName   :PRINTABLE:'Tartu'
 localityName          :PRINTABLE:'Tartu'
 organizationName      :PRINTABLE:'LOOMAAED'
 commonName            :PRINTABLE:'tuler.loomaaed.tartu.ee'
 emailAddress          :IA5STRING:'me@myhost.mydomain'
 Certificate is to be certified until Jul 23 18:03:58 2018 GMT (3650 days)
 Sign the certificate? [y/n]:y
 ..

Tekivad failid

 ./keys/server.key
 ./keys/server.crt
  • OpenVPN kliendi sertifikaat
 # /usr/local/share/examples/openvpn/easy-rsa/build-key emmija
 ..
 The Subject's Distinguished Name is as follows
 countryName           :PRINTABLE:'EE'
 stateOrProvinceName   :PRINTABLE:'Tartu'
 localityName          :PRINTABLE:'Tartu'
 organizationName      :PRINTABLE:'AUUL'
 commonName            :PRINTABLE:'emmija.loomaaed.tartu.ee'
 emailAddress          :IA5STRING:'me@myhost.mydomain'
 Certificate is to be certified until Jul 23 18:11:25 2018 GMT (3650 days)
 Sign the certificate? [y/n]:y
 ..

Tekivad failid

 ./keys/emmija.key
 ./keys/emmija.crt
  • Diffie-Hellmani ajad
 # /usr/local/share/examples/openvpn/easy-rsa/build-dh

Tekivad failid

 ./keys/dh1024.pem

OpenVPN ruuditud lahenduse seadistamine

OpenVPN sillatud lahenduse seadistamine

Sillatud lahendust illustreerib näiteks selline skeem


Vajalik on moodustada sild füüsilise ja tun seadme vahele

 # ifconfig bridge0 create
 # ifconfig tun0 link0 up
 # brconfig bridge0 add em1 add tun0

Serveri poolel sobib kasutada sellist seadistusfaili bridge režiimis

 # cat /etc/openvpn/openvpn.conf
 local 10.0.10.251
 port 1194
 proto udp
 dev-type tap
 dev tun0
 ca keys/ca.crt
 cert keys/server.crt
 key keys/server.key
 dh keys/dh1024.pem
 server-bridge 172.16.0.254 255.255.255.0 172.16.0.210 172.16.0.220
 ifconfig-pool-persist /tmp/ipp.txt
 push "redirect-gateway local def1"
 keepalive 10 120
 comp-lzo
 user nobody
 group nobody
 persist-key
 persist-tun
 status /var/log/openvpn-status.log
 verb 3 

Ning sellist seadistusfaili route režiimis

 # cat /etc/openvpn/openvpn.conf
 local 10.0.10.251
 port 1194
 proto udp
 dev tun0
 ca keys/ca.crt
 cert keys/server.crt
 key keys/server.key
 dh keys/dh1024.pem
 server 10.8.0.0 255.255.255.0
 ifconfig-pool-persist /tmp/ipp.txt
 push "redirect-gateway local def1"
 keepalive 10 120
 comp-lzo
 user nobody
 group nobody
 persist-key
 persist-tun
 status /var/log/openvpn-status.log
 verb 3

Käivitamiseks tuleb öelda

 # cd /etc/openvpn
 # openvpn --config openvpn.conf

OpenVPN kliendi seadistamine - Debian

OpenVPN kliendile vajalikud võtmed moodustatakse OpenVPN serveris ja kopeeritakse klienti, vajalikud on sellised failid

 # scp keys/sid1.crt keys/sid1.key keys/ca.crt root@192.168.50.144:/etc/openvpn

Kliendi poolel sobib bridge režiimis kasutada sellist seadistusfaili

 # cat /etc/openvpn/openvpn.conf
 client
 dev tap
 proto udp
 remote 10.0.10.251
 resolv-retry infinite
 nobind
 persist-key
 persist-tun
 ca ca.crt
 cert sid1.crt
 key sid1.key
 comp-lzo
 verb 3

Käivitamine toimub öeldes

 # cd /etc/openvpn
 # openvpn --config openvpn.conf

Kasulikud materjalid