Erinevus lehekülje "OpenVPN serveri kasutamine OpenBSD'ga" redaktsioonide vahel

Allikas: Kuutõrvaja
(OpenVPN tarkvara paigaldamine)
(Staatilise võtmega krüptitud ühendus)
176. rida: 176. rida:
 
   tuvike-openbsd# openvpn --remote 172.16.5.15 --dev tun0 --ifconfig 10.8.0.1 10.8.0.2 --verb 3 --secret saladus.key
 
   tuvike-openbsd# openvpn --remote 172.16.5.15 --dev tun0 --ifconfig 10.8.0.1 10.8.0.2 --verb 3 --secret saladus.key
 
   kalake-debian# openvpn --remote 172.16.2.1 --dev tun0 --ifconfig 10.8.0.2 10.8.0.1 --verb 3 --secret saladus.key
 
   kalake-debian# openvpn --remote 172.16.2.1 --dev tun0 --ifconfig 10.8.0.2 10.8.0.1 --verb 3 --secret saladus.key
 +
 +
===Sertifikaatide haldamine Easy-RSA tarkvara abil===
 +
 +
Lisaks krüptimita ja staatilise võtmega krüptitud ühendusele saab OpenVPNi seadistada kasutama avaliku võtme sertifikaate ja seda tulekski OpenVPNi nö tootmises kasutamisel eelistada. OpenVPN pakett sisaldab avaliku võtmega krüptimisel vajalike sertifikaatide halduseks pisikest CA programmide kompleti. Käesolevas punktis kirjeldatakse selle CA kasutamist OpenBSD platvormil, eesmärgiks on moodustada sertifikaadid ning need seejärel osa neist klientidesse kopeerida.
 +
 +
Esmalt 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
 +
 +
  # /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) []:ca.loomaaed.tartu.ee
 +
  Email Address [me@myhost.mydomain]: ca@ca.loomaaed.tartu.ee
 +
  ..
 +
 +
Tekivad failid
 +
 +
  /etc/openvpn/keys/ca.key
 +
  /etc/openvpn/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:'tuvike.loomaaed.tartu.ee'
 +
  emailAddress          :IA5STRING:'ca@ca.loomaaed.tartu.ee'
 +
  Certificate is to be certified until Jul 23 18:03:58 2018 GMT (3650 days)
 +
  Sign the certificate? [y/n]:y
 +
  ..
 +
 +
Tekivad failid
 +
 +
  /etc/openvpn/keys/server.key
 +
  /etc/openvpn/keys/server.crt
 +
 +
* OpenVPN kliendi sertifikaat, erinevatel klientidel peavad olema erinevad commonName'id
 +
 +
  # /usr/local/share/examples/openvpn/easy-rsa/build-key kalake
 +
  ..
 +
  The Subject's Distinguished Name is as follows
 +
  countryName          :PRINTABLE:'EE'
 +
  stateOrProvinceName  :PRINTABLE:'Tartu'
 +
  localityName          :PRINTABLE:'Tartu'
 +
  organizationName      :PRINTABLE:'LOOMAAED'
 +
  commonName            :PRINTABLE:'kalake.loomaaed.tartu.ee'
 +
  emailAddress          :IA5STRING:'ca@ca.loomaaed.tartu.ee'
 +
  Certificate is to be certified until Jul 23 18:11:25 2018 GMT (3650 days)
 +
  Sign the certificate? [y/n]:y
 +
  ..
 +
 +
Tekivad failid
 +
 +
  /etc/openvpn/keys/kalake.key
 +
  /etc/openvpn/keys/kalake.crt
 +
 +
Süsteemi CA sertifikaat ning kliendi sertifikaat ning salajane võti tuleb kopeerida kliendi arvutisse kasutades mõnda turvalist vahendit, nt SSH
 +
 +
  # scp /etc/openvpn/keys/kalake.crt /etc/openvpn/keys/kalake.key /etc/openvpn/keys/ca.crt root@kalake:/etc/openvpn/keys
 +
 +
* Diffie-Hellmani asjad
 +
 +
  # /usr/local/share/examples/openvpn/easy-rsa/build-dh
 +
 +
või sisuliselt samaväärne on öelda
 +
 +
  # openssl dhparam -out dh2048.pem 2048
 +
 +
 +
Tekib fail
 +
 +
  /etc/openvpn/keys/dh1024.pem
 +
 +
===Sertifikaatide haldamine TinyCA tarkvara abil===
 +
 +
Tundub, et TinyCA on suhteliselt sobiv praktiliseks kasutamiseks, lisaks muudab kasutamise mugavamaks graafiline haldusliides. TinyCA kasutamist on kirjeldatud palas http://kuutorvaja.eenet.ee/wiki/TinyCA_kasutamine

Redaktsioon: 24. juuni 2009, kell 17:35

Sissejuhatus

