Namen vaje
- Namestitev svojega virtualnega pod omrežja(VPN)
- Postavitev certifikatne agencije, ki podpisuje ključe
- Ustvarjanje javnih in zasebnih ključev
- Konfiguriranje ter uporaba NFS protokola za prenos datotek
Naloga na hitro
Ustvarite certifikatno agencijo - CA, server, na katerem bo postavljeno virtualno podomrežje(VPN), ter uporabnika, kateri se bo na to virtualno podomrežje povezal. Na server ter uporabnika namestite tudi NFS protokol, z katerim boste prenašali datoteke.
Navodila
- Navodila za virtualko: Server, Uporabnik, Certifikatna Agencija. Zaženite vse tri virtualke in pri vseh najprej počistite liste, da pri namestitvi OpenVPN ne pride do napake. To storite z: Rm /var/lib/apt/lists/* -vf. Ko se datoteke pobrišejo, vse virtualke ponovno posodobite: apt-get update.
- Na vse virtualke posnemite OpenVPN z Easy-RSA kodiranjem ter OpenSSH-Server z katerim boste prenašali ključe.
apt-get install openvpn
apt-get install openssh-server
... pi snemaju obeh med snemanjem potrditev opravite z vpisom »Y« ter klikom na »Enter«. - Navodila za virtualko: Server. Prestavite se v domačo mapo: cd , ter ustvarite datoteko za certifikate in se nato postavite v njo:
make-cadir server
cd server - Z urejevalnikom texta odprite datoteko »vars« ter vrednosti naslednjih podatkov spodaj izbrišite ter pustite prazne : nano vars
... pikazane podatke odkomentirajte po potrebi(zbrišite # pred podatkom) ter spremenite po spodnjem zgledu:
export KEY_CN = "NALOGA" (Isto kot boste nastavili pri CA!)
export KEY_NAME = "SERVER"
export KEY_OU = "FRI"
Datoteko shranite ter zaprite ( če uporabljate nano, pritisnite »ctrl« + »x«, da nato shranite spremembne pritisnite »Y« in potrdite z »ENTER« - ne spreminjajte imena datoteke tako da se spremembe shranijo v to isto datoteko) - Posodobite vars ter nato počistite vse nezaželjene certifikate:
source vars
./clean-all - Pojdite skozi konfiguracijo »build« ter ponastavite vrednosti:
./build-key-server --csr server
Vse vrednosti lahko pustite prazne (vse potrdite z tipko »Enter«) - Ustvarili ste ključa "server.key" ter "server.csr" v datoteki »keys«. Pošljite »server.csr« do CA virtualke, da ta to lahko ključ podpiše:
scp keys/server.csr root@<IP_CA virtualke>:
Vpraša vas ali ste prepričani o želji povezovanja, potrdite tako da vtipkate »yes« ter kliknete na »Enter«, nato je potreben vnos gesla virtualke CA: kaboom
... <IP_CA virtualke> pridobite tako, da na CA vtipkajte: ifconfig - Navodila za virtualko: Client. Prestavite se v domačo mapo: cd , ter ustvarite datoteko za certifikatein se nato postavite v njo:
make-cadir client
cd client - Z urejevalnikom texta odprite datoteko »vars« ter vrednosti naslednjih podatkov spodaj izbrišite ter pustite prazne :
nano vars
... pikazane podatke odkomentirajte po potrebi(zbrišite # pred podatkom) ter spremenite po spodnjem zgledu:
export KEY_CN = "NALOGA" (Isto kot boste nastavili pri CA!)
export KEY_NAME = "CLIENT"
export KEY_OU = "FRI"
Datoteko shranite ter zaprite ( če uporabljate nano, pritisnite »ctrl« + »x«, da nato shranite spremembne pritisnite »Y« in potrdite z »ENTER« - ne spreminjajte imena datoteke tako da se spremembe shranijo v to isto datoteko) - Posodobite vars ter nato počistite vse nezaželjene certifikate:
source vars
./clean-all - Pojdite skozi konfiguracijo »build« ter ponastavite vrednosti:
./build-req client
Vse vrednosti lahko pustite prazne (vse potrdite z tipko »Enter«) - Ustvarili ste ključa "client.key" ter "client.csr" v datoteki »keys«. Pošljite »client.csr« do CA virtualke, da ta to lahko ključ podpiše:
scp keys/client.csr root@<IP_CA virtualke>:
Vpraša vas ali ste prepričani o želji povezovanja, potrdite tako da vtipkate »yes« ter kliknete »Enter«, nato je potreben vnos gesla virtualke CA: kaboom
... <IP_CA virtualke> pridobite tako, da na CA vtipkajte: ifconfig - Navodila za virtualko: Certifikatna Agencija. Prestavite se v domačo mapo: cd , ter ustvarite datoteko za certifikate in se nato postavite v njo:
make-cadir ca
cd ca/ - Z urejevalnikom texta odprite datoteko »vars« ter vrednosti naslednjih podatkov spodaj izbrišite ter pustite prazne :
nano vars
... pikazane podatke odkomentirajte po potrebi(zbrišite # pred podatkom) ter spremenite po spodnjem zgledu:
export KEY_CN = "NALOGA" (vrednost katera je pri CA,Server in Client enaka)
export KEY_NAME = "CA"
export KEY_OU = "FRI"
Datoteko shranite ter zaprite ( če uporabljate nano, pritisnite »ctrl« + »x«, da nato shranite spremembne pritisnite »Y« in potrdite z »ENTER« - ne spreminjajte imena datoteke tako da se spremembe shranijo v to isto datoteko) - Posodobite vars ter nato počistite vse nezaželjene certifikate:
source vars
./clean-all - Pojdite skozi konfiguracijo »build« ter ponastavite vrednosti:
./build-ca
Vse vrednosti lahko pustite prazne (vse potrdite z tipko »Enter«)
(v primeru da pride do napake, zakomentirajte v datoteki /root/ca/openssl-1.0.0.cnf vrstici 198 ter 220:
nano /root/ca/openssl-1.0.0.cnf (v kateri vrstici ste preverite z »Crtl« + »C«)
subjectAltName=$ENV::KEY_ALTNAMES à #subjectAltName=$ENV::KEY_ALTNAMES - Ustvarili ste ključa "ca.key" ter "ca.csr" v datoteki »keys«. Sedaj v mapo »keys« prestavite tudi certifikata od Serverja ter Clienta katera ste prej poslali na CA.
mv ~/client.csr keys/ ter mv ~/server.csr keys/ - Prepričajte se da se nahajate v /root/ca/ direktoriju (ukaz »pwd«). Za podpis certifikatov uporabite naslednja ukaza:
./sign-req –server server
./sign-req client
Dvakrat je potrebno potrditi proces podpisovanja z »Y« ter klikom na »Enter« - Sedaj imate v mapi »keys« zraven vseh ostalih datotek, 3 podpisane certifikate, »ca.crt«, »server.crt« ter »client.crt«, katere bo potrebno spraviti nazaj na Server ter Clienta.
- Preverite kakšna IP-ja imata Server ter Client, ter jima z naslednjimi ukazi vrnite podpisane certifikate:
scp keys/server.crt root@<IP_SERVER>:server/keys/
scp keys/ca.crt root@<IP_SERVER>:server/keys/
scp keys/client.crt root@<IP_CLIENT>:client/keys/
scp keys/ca.crt root@<IP_CLIENT>:client/keys/
Pri vseh je včasih potrebno potrditi prenos z »yes« ter klikom na »Enter« , potem pa z vnosom gesla odjemalca, komu pošiljamo datoteko(v našem primeru imajo vsi isto geslo): kaboom - Navodila za virtualko: Server. V direktoriju /root/server/ (preverimo z ukazom »pwd«) zaženemo ukaz ./build-dh, s katerim ustvarimo (Diffie-Hellman) število za izmenjevanje skrivnosti (počakajte). Ko nonča se vam je v datoteki »keys« zgenerirala datoteka »dh2048.pem«
- V datoteko »keys« skopirajte datoteko »/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz« katero nato odzipajte:
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz keys/
gunzip keys/server.cong.gz - Z tekstovnim urejevalnikom odprite »server.conf« ter preverite da so ».crt«, ».key« ter »dh« datoteke pravilno naslovljene. V našem primeru je potrebno spremeniti samo »dh«:
nano keys/server.conf ter spremenite dh dh1024.pem v dh dh2024.pem - Premaknite se v datoteko »keys« : cd keys/ , ter zaženite OpenVPN z ukazom:
openvpn –config server.conf
Uspešno ste ustvarili OpenVPN strežnik, na katerega se z potrjenimi certifikati lahko priključijo klienti. Adapter ki ga uporabljamo je tun0 na naslovu 10.8.0.1. Priključimo še našega »Client«-a;
- Navodila za virtualko: Client. V datoteko »keys« skopirajte datoteko »/usr/share/doc/openvpn/examples/sample-config-files/client.conf« -
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf keys/ - Z tekstovnim urejevalnikom odprite »client.conf« ter preverite da so ».crt« ter ».key« datoteke pravilno naslovljene ter poimenovane. V našem primeru je potrebno spremeniti samo »remote my-server-1 1194«:
nano keys/client.conf
… ter popravite remote my-server-1 1194 na remote <IP_SERVER> 1194 - Prestavite se v mapo »keys« : cd keys/ , ter zaženite OpenVPN clienta z ukazom:
openvpn –config client.conf
Uspešno ste priključili klienta na OpenVPN.
- Postavitev NFS. Navodila za virtualko: Client, Server. Na obeh/vseh virtualkah posnemite NFS:
apt-get install nfs-common - Navodila za virtualko: Server. Na Serverju namestite še NFS-KRNEL-SERVER:
apt-get install nfs-kernel-server - Navodila za virtualko: Server, Client. Da preverite če vam NFS deluje/se izvaja preverite »rpcinfo«:
rpcinfo –p | grep nfs - Preverite tudi ali vaš sistem podpira NFS in izpisati se vam more nekaj takšnega:
cat /proc/filesystems | grep nfs - V primeru da vaš izpis ni kot omenjen na prejšnji točki morate naložiti NFS:
modprobe nfs - Sedaj bi moral »portmap« poslušati na Serverju in Clientu:
Rpcinfo –p | grem portmap - Navodila za virtualko: Server. Na Serverju ustvarite direktorij, v katerem boste imeli vašo datoteko:
mkdir /home/nfs/ … ter vanj skopirajte vašo datoteko cp <datoteka> /home/nfs/ - Potrebno je dodeliti pravice, kdo vse se bo lahko priklopil (mountal) do katere datoteke, ter kakšne pravice bo imel. V našem primeru je potrebno omejiti dostop datoteke samo preko VPN mreže. Če želite dovoliti večim v mreži samo ponovite ta postopek z različnimi IP-ji oziroma dodate masko (primir: /home/nfs/ 10.8.0.0/255.255.255.0(rw,sync) … pomeni da je direktorij /home/nfs/ dostopen vsem z IP-ji med 10.8.0.0 à10.8.0.255). Trenutno dodajmo pravice samo Clientu, kateri se nahaja na naslovu 10.8.0.6
echo '/home/nfs/ 10.8.0.6(rw,sync)' > /etc/exports - Po spremembi datoteke »exports« je potrebno ponovno zagnati NFS server oziroma osvežiti exporte:
/etc/init.d/nfs-kernel-server restart …oziroma exporfs -ra - Navodila za virtualko: Client. Ustvarite direktorij, v katerega se bo datoteka preko NFS prenesla:
mkdir /home/nfs_local - »Mountajte« se do Serverja, ki ima 2 naslova, svoj IP (preko njega ne boste mogli dostopati do direktorija, saj ni v VPN omrežju na katerega ste pravice dostopa direktorija omejili), ter naslov 10.8.0.1 kateri je naslov VPN omrežja in tudi preko tega je datoteka sedaj dostopna iz naslova 10.8.0.6 . Na koncu dopišete direktorij v katerega se bo direktorij »mountal«:
mount –t nfs 10.8.0.1:/home/nfs /home/nfs_local
Čestitke, nalogo ste uspešno opravili!