|
|
(ei näidata 3 kasutaja 133 vahepealset redaktsiooni) |
1. rida: |
1. rida: |
− | ===Eesmärk===
| + | Kasutades avalikku ebaturvalist võrku võimaldab virtuaalne privaatvõrk (ingl. k. Virtual Private Network, VPN) korraldada osaliste arvutite ja alamvõrkude vahel turvalist andmevahetust. Reeglina osaleb VPN lahenduses enam kui kaks osapoolt või vähemalt tehnoloogiliselt see on võimalik. Virtuaalne privaatvõrk esineb kas etherneti (layer 2) või ip kihis (layer 3), mis tähendab, et virtuaalses privaatvõrgus omavahel suhtlevate rakenduste jaoks on põhimõtteliselt VPN olemasolu läbipaistev. VPN'i eeliseks muude turvalist suhtlemist võimaldavate lahenduste (nt tcp ühenduse tasemel toimuv ssh abil tehtav pordi suunamine) ees on, et rakendusi ei tule kuidagi spetsiifiliselt ette valmistada või seadistada ning andmevahetuse aluseks saab kasutada nn tavalist avalikku võrku ehk internetti, mille kasutamine on iseenesest suhteliselt odav. VPN ühendusega kaasnevat kanalit üle avaliku võrgu kahe otspunkti vahel nimetatakse tunneliks. |
| | | |
− | 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.
| + | Võrreldes muude VPN lahendustega on OpenVPN tarkvarale iseloomulik |
| | | |
− | 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. | + | * turvaline - kasutab SSL/TLS vahendeid ja töötab nö user-space'is erinevalt IPSec'ist, mis töötab kernel-space'is |
| + | * lihtne kasutada - toetab rohkelt erinevaid platvorme (Linux, BSD, Windows, MacOSX) ning on reeglina olemas paketihalduses |
| + | * funktsionaalne - nt võimaldab moodustada VPN lahendust etherneti ja ip kihis, praktiliselt sisaldab IPSec'iga samaväärseid võimalusi |
| + | * paindlik - kuna OpenVPN kasutab andmevahetuseks UDP protokolli, siis ei ole probleemiks nt NAT seadmete läbimine; aga OpenVPN serveri võib seadistada käima ka nt 443/tcp pordil |
| + | * vaba tarkvara - arendus toimub James Yonan'i eestvedamisel, http://openvpn.org/ |
| + | * VPNiga seotud seadmete MTU on 1500 baiti, st ip paketi sees on kasutada 1480 baiti (erinevalt nt IPSec lahendusest kus paketi sees on kasutada vähem) |
| | | |
− | tun/tap seade võib töötada kahes kihis
| + | Kuutõrvajas on OpenVPN tarkvara kasutusjuhendid jaotatud erinevateks tekstideks lähtudes kasutusjuhtudest, kusjuures OpenVPN kliendi platvormist ei sõltu oluliselt tema edukus serveriga suhtlemisel. |
| | | |
− | * layer 2 - etherneti kiht, nt moodustada sildu (Linuxi puhul tap) | + | * [[OpenVPNi lihtsad kasutusjuhud]] |
− | * layer 3 - ip kiht, tegeleda ruuditavate ip pakettidega (Linuxi puhul tun)
| |
| | | |
− | Kuna andmevahetuse krüptimisel kasutatakse sertifikaate, siis OpenVPN tarkvaraga koos jagatakse ka pisikest CA tarkvara, millega on mõnus sertifikaate hallata.
| + | Serverid |
| | | |
− | OpenVPN kasutamisel on oluline, et osalevate arvutite kellaajad oleksid õiged, alates sertifikaatide moodustamisest. | + | * [[:OpenVPN serveri kasutamine OpenBSD'ga]] |
| + | * [[:OpenVPN serveri kasutamine FreeBSD'ga]] |
| + | * [[:OpenVPN serveri kasutamine Debianiga]] |
| + | * [[:OpenVPN serveri kasutamine Eesti ID-kaardiga]] |
| | | |
− | ===OpenVPN tarkvara paigaldamine===
| + | Kliendid |
| | | |
− | Käesolevas tekstis kirjeldatakse OpenVPN tarkvara versioon 2.0 kasutamist.
| + | * [[:OpenVPN kliendi kasutamine OpenBSD'ga]] |
| + | * [[:OpenVPN kliendi kasutamine FreeBSD'ga]] |
| + | * [[:OpenVPN kliendi kasutamine Debianiga]] |
| + | * [[:OpenVPN kliendi kasutamine Windowsiga]] |
| + | * [[:OpenVPN kliendi kasutamine MacOSX'iga]] |
| | | |
− | Debianile tuleb paigaldada pakett openvpn
| + | Muud üldised tekstid |
| | | |
− | # apt-get install openvpn
| + | * [[:OpenVPN ja nimesüsteem]] |
| + | * [[:OpenVPN serveri haldusliides]] |
| + | * [[:Märkused OpenVPN kasutamise kohta]] |
| | | |
− | Käesoleva punkti edasine jutt puudutab OpenBSD poolt, mis on OpenVPN serveriks, seal moodustatakse kasutatavad sertifikaadid ja jaotatakse OpenVPN klientidele laiali.
| + | Abiks olevat materjal |
| | | |
− | OpenBSD arvutil paigaldada pakett openvpn
| + | * [[:Sertifikaadid]] Sertifitseerimiskeskuse loomine ja sertifikaadi kinnitamine |
| | | |
− | # pkg_add openvpn
| + | * http://wiki.itcollege.ee/index.php/VPN_seadistamine_OpenVPN-iga |
| | | |
− | ===OpenVPN ühenduse katsetamine===
| + | http://wiki.debian.org/OpenVPN |
− | | |
− | 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===
| |
− | | |
− | * http://www.openvpn.org/
| |
− | * http://blog.innerewut.de/2005/07/04/openvpn-2-0-on-openbsd
| |