Käesolevas tekstis kirjeldatakse OpenVPN tarkvara kasutamist OpenBSD operatsioonisüsteemil, et võimaldada paljudele OpenVPN klientidele juurdepääsu serverist ligipääsetavatele võrkudele. Muu hulgas on võimalik selline kasutusjuhtum, et ka klientide avaliku võrgu kasutamine toimub üle OpenVPN serveri. Üldiselt võiks asjakorraldust illustreerida sellise skeemiga


                  klient1 
     klient 0                         klient2
 
                avalik võrk
                     .
                     .
                    ...
                     |   
                   __|__ em0 192.168.3.254/24
                  |     |
          server  |     | 
                  |_____|
              fxp0  | |  fxp1 172.16.2.1/28
                    | | alavõrk 2
                    |
                    | alamvõrk 1

Kui ressurssi on kasutada mõõtukalt, siis OpenVPN tarkvara on suhteliselt praktiline kasutada OpenBSD tulemüüris. Tulemüüris OpenVPN serveri pidamise puudusteks on

  • turvalisuse seisukohast oleks parem hoida tulemüüri kui väga kriitilist infrastruktuuri sõlme vaba teenustest, mida saab pidada ka mujal
  • kui tulemüür on realiseeritud klustrina, siis õlgade ümberlülitamisel katkevad kasutajate OpenVPN ühendused

Ruuditud ja sillatud ühendused

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 kahte erinevat OpenVPN kasutusjuhtu

  • ruuditud ühendus - tun/tap seade töötab ip kihis (layer 3), Linuxi puhul tun seade; andmevahetuses osalevate arvutite ip aadressid on jaotatud erinevatesse ip subnettide vahel
  • sillatud ühendus - tun/tap seade töötab etherneti kihis (layer 2), Linuxi puhul tap seade; andmevahetuses osalevad arvutid asuvad samas ip subnetis

Ruuditud ühendust kirjeldab selline skeem

              -------|-------- wire - 192.168.3.0/24 -----
                     |
                     |   
                   __|__ em0 192.168.3.254/24
                  |     |
       TUVIKE     |     |  tulemüür, tun0: 10.8.0.1 <--- P2P ---> 10.8.0.2
                  |_____|
                     |   fxp0 172.16.2.1/28
                     |
                     
                  internet               
 
                     |
                     |    172.16.5.15/30
                   __|__ 
                  |     |  
       KALAKE     |     |  nö üksik arvuti
                  |_____| 
                           tun0: 10.8.0.2 <--- P2P ---> 10.8.0.1

OpenVPN tulemusena moodustub mõlemasse arvutisse ruutivas režiimis tun seade (st point-to-point), mille ühest otsast saab pöörduda teise otsa poole. Lisaks saab läbi selliselt moodustatud ühenduse ruutida ka alamvõrke, näiteks

  • Kui Kalake OpenVPN klienida lisab oma ruutingutableisse, et 192.168.3.0/24 võrgu lüüsiks on 10.8.0.1, siis saab ta suhelda Tuvikese taga olevate arvutitega üle OpenVPN ühenduse.
  • Samuti on võimalik korraldada, et Kalake ruudib lisaks muid võrke sh avalikust internetist 10.8.0.1 peale, siis toimub ka nendega suhtlemine läbi OpenVPN ühenduse; põhimõtteliselt võib Kalake seada ka oma vaikelüüsiks 10.8.0.1, kuid siis peab kalake jätma oma ruutingutabelisse mõne erandi, et see ühendus üle avaliku interneti punktide 172.16.5.15 ja 172.16.2.1 vahel üle mille käib OpenVPN tunnel ise alles jääks.

Ruuditud ühenduse puhul paistab Tuvikesele ja sealtkaudu ligipääsetavatele arvutitele Kalakese ip aadressiks 10.8.0.2.

Sillatud ühendust kirjeldab selline skeem

              -------|-------- wire - 192.168.3.0/24 -----
                     |
                     |   
                   __|__ em0 192.168.3.254/24
                  |     |
       TUVIKE     |     |  tulemüür, bridge0: ip aadressi ei ole, tun0 ja em0 on sillaga kokku ühendatud
                  |_____|
                     |   fxp0 172.16.2.1/28
                     |
                     
                  internet               
 
                     |
                     |    172.16.5.15/30
                   __|__ 
                  |     |  
       KALAKE     |     |  nö üksik arvuti
                  |_____| 
                           tap0: Tuvikese OpenVPN serveri poolt omistatud mac aadress ja ip aadress

Sillatud režiimi puhul omistab Tuvikeses töötav OpenVPN Kalakese tun seadmele genereeritud mac aadressi ning 192.168.3.0/24 võrgust IP aadressi. Kalakese tap0 seade on üle tuvikese tun0 ja em0 seadmetest moodustatud silla ühendatud 192.168.3.0/24 võrku.

Seda kui palju Kalakesest väljuvat liiklust käib otse avalikku võrku läbi füüsilise seadme ja kui palju liigub läbi tunneli saab korraldada Kalakese ruutingutabli abil. Näiteks, et 10.0.100.0/24 võrgu suhtlemine toimuks läbi Tuvikese tuleb öelda Kalakeses

 # route add -net 10.0.100.0 netmask 255.255.255.0 gw 192.168.3.254

OpenVPN tarkvara paigaldamine

OpenBSD v. 4.5 sisaldab paketihalduses OpenVPN tarkvara versiooni 2.1_rc15, paigaldamiseks tuleb öelda

 # pkg_add openvpn

Pakett sisaldab pisikest sertifikaatide haldusprogrammi easy-rsa.

OpenVPN ruuditud ühenduse katsetamine

Katsetamine võib olla vajalik veendumaks, et arvutitesse on OpenVPN tarkvara paigaldamine õnnestunud, operatsioonisüsteemi tasemel ei ole mingeid takistusi, nt tun seadmete moodustamisel ning serveri ja kliendi versioonid omavahel sobivad.

Katsetada tuleks OpenBSD serveri ja mõne kliendiga, mida kavatsetakse kasutama hakata, antud juhul on katse tehtud Debiani kliendi abil.

Krüptimata ühendus

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

 tuvike-openbsd# openvpn --remote 172.16.5.15 --dev tun0 --ifconfig 10.8.0.1 10.8.0.2 --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.8.0.2 10.8.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: 172.16.5.15:1194
 Sat Jul 26 12:43:43 2008 Peer Connection Initiated with 172.16.5.15:1194
 Sat Jul 26 12:43:44 2008 Initialization Sequence Completed

ning öeldes Kalakeses

 kalake-debian# openvpn --remote 172.16.2.1 --dev tun0 --ifconfig 10.8.0.2 10.8.0.1 --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.8.0.1 pointopoint 10.8.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.2.1:1194
 Sat Jul 26 12:44:40 2008 Peer Connection Initiated with 172.16.2.1: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

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

ning Debiani poolel

 kalake-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.8.0.2  P-t-P:10.8.0.1  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

 tuvike-openbsd# openvpn --remote 172.16.5.15 --dev tun0 --ifconfig 10.8.0.1 10.8.0.2 --verb 3 --secret saladus.key
 kalake-debian# openvpn --remote 172.16.2.1 --dev tun0 --ifconfig 10.8.0.2 10.8.0.1 --verb 3 --secret saladus.key

Sertifikaatide haldamine Easy-RSA tarkvara abil

Lisaks krüptimita ja staatilise võtmega krüptitud ühendusele saab OpenVPNi seadistada kasutama avaliku võtme sertifikaate ja seda tulekski OpenVPNi nö tootmises kasutamisel eelistada. OpenVPN pakett sisaldab avaliku võtmega krüptimisel vajalike sertifikaatide halduseks pisikest CA programmide kompleti. Käesolevas punktis kirjeldatakse selle CA kasutamist OpenBSD platvormil, eesmärgiks on moodustada sertifikaadid ning need seejärel osa neist klientidesse kopeerida.

Esmalt 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
 # /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) []:ca.loomaaed.tartu.ee
 Email Address [me@myhost.mydomain]: ca@ca.loomaaed.tartu.ee
 ..

Tekivad failid

 /etc/openvpn/keys/ca.key
 /etc/openvpn/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:'tuvike.loomaaed.tartu.ee'
 emailAddress          :IA5STRING:'ca@ca.loomaaed.tartu.ee'
 Certificate is to be certified until Jul 23 18:03:58 2018 GMT (3650 days)
 Sign the certificate? [y/n]:y
 ..

Tekivad failid

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

Tekivad failid

 /etc/openvpn/keys/kalake.key
 /etc/openvpn/keys/kalake.crt

Süsteemi CA sertifikaat ning kliendi sertifikaat ning salajane võti tuleb kopeerida kliendi arvutisse kasutades mõnda turvalist vahendit, nt SSH

 # scp /etc/openvpn/keys/kalake.crt /etc/openvpn/keys/kalake.key /etc/openvpn/keys/ca.crt root@kalake:/etc/openvpn/keys
  • Diffie-Hellmani asjad
 # /usr/local/share/examples/openvpn/easy-rsa/build-dh

või sisuliselt samaväärne on öelda

 # openssl dhparam -out dh2048.pem 2048


Tekib fail

 /etc/openvpn/keys/dh1024.pem

Sertifikaatide haldamine TinyCA tarkvara abil

Tundub, et TinyCA on suhteliselt sobiv praktiliseks kasutamiseks, lisaks muudab kasutamise mugavamaks graafiline haldusliides. TinyCA kasutamist on kirjeldatud palas http://kuutorvaja.eenet.ee/wiki/TinyCA_kasutamine