Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
EESTI INFOTEHNOLOOGIA KOLLEDŽ
Aivar Guitar
KÜBERKAITSE MOODULI VIRTUAALLABORITE
LAHENDUSE LOOMINE EESTI
INFOTEHNOLOOGIA KOLLEDŽI NÄITEL
Diplomitöö
INFOTEHNOLOOGIA SÜSTEEMIDE ADMINISTREERIMISE ÕPPEKAVA
Juhendaja M. Ernits
Tallinn 2009
AUTORIDEKLARATSIOON
Deklareerin, et käesolev diplomitöö, mis on minu iseseisva töö tulemus, on esitatud
Eesti Infotehnoloogia Kolledžile lõpudiplomi taotlemiseks Infosüsteemide
administreerimise erialal. Diplomitöö alusel ei ole varem eriala lõpudiplomit taotletud.
Autor A. Guitar……………………….
(allkiri ja kuupäev)
Töö vastab kehtivatele nõuetele
Juhendaja M. Ernits…………………………
(allkiri ja kuupäev)
2
Sisukord
Lühendite ja tähiste loetelu.........................................................................................................4
Sissejuhatus.................................................................................................................................7
Lõputöö eesmärk....................................................................................................................8
Analüüs..................................................................................................................................... 11
Analoogsed lahendused........................................................................................................11
Virtualiseerimine..................................................................................................................13
Pilvarvutus........................................................................................................................... 17
Nõuded labori virtualiseerimistehnoloogiale....................................................................... 19
Virtualiseerimistehnoloogia valik........................................................................................ 21
Eucalyptuse tutvustus............................................................................................................... 23
Tehniline teostus....................................................................................................................... 25
Installeerimine......................................................................................................................26
Pilve haldus ja varundamine................................................................................................ 27
Tõmmiste ettevalmistamine................................................................................................. 29
Näidisrakenduste loomine....................................................................................................31
Prototüübi piloteerimine........................................................................................................... 34
Edasised tööd............................................................................................................................ 35
Kokkuvõte.................................................................................................................................36
Summary...................................................................................................................................38
Kasutatud kirjanduse loetelu.....................................................................................................40
Lisad......................................................................................................................................... 42
Lisa 1 – upload-bundle.sh.................................................................................................... 42
Lisa 2 – delete-bundle.sh..................................................................................................... 44
Lisa 3 – get_state.py.............................................................................................................45
Lisa 4 – Näidisrakendus RoR baasil.................................................................................... 46
index.html.erb..................................................................................................................46
start.html.erb....................................................................................................................47
status.html.erb................................................................................................................. 48
stop.html.erb....................................................................................................................49
restart.htm.erb..................................................................................................................50
3
Lühendite ja tähiste loetelu
BalticCloud
Eucalyptusel baseeruva pilvarvutus teenuse pakkuja
CC
Cluste Controller, Eucalyptuse pilve osa, tegeleb NCde haldamisega
CERT
Computer Emergency Response Team, RIA infoturbeintsidentide käsitlemise osakond
CLC
Cloud Controller, Eucalyptuse pilve osa, tegeleb CCde haldamisega
DHCP
Dynamic Host Configuration Protocol, protokoll võrguaadressi saamiseks
EC2
Elastic Compute Cloud, firma Amazon pilvarvutuse teenus
Eucalyptus
Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems,
avatud lähtekoodiga tarkvara, teostamaks pilvarvutust arvutite kogumil
IAAS
Infrastructure as a Service, infrastruktuur kui teenus, pilvarvutuse liik
KVM
Kernel-based Virtual Machine, virtualiseerimistarkvara
4
LDAP
Lightweight Directory Access Protocol, kataloogiteenuse protokoll
NC
Node Controller, Eucalyptuse pilve osa, tegeleb virtuaalsete masinate haldamisega
OpenBSD
vaba UNIX laadne operatsioonisüsteem
PAAS
Platform as a Service, platvorm kui teenus, pilvarvutuse liik
RIA
Riigi Infosüsteemide Arenduskeskus
Ruby
objektorienteeritud programmeerimiskeel
RoR
Ruby on Rails, programmeerimiskeelel Ruby-l baseeruv veebirakenduste loomise
raamistik
SAAS
Software as a Service, tarkvara kui teenus, pilvarvutuse liik
SLA
Service Level Agreement, leping teenusepakkuja ja kasutaja vahel, kus on kirjas lepingu
kehtivusaja kestel oodatav teenusekvaliteet
SOAP
Simple Object Access Protocol, protokoll struktureeritud info vahetuseks
Vmware
virtualiseerimisplatvorm EMC korporatsiooni kuuluvalt firmalt VMware
WS-Security
Web Services Security, kommunikatsiooniprotokoll tagamaks veebiliikluse
konfidentsiaalsust ja terviklikkust
Xen
avatud lähtekoodiga virtualiseemistarkvara
5
avalik pilv
public cloud, pilvarvutuse teenusepakkujatelt renditav pilv
bare metal hypervisor
otse riistvaral töötav hüperviisor
guest
külaline, virtuaalses masinas töötav operatsioonisüsteem
host
peremeesoperatsioonisüsteem, millel töötab virtualiseerimistarkvara
hosted hypervisor
operatsioonisüsteemil töötav hüperviisor
hüperviisor
hypervisor, tarkvara, mis kontrollib erinevatele operatsioonisüsteemi eksemplaridele
eraldatud ressursse
privaatpilv
privat cloud, organisatsioonisisene pilv, mis ei ole mõeldud avalikuks kasutamiseks
snapshot
hetkeseisu koopia, mida kasutatakse virtuaalsete masinate teatud ajahetke seisu
salvestamiseks
6
Sissejuhatus
2009. aasta juunis alustati projektiga “Administreerimise õppemooduli loomine
koostöös RIA ja CERT Eestiga "Praktiline küberkaitse IT süsteemide administraatoritele"”.
Projekti eesmärgiks on tõsta IT spetsialistide infoturbealast kompetentsi. Projekti
ettevalmistus algas RIA-poolse initsiatiiviga, mis juhtis tähelepanu riigi, kohalike
omavalitsuste ja erafirmade IT süsteemide administreerimise spetsialistide
kompetentsivähesusele rakendusliku küberkaitse alal. Projekti alguskuupäev on 15.06.2009
ning lõppkuupäev 31.08.2015. Projekti kogumaksumus on 3,5 miljonit krooni ja seda
rahastab Euroopa Liidu Sotsiaalfond sihtasutus Archimedese kaudu.
Projekti partnerid - Eesti Infotehnoloogia sihtasutuse (EITSA) poolt hallatav Eesti
Infotehnoloogia kolledž (ITK) ja Riigi Infosüsteemide Arenduskeskuse (RIA)
infoturbeintsidentide käsitlemise osakond (CERT - Computer Emergency Response Team).
Projekt on seotud EV Kaitseministeeriumi poolt loodud strateegilise juhise "Küberjulgeoleku
strateegia 2008–2013" alapeatükiga 3.3 "Infoturbealane väljaõpe ja täienduskoolitus" [3].
Mainitud strateegiajuhis on heaks kiidetud Eesti Vabariigi valitsuse korraldusega nr 201
"Küberjulgeoleku strateegia 2008–2013" 8. maist 2008.a.
Projekt koosneb järgnevatest allosadest:
• õppekava arendus - õppemooduli eesmärkide, õpiväljundite ja ainekavade
määratlemine;
• õppematerjalide koostamine - loengumaterjalid, õppevideod, laborid ja metoodika;
• virtuaallaborite süsteem - interaktiivse laboriinfrastruktuuri loomine;
• õppetöö läbiviimine - pilootvoorude koolitamine.
7
Projekt on mahukas ja pikaajaline, ning on omakorda jaotatud mitmeks iseseisvaks
projektiks, millest käesolev töö on projekti "Virtuaallaborite süsteemi loomine" allprojekt.
Virtuaallaborite süsteemi loomise projekt jaguneb järgnevateks allprojektideks:
• e-õppe kauglaborite automaatse hindamise ja tagasiside süsteem - projekt on alanud,
teostaja C.Fischer;
• virtualiseerimise allprojekt (käesolev lõputöö);
• õppematerjalide moodul - projekt algab 2010. aastal;
• laboriaja broneerimise moodul - projekt algab 2010. aastal.
Lõputöö eesmärk
Töö "Küberkaitse mooduli virtuaallaborite lahenduse loomine Eesti Infotehnoloogia
Kolledži näitel" eesmärgiks on valida platvorm virtuaallaborite läbiviimiseks ja luua toimiv
prototüüp. Töö tegemisel tuleb arvestada, et küberkaitse moodul koosneb suures osas
laboritest, mis on mahukad ja keerulised. Samuti peab arvestama sellega, et õppurid on
enamasti töötavad spetsialistid, seepärast on vajalik ka distantsõppe võimaldamine.
Distantsõpe võimaldab praktikumide läbiviimist õppurile sobival ajal ja kohas. Keerulised
laborid vajavad pidevat tagasisidet ja õppejõu poolset abistamist. Näiteks on labor
mitmeetapiline ning iga osa eeldab eelneva edukat teostust või õppejõu poolset kontrolli.
Tehnilistel erialadel viiakse tihti läbi praktikume, kus kasutatakse tarkvara, mida õpilane ei
saa installeerida oma arvutisse. Põhjuseks võivad olla nõuded infrastruktuurile, näiteks e-
maili praktikum vajab eelhäälestatud serverite kogumit. Käesolev lõputöö leiab lahenduse
probleemile, kuidas läbi viia keerukaid kauglaboreid tavapärase distantsõppe raames.
Lõpetuseks kirjeldatakse nõudeid süsteemi edasiseks arenduseks.
Alljärgnevalt on toodud diplomitöö põhieesmärgid:
• analüüsida kauglaborite virtualiseerimise võimalusi;
• disainida virtuaallabori süsteem;
• luua süsteemi prototüüp;
• luua arhitektuur ja nõuded süsteemi edasiseks arenduseks.
8
Kauglaborite näidisarhitektuur, mille virtualiseerimise allsüsteemi käesolev töö
käsitleb. Vaata joonist 1.
Joonis 1 Kauglabori näidisarhitektuur
Diplomitöö käigus leitakse vastused järgnevatele küsimustele:
• millist virtualiseerimissüsteemi laborite loomisel kasutada;
• leida lahendus mallide kasutamisele, labori hetkeseisu salvestamisele ning
virtuaalmasinate haldamiseks;
• realiseerida prototüüp ITK keskkonnas.
Lõputöö teema aktuaalsusele viitab kasvav vajadus kvalifitseeritud küberkaitse
spetsialistide järele. Väljavõte riigi küberjulgeoleku strateegiast: "Siiski on ilmne, et nii era-
kui ka avalikus sektoris kasvab vajadus kvalifitseeritud infoturbespetsialistide järele, sest
praegu on kompetentsus valdavalt väheste selle alaga tegelevate inimeste käes. Infoturbealast
süvendatud väljaõpet ei pakkunud 2007. aasta lõpu seisuga Eestis ühegi avalik-õigusliku ega
9
eraülikooli õppekava ei bakalaureuse-, magistri- ega doktoriõppe tasandil. Infoturbe
korraldamise oskusi pole seni õpetatud ka kutsehariduse raames. Infoturbe praktiline
kompetentsus on kogunenud erasektorisse, eeskätt pankadesse. Eesti kriitilise infrastruktuuri
institutsioonide küsitlus 2007. aastal näitas, et suurimaks puuduseks infoturbe vallas peetakse
kvalifitseeritud tööjõu nappust" [3].
Lõputöö realiseerimisel kasutab autor järgnevaid meetodeid :
• võrdlev analüüs - tarkvara funktsionaalsuse võrdlus;
• valitud tarkvara funktsionaalsuse testimine;
• süsteemi liidestamine ülejäänud moodulitega;
• pilootsüsteemi loomine.
Töö koosneb järgmistest osadest:
• analüüs - vaadeldakse erinevaid laborite lahendusi, erinevaid virtualiseerimise
vahendeid ning valitakse vahendid teostuseks;
• tehniline teostus - kirjeldatakse töö teostust eelnevalt valitud vahendite abil;
• prototüübi piloteerimine - näidislabori koostamine ja testimine;
• edasised tööd – tuuakse esile, mida on vaja teha edaspidi töö sidumiseks projekti teiste
allosadega.
10
Analüüs
Käesolev töö on allosa projektist - Administreerimise õppemooduli loomine koostöös
RIA ja CERT Eestiga "Praktiline küberkaitse IT süsteemide administraatoritele". Projekti
üldine eesmärk on luua EITSA poolt hallatavas ITK IT süsteemide administreerimise
õppekavale tasemeõppe moodul, mis on kasutatav ka täiendusõppes. Projekti raames luuakse
virtuaalne labori- ja testikeskkond õppe läbiviimiseks ja tulemuste hindamiseks, kuna tänased
e-õppe keskkonnad ei paku laboratoorsete tööde tegemise võimalust. Keskkonnad peavad
võimaldama distantsõpet, sest eeldame, et tulevased õppurid paiknevad laiali üle Eesti ja
soovivad oma labori tegemise aega ise valida.
Analoogsed lahendused
Labori läbiviimise võimalusi on mitmeid. Tavapäraselt toimuvad need klassiruumis,
kus on vajalik infrastruktuur arvutite ja tarkvara kujul juba olemas. Näiteks toimub ITKs aine
"Linuxi administreerimine" (I357) arvutiklassis, kus igaüks saab arvuti koos virtuaalmasinaga
labori sooritamiseks. Antud lahendus sobib siis, kui ülesande sooritamiseks on vajalik ainult
üks masin, mis ei pruugi piisav olla juhul, kui tahetakse teha keerulisemaid praktikume, kuna
need võivad nõuda mitmeid eri funktsionaalsusega virtuaalmasinaid.
Kui tegemist on distantsõppega, siis taoline lähenemisviis ei sobi. Sellisel juhul saab
kasutada näiteks laboreid, mille sooritamiseks laetakse vajalik tarkvara ning ülesanded
veebiserverist oma kohalikku arvutisse. Üks näide selle kohta on Cisco CCNA laborid [7],
kus tehakse veebiteenusel teste ja laetakse alla ülesandeid oma arvutis oleva võrguemulaatori
11
(Cisco Packet Tracer) jaoks. See lahendus sobib ainult juhul kui tegemist on võrgu ja
võrguseadmete häälestamisega.
Distantsõppe jaoks on oma lahenduse väljatöötanud näiteks Microsoft oma "Microsoft
Virtual Labs" [14] nimelise rakenduse näol. Kasutaja saab ligipääsu virtuaalsesse arvutisse,
kus siis eelnevalt allalaaditud õpetuse järgi lahendatakse ülesannet. Eelmainitud lahendus on
piisav distantsõppe jaoks, kuid selle probleemiks on süsteemipoolse tagasiside puudumine -
tudeng ei saa informatsiooni selle kohta, kas kõik läheb plaanipäraselt või mitte. Samuti
puudub võimalus labori seisu salvestamiseks ja hilisemaks jätkamiseks. Antud rakenduses on
toetatud ainult MS Windows ning tegevus toimub ühe masina piires, mis tähendab, et see ei
pruugi olla piisav keerulisemate ülesannete teostamiseks.
Laboreid on katsetatud läbi viia ka virtuaalses maailmas [2]. Virtuaalseks maailmaks
on siin "Second Life", kus viidi läbi turvakoolitus. Õppurid pidid ära konfigureerima poest
ostetud ruuteri. Hinnati parooli valikut, paranduste installeerimist ja üldist häälestamist.
Keerulisemaid ülesandeid, nagu operatsioonisüsteemi paigaldust ja seadistamist sellises
virtuaalses keskkonnas teha ei saa, kuna operatsioonisüsteemi emuleerimine virtuaalses
keskkonnas on keerukas ning teostamine töömahukas.
Tabel 1
Laborite läbiviimise võrdlus
mitme masina
kasutamise
võimalus
distantsõppe
võimalus
interaktiivne
tagasiside
seisu
salvestamine
õppeklass jah ei jah jah Cisco CCNA ei jah ei ei Microsoft Virtual Labs ei jah ei ei Second Life ei jah jah ei
Vaadates tabelit 1 võime kokkuvõtlikult öelda, et uuritud valmislahendused ei ole
otstarbekad keeruliste küberlaborite läbiviimiseks.
Analoogseid lahendusi uurides selgus, et kauglaborite puhul kasutatakse tihti
virtualiseerimist. Kuna kasutatava laborikeskkonna eluiga on lühike - iga praktikumi jaoks
12
tekitatakse uus keskkond, siis on mõttekas kasutada virtuaalseid masinaid. Nende loomine on
lihtsam kui füüsilise masina ümberinstalleerimine. Virtuaalseid masinaid võib ühe füüsilise
masina peal olla rohkem kui üks, mis tähendab, et me saame ühe füüsilise arvuti peal korraga
kasutada mitut erinevat virtuaalmasinat, milles töötavad näiteks erinevad
operatsioonisüsteemid. Samuti on virtuaalse masina puhul lihtsustatud jooksva seisu
salvestamine või eelneva taastamine. Virtualiseerimise puhul on toetatud riistvara hulk
piiratud, mis raskendab spetsiaalse riistvara kasutamist. Näiteks jadaliidesesse ühenduvat
krüptoseadet ei saa me samaaegselt ühendada mitme laboriarvuti jadaliidesesse. Hetkel
planeeritud laboristsenaariumites ei ole sellist riistvara kasutatud.
Virtualiseerimine
Virtualiseerimine on üldine ja lai mõiste. Esimest korda kasutati seda mõistet 1960.
aastatel. IBM System/360 masinal käivitati paralleelselt mitu üksteisest eraldatud keskkonda
[13]. Raudvara oli väga kallis ning sellise virtualiseerimisega loodi kliendile mulje, et ta
omab oma masinat. x86 arhitektuuriga arvutitel tekkis raudvaraline tugi virtualiseerimiseks
alles 2005. aastal Inteli ning 2006. aastal AMD protsessoritele. Virtualiseerimise ulatus võib
varieeruda ühest seadmest kuni suurte andmekeskusteni ning võib olla suunatud serverite,
võrkude, andmehoidlate ja rakenduste virtualiseerimiseks. Antud töös kasutame sõna
virtualiseerimine serverite virtualiseerimise mõistes. Serverite virtualiseerimise üheks
eesmärgiks on keskkondade loomine füüsilise riistvara ja virtualiseerimise tarkvara abil,
saavutamaks ressursside optimaalse kasutuse. Antud tarkvara võimaldab füüsilist riistvara
jagada mitme virtuaalse masina vahel. Selleks loob tarkvara virtualiseerimiskihi riistvara ja
virtuaalse masina vahele, mis näitab virtuaalsele masinale virtuaalset riistvara. Kui vaadelda
füüsilist serverit, siis sellel on oma protsessor, mälu, võrk ja kettad. Kui tegemist on
virtuaalsete masinatega, siis võib näha kõiki neid komponente, kuid virtualiseerimiskiht
serveri riistvaral võimaldab jagada neid olemasolevaid füüsilisi ressursse mitme virtuaalse
masina vahel. Seega võib näiteks kahe protsessoriga serveril olla kuus erinevat virtuaalset
masinat, millel võivad olla erinevad operatsioonisüsteemid ja rakendused. Iga
operatsioonisüsteem näeb oma virtuaalset riistvara ja seega ei satu konflikti teiste sama
füüsilise riistvaral töötavate operatsioonisüsteemidega.
Virtualiseerimist võib klassifitseerida mitmeti, näiteks hüperviisori (hypervisor)
13
tarkvara järgi, mille ülesandeks on kontrollida erinevatele operatsioonisüsteemi
eksemplaridele eraldatud ressursse. Virtualiseerimiskihte saame jagada kahte klassi:
• tüüp 1, otse riistvaral töötav hüperviisor (type 1, bare metal hypervisor);
• tüüp 2, operatsioonisüsteemil töötav hüperviisor (type 2, hosted hypervisor).
Tüüp 1 (joonis 2) töötab otse riistvaral, mille kontrolli all on kõik
operatsioonisüsteemi eksemplarid, sealhulgas hüperviisori haldamiseks mõeldud
juhtimiskonsool. Antud tüüpi kuuluvad näiteks VMware ESX Server, Citrix XenServer ja
Microsoft Hyper-V.
Joonis 2 Otse riistvaral töötav hüperviisor
Kõik kolm nimetatud toodet on suletud litsentsiga kommertstooted. Kõige suurema
funktsionaalsusega neist on VMware ESX Server, kuna toetatud operatsioonisüsteemide arv
on kõige suurem [18].
14
Joonis 3 Operatsioonisüsteemil töötav hüperviisor
Tüüp 2 (joonis 3) puhul on hüperviisoriks tarkvara mis kasutab operatsioonisüsteemi
riistvara kasutamiseks. Antud tüüpi kuuluvad näiteks VMware Player, VirtualBox, Microsoft
Virtual PC ja KVM.
VMware Player ja MS Virtual PC on suletud litsentsiga, VirtualBox ja KVM on
vabatarkvara. Toetatud operatsioonisüsteemide hulk on erinevatel toodetel võrdne.
Kui võrrelda omavahel tüüp 1 ja tüüp 2 hüperviisorit, siis kummalgi on oma plussid.
Tüüp 1 hüperviisori puhul on tarkvara kiht virtuaalmasina ja reaalse riistvara vahel õhem,
seega jõudluse kadu on väiksem. Tüüp 2 toetub aga olemasolevale operatsioonisüsteemile
ning seetõttu on riistvara hulk, mida kasutada saab, suurem.
15
Reeglina töötab virtualiseeritud režiimis kasutusel oleval arvutil üks põhiline
operatsioonisüsteem (host), millest kontrollitakse teiste (guest) operatsioonisüsteemide
tegevust. Virtualiseerimist saab liigitada ka tehnika põhjal:
• riistvara emuleerimine - Bosch, DOSBox, QEMU - võimaldab kasutada muu riistvara
jaoks mõeldud operatsioonisüsteeme;
• täielik virtualiseerimine - KVM, VMware, VirtualBox - toetab sama riistvaralise
platvormi jaoks mõeldud modifitseerimata guest operatsioonisüsteeme;
• paravirtualiseerimine - Xen, User-mode Linux (UML) - saab kasutada vaid
modifitseeritud tuumaga guest operatsioonisüsteeme, mis on mõeldud sama
riistvaralise platvormi jaoks, guest operatsioonisüsteemis töötavad modifitseerimata
rakendused;
• operatsioonisüsteemi tasemel virtualiseerimine - FreeVPS, OpenVZ, FreeBSD jails -
kõik töötavad operatsioonisüsteemi eksemplarid, sealhulhas host, kasutavad sama
tuuma.
Tabel 2
Virtualiseermistarkvara võrdlus
Guest OS Litsents Bosch Linux, xBSD, Windows, DOS LGPL DOSBox DOS GPL QEMU Linux, xBSD, Windows GPL / LGPL KVM Linux, xBSD, Windows GPL v2 VMware Linux, xBSD, Windows suletud VirtualBox Linux, xBSD, Windows GPL v2 Xen Linux, FreeBSD, NetBSD, Windows GPL UML Linux GPL v2 FreeVPS Linux GPL v2 OpenVZ Linux GPL FreeBSD jail FreeBSD BSD
Erinevaid lahendusi virtualiseerimiseks on palju. Erinevad tarkvarad pakuvad ka
erinevaid võimalusi. Lihtsamad programmid võimaldavad minimaalset virtuaalse riistvara
tuge, keerulisematel tarkvaradel on aga tugi suuremale hulgale virtuaalsele tarkvarale.
Näiteks 3D kiirendi tugi on tabelis 2 toodud toodetel ainult VMware ja VirtualBox. Oluline
omadus on ka oskus seisu salvestada, nn snapshoti tegemine. See tähendab, et on võimalik
16
virtuaalse masina seis salvestada ning hiljem uuesti taastada
Pilvarvutus
Pilvarvutuse levik on oluline suundumus IT tööstuses ning sellel on erinevaid
definitsioone. Lühike kokkuvõte oleks - pilvarvutus on uus lähenemine IT-teenustele -
lõppkasutaja kasutab teenust ainult siis, kui ta seda reaalselt vajab. Paljud neist teenustest on
kättesaadavad Internetis ja kasutajad maksavad aja eest, mil nad teenust tarbivad.
Pilvarvutuse saab jagada osadeks - IAAS (Infrastructure as a Service), PAAS (Platform as a
Service) js SAAS (Software as a Service), vaata joonis 4. IAAS esindajaks on näiteks
Amazon EC2, pakkudes kasutajatele virtuaalseid masinaid, mida ta siis oma äranägemise
järgi kasutab. Google AppEngine on aga SAAS tüüpi teenus - kasutajal on ette antud ainult
varem kindlaks määratud tarkvara [4].
Joonis 4 Pilvarvutuse teenuste jagunemine
17
Pilvarvutuse populaarsuse kasvule on kaasa aidanud järgnevad nüansid:
• teadmine, et alati saab ressurssi juurde koheselt kui seda vaja - selle teadmisega pole
enam vaja ette planeerida ressursi juurde ostmist;
• saab alustada odavalt - alustav firma ei pea kohe endale valmis ostma suurt
arvutiparki, vaid rendib kasvades ressurssi juurde;
• võimalus lühiajaliseks kasutuseks võimsust juurde osta - mingi suurema töö jaoks on
võimalik koheselt võimsust juurde saada ning sellest koheselt ka loobuda, kui töö on
valmis.
Pilvarvutusele on ka vastaseid. Näiteks Richard Stallman, Vaba Tarkavara Sihtasutuse
(Free Software Foundation) asutaja, peab seda suureks lõksuks. Tema arvates pilvarvutuse
teenusepakkujad seovad kasutajad suletud koodiga tarkvara külge, mis läheks kasutajale aina
rohkem ja rohkem maksma [1].
Kuid olemas on ka pilvarvutuse teenusepakkujaid kes kasutavad vabavaralist
pilvtarkvara.
Pilvarvutuse areng on tihedalt seotud virtualiseerimise arenguga. Kõige tuntum
pilvarvutuse ressursi pakkuja on Amazon. 2006. aastal tuli firma turule teenusega Elastic
Compute Cloud (EC2), mis võimaldas väikeettevõtetel ja üksikisikutel rentida virtuaalseid
arvuteid ning käivitada nendes oma rakendusi. Tänapäeval on sellise teenuse pakkujaid
mitmeid, näiteks:
• Amazon EC2 [5];
• Cloud Hosting [12];
• GoGrid [11];
• Eucalyptus Systems [8];
• BalticCloud [6].
Eraldi peaks välja tooma Eucalyptuse. Tegemist on teenusega, mis kasutab avatud
lähtekoodiga tarkvara. Seda tarkvara kasutades on võimalik kasutada nii Eucalyptuse kui ka
18
näiteks Amazon EC2 teenust. Samuti võimaldab antud tarkvara tekitada oma riistvaral
privaatse pilve. Kauglaborite virtualiseerimise funktsionaalsuse saavutamiseks on antud
tehnoloogia sobilik.
Pilvarvutuse juures kasutatakse termineid - privaatne pilv (private cloud) ja avalik pilv
(public cloud). Avalik pilv on teenus, mida saab osta. Privaatne pilv aga on
organisatsioonisisene andmekeskus, mis ei ole mõeldud avalikuks kasutamiseks. Meie
lahendus on planeeritud kasutama privaatset pilve, kuid vajaduse korral saab liituda avaliku
pilvega.
Takistused pilvarvutuse kasutamisel:
• teenuse kättesaadavus - tihti rünnatakse teenusepakkujaid raha väljapressimise
eesmärgil;
• jõudluse probleemid - samas füüsilises masinas olevad virtuaalmasinad hakkavad
üksteist segama;
• andmeedastuse kitsaskohad - võrguühendus ei ole piisav suurte andmemahtude
edastamiseks;
• litsentseerimise probleemid.
Loetud takistused ei ole antud töö jaoks väga olulised. Eeldame, et minimaalne
laborite läbiviimiseks vajalik arvutusvõimsus on kohapeal ja välise teenuse kättesaadavus ei
katkesta õppetööd. Kuna planeeritavad laborid ei ole protsessorinõudlikud ega vaja suuri
andemeedastusmahte, siis teine ja kolmas punkt ei tekita meile komplikatsioone.
Litsentseerimisprobleemide vastu aitab avatud lähtekoodi kasutamine.
Nõuded labori virtualiseerimistehnoloogiale
Peale tutvumist erinevate virtualiseerimisplatvormidega, pidades silmas distantsõppe
laborite vajadusi, saab määratleda nõudeid valitud tehnoloogiale. Nõuete määratlemine
toimus projekti koosolekute käigus.
19
• kui võimalik siis kasutada ainult tasuta ja avatud lähtekoodiga programme;
• skaleeruvus;
• labori seisu salvestamine;
• varundamine.
Projekti tulemus peab olema võimalikult taaskasutatav ja vajadusel muudetav, sellest
ka avatud lähtekoodi (litsents) nõue. Samuti peab kogu projekti tulemusena loodud materjal
olema kättesaadav kolmandale osapoolele ega tohi olla piiratud litsentsi tingimustega.
Joonis 5 Arvutusvõimsuse vajadus koolitustel
Skaleeruvuse all peetakse silmas, et vajadusel peab saama laboreid läbi viia
minimaalse riistvaraga, näiteks tavapärase õppetöö tegemiseks. Kuid vajadusel peab süsteem
võimaldama ka suurte koolituste läbiviimist. Näiteks kui toimub 60 õppuri koolitus ja iga
inimese kohta on vaja 3 erinevat masinat, siis tuleb korraga töökorda seada 90
virtuaalmasinat. Antud olukord on kujutatud joonisel 5. Punane joon nr. 1 näitab olukorda,
20
kus arvutusvõimsust on liiga vähe, joon nr. 3 näitab olukorda, kus arvutusvõimsust on
piisavalt ka kõige kulukamate laborite läbiviimiseks ning joon nr. 2 kirjeldab olukorda, kus
raudvara on piisav tavaliste laborite läbiviimiseks, kuid jääb napiks suuremate praktikumide
puhul. Ei ole otstarbekas osta riistvara, millest piisaks kõigi laborite läbiviimiseks, kuna siis
oleks riistvara tavaolukorras alakasutatud. Sellist olukorda saaks vältida kui kasutataks
pilvarvutust. Kohapeal oleks privaatne pilv, millest piisaks enamuse laborite läbiviimiseks
(joon nr. 2) ja suuremate koolituste puhul saaks võimsust juurde rentida teenusepakkuja
avalikust pilvest. Siit tekib ka nõue võimalikuks pilvarvutuse kasutamiseks.
Labori seisu salvestamine on väga oluline funktsionaalsus. Kauglaborite puhul, eriti
kui nad on keerulised, ei saa me eeldada, et see tehakse ära n.ö. ühe hingetõmbega. Selleks
ongi vajalik labori seisu salvestamine ning hilisem jätkamine. Ka labori kontrolliks õppejõu
poolt on tarvis labori vahepealse salvestamise võimalus, mis annab õppejõule mingi kindla
seisu taastamist ja sellele hinnangu andmist.
Väga oluline on ka baaskonfiguratsiooni ja mallide varundamine. Laborimasinad ise
tekitatakse dünaamiliselt ja ei vaja varundamist, kuid kindlasti on seda tarvis aga lõpetamata
laborite salvestatud seisude jaoks.
Virtualiseerimistehnoloogia valik
Vastavalt ülaltoodud nõuetele ja eelnevalt läbiviidud analüüsile, otsustati pilvarvutuse
kasuks. Antud tehnoloogia vastas kõigile püstitatud nõuetele. Järgnevas tabelis võrdleme
erinevaid tooteid:
Tabel 3
Pilvarvutuse tarkvara võrdlus
privaatse pilve
kasutamisvõimalus
avalik
pilv
virtuaalmasinad litsents
VMware vCloud jah jah VMware suletud Amazon EC2 ei jah Xen suletud Eucalyptus jah jah KVM, Xen, VMware GPL v3
21
Vaadates tabelit 3, näeme, et esitatud nõuetele vastab ainult Eucalyptus, mille
litsentsitingimused on samuti sobivad. See on skaleeritav - võimalik installida nii kohalikul
riistvaral kui ka juurde osta arvutusvõimsust (antud teenust pakuvad nii Eucalyptus ise kui ka
BalticCloud). Lisaks on kasutatav virtualiseerimistehnika valitav. Tänu nendele omadustele
sai kasutatavaks pilvarvutuse süsteemiks valitud Eucalyptus.
Järgnevates peatükkides räägitakse lähemalt Eucalyptist ning tema installeerimisest
testkeskkonda.
22
Eucalyptuse tutvustus
Eucalyptus - Elastic Utility Computing Architecture for Linking Your Programs To
Useful Systems - on avatud lähtekoodiga tarkvara teostamaks pilvarvutust arvutite kogumil.
Eucalyptus liides on ühilduv Amazon EC2 liidesega, kuna tegemist on ühe kõige tuntuma
kommertsiaalse pilvarvutuse pakkujaga , mis omab korralikku dokumentatsiooni. Eucalyptus
on koostatud vabavaralistest vahenditest ning kasutajaliides on veebipõhine. Tarkvara on
disainitud kasutamaks nii privaatpilvi kui ka avalikke pilvi. Algselt oli tegemist akadeemilise
uurimisprojektiga [9].
Eucalyptus sisaldab järgmist funktsionaalsust:
• liidestus Amazon EC2 platvormiga;
• lihtne paigaldus ja kasutusele võtmine;
• toetus enamlevinud Linuxi distributsioonidel;
• turvaline sisekommunikatsioon kasutades SOAP tehnoloogiat koos WS turvalisusega
(WS-Security);
• sisseehitatud töövahendid pilve administreerimiseks ja kasutajate haldamiseks;
• võimalus pilves seadistada mitu klastrit erinevate sisevõrgu aadressidega.
Eucalyptus on jagatud kolmeks osaks:
• Cloud Controller (CLC);
• Cluster Controller (CC);
• Node Controller (NC).
23
Joonis 6 Eucalyptuse näidistopoloogia
Cloud Controller on veebiteenusel baseeruv kasutajaliides, mis võimaldab süsteemi
konfigureerimist. Cluster Controller tegeleb virtuaalse võrgu haldamisega ja NC kogumi
haldusega. Node Controller installitakse igasse füüsilisse masinasse ja selle eesmärgiks on
suhtlus virtuaalsete masinatega. Näidistopoloogia on ära toodud joonisel 6.
24
Tehniline teostus
Joonisel 7 on kujutatud käesoleva töö ja projekti "E-õppe kauglaborite automaatse
hindamise ja tagasiside süsteem ITK küberkaitse mooduli näitel" omavaheline seotus. Antud
projekt on vahekihiks hindamise süsteemi ja reaalse pilve vahel.
Joonis 7 Hindamise ja tagasiside süsteem
25
Installeerimine
Testkeskkond installeeriti ITK riistvarale ning Eucalyptuse kõik komponendid
mahutati ühte arvutisse. Testmasina olulisemad parameetrid on järgnevad:
• Intel Core2 ([email protected]);
• 2GB mälu;
• 80GB ketas.
Teostati tavapärane Ubuntu 9.10 64-bitise serveri installatsioon. Antud
operatsioonisüsteem valiti, kuna installeerimise käigus saab valida pilvarvutuse tarkvara.
Pakettide lisamise näidist vaata jooniselt 8.
Joonis 8 Ubuntu installatsioon
Peale testkeskkonna ettevalmistamist tuleb muuta failis
/etc/eucalyptus/eucalyptus.conf lubatud virtuaalmasinate arvu. Vaikimisi on
Eucalyptus häälestatud nii, et arvutis saab käivitada ühe virtuaalse masina protsessori iga
26
tuuma kohta. Selle arvu suurendamiseks muutsime muutuja MAX_CORES väärtust. Sobiv
väärtus sõltub kasutusel olevast riistvarast ning reeglina muutub piiranguks olemasolev mälu,
kuna virtuaallaborid ei ole protsessorinõudlikud.
Võimaldamaks RoR rakenduse installeerimist privaatpilve juhtivale arvutile, tuleb
kasutada raamistikuga kaasas olevat veebiserverit või paigaldada arvutisse Phusion
Passenger lahendus [15]. Seda tehakse järgneva käsuga:
apt-get install libapache2-mod-passenger
Apache veebiserveri vaikimisi konfiguratsioonifailis /etc/apache2/sites-
enabled/000-default tuleb seada muutuja DocumentRoot, mis viitab RoR
rakenduse public kaustale, kus paiknevad avalikult kättesaadavad failid, nagu ikoonid, stiilid,
skriptid ja vealehed.
Pilve haldus ja varundamine
Teenuse toimimise kontrolliks kasutame järgnevat käsku:
service eucalyptus status
Pilve kasutamiseks on olemas komplekt käsurea programme (euca-*). Näiteks
saame vaadata kui palju on pilves vahendeid:
euca-describe-availability-zones verbose
Korralduse väljund oli testkeskkonnas järgmine:
AVAILABILITYZONE elab 192.168.13.111
AVAILABILITYZONE |- vm types free / max cpu ram disk
AVAILABILITYZONE |- m1.small 0008 / 0014 1 128 2
AVAILABILITYZONE |- c1.medium 0004 / 0007 1 256 5
AVAILABILITYZONE |- m1.large 0002 / 0003 2 512 10
AVAILABILITYZONE |- m1.xlarge 0001 / 0001 2 1024 20
AVAILABILITYZONE |- c1.xlarge 0000 / 0000 4 2048 20
27
Pilve varundamisel tuleb teha regulaarseid koopiaid konfiguratsioonifailidest, kasutaja
võtmetest, andmebaasist. Sobivaks regulaarsuseks on kord nädalas täiskoopia- ja päeva
jooksul muudetud failide varundamine igal öösel. Laborite virtuaalmasinate mallid tuleb
varundada peale nende muutmist ning regulaarne kopeerimine pole vajalik.
Varundada regulaarselt järgmised kataloogid:
/etc/eucalyptus
/var/lib/eucalyptus/keys
/var/lib/eucalyptus/db
/var/lib/eucalyptus/bukkits
/var/lib/eucalyptus/volumes
Ülejäänud kaustad /var/lib/eucalyptus kataloogis luuakse töö käigus ning neid ei ole
vaja taastada.
Pilve taastamiseks olukorras, kus riistvara on hävinud, tuleb installeerida Ubuntu
Server operatsioonisüsteem vastavalt ülaltoodud juhendile ning taastada eelpool loetletud
kataloogid varukoopiast. Konfiguratsioonifailide hävimise korral piisab varukoopiast
taastamisest.
Turvalisus - kasutajaliides kasutab HTTPS protokolli, olulisi isikuandmeid ei edastata
ning alati on võimalik teha uued võtmed. Administraatoril tuleb kasutada piisava keerukusega
ssh ja veebirakenduste parooli. Sertifikaatide privaatvõtmete kompromiteerimise kahtluse
puhul tuleb võtmed pilve administreerimiseliidese abil uuesti luua.
Laborite lõppkasutajad autenditakse, kasutades ITK LDAP andmebaasi.
Virtuaalmasinatesse sisenemiseks genereeritakse tudengile ssh võtmepaar, mis luuakse iga
labori puhul uuesti ja mis kehtib töö tegemise ajal vaid antud kasutajaga seotud masinates.
28
Eucalyptuse installatsioonipaketis on kaasas näidised jälgimssüsteemidele Nagios ja
Ganglia kasutamiseks. Informatsiooni pilve erinevate osade seisundi kohta saab aadressilt:
http://<Pilve aadress>:8773/services/Heartbeat
Näidisväljund:
name=bootstrap enabled=true local=true initialized=true
name=eucalyptus enabled=true local=true initialized=true
name=walrus enabled=true local=true initialized=true
name=dns enabled=true local=false initialized=true
name=storage enabled=true local=true initialized=true
name=db enabled=true local=true initialized=true
name=cluster enabled=true local=true initialized=true
Pilve jälgimiseks saab kohandada mitmeid seiresüsteeme, kuna väljund on kergesti töödeldav
nii inimesele, kui ka masinale.
Tõmmiste ettevalmistamine
Pilve tööks vajalikud tõmmiseid (images) saab alla laadida Ubuntu veebiserverist.
Seal on tõmmised enamlevinud Linuxi distributsioonidega. Samuti saab vajaliku tõmmise ise
ette valmistada. Selleks, et neid Eucalyptuse pilve installeerida ning vajadusel sealt kustutada,
loodi abiprogrammid. Vaata lisa 1 (upload-bundle.sh) ja lisa 2 (delete-bundle.sh).
Olemasolevad tõmmised olid kõik Linux distributsioonidega, seepärast tegime ise ühe
tõmmise OpenBSD operatsioonisüsteemiga. Eucalyptuse virtuaalmasina komplekt koosneb
kolmest failist - tuumast, mälukettast ja kõvaketta tõmmisest. OpenBSD puhul kasutati
tuumaks memdisk paketist syslinux [17] ja mälukettaks oli tõmmis bootkettast, millele oli
installeeritud Grub [10] tarkvara. Kõvaketta tõmmise loomiseks kasutatakse KVMi:
kvm -curses -hda openbsd.img -cdrom install46.iso -boot d
Seejärel paigaldada OpenBSD 4.6 operatsioonisüsteem ja seadistada järgnevad parameetrid:
• keelata mpbios (muidu lõpetab töö pärast rida - setting tty flags);
• määrata jadaliides konsooliks;
29
• seadistada võrgukaart DHCP-d kasutama.
Keelame mpbiosi, et masinat oleks võimalik käivitada:
boot> boot -c
...
UKC> disable mpbios
352 mpbios0 disabled
UKC> quit
...
# config -ef /bsd
ukc> disable mpbios
352 mpbios0 disabled
ukc> quit
Saving modified kernel.
#
Määrame jadaliidese konsooliks, muutes failis- /etc/ttys rida:
tty00 "/usr/libexec/getty std.9600" unknown off
reaks
tty00 "/usr/libexec/getty std.9600" vt220 on secure
ning seejärel
echo "set tty com0" >>/etc/boot.conf
Järgmise käivitamise ajal läheb konsooli väljund jadaliidesesse. Kui tekib vajadus eelnevad
seaded taastada, siis tuleb arvuti alglaadimisel sisestada:
boot> set tty pc0
seejärel muuta boot.conf faili
Seadistame võrgukaardi kasutama DHCP-d.
30
Eelnevalt kuvage võimalike võrgukaartide nimistu:
$ kvm -net nic,model=?
Näidisväljund:
Supported NIC models:
ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio
Võrgukaart rtl8139 on valitud vaikimisi, kuid OpenBSD jaoks see ei sobi, sest annab
järgnevaid veateateid:
re0: watchdog timeout
Eucalyptus kasutab vaikimisi võrgukaardina e1000, mis on antud valikus kiireim.
OpenBSD süsteemis kaardi e1000 määramiseks tuleb kasutada järgnevat korraldust:
echo dhcp >/etc/hostname.em0
Näidisrakenduste loomine
Projekti raames loodav näidisrakendus on ette nähtud küberkaitse mooduli teistele
allprojektidele. Virtuaallaborite aja broneerimise-, õppematerjalide- ja tagasiside ning testide
allsüsteemide programmeerijad saavad näiterakendust kasutada:
• laborite käivitamiseks;
• võtmete genereerimiseks;
• virtuaalmasinate mallide nimekirja kuvamiseks;
• töötavate laborite nimekirja kuvamiseks;
• labori seiskamiseks.
Pilvega suhtlemiseks on olemas komplekt käsurea programme (pakett euca2ools).
Vajadusel aga saame aga ise kirjutada tarkvara pilvega suhtlemiseks. Vaikimisi tulevad
Eucalyptusega kaasa pythoni teegid. Pythoni näidis pilvega liidestamiseks oleks:
from euca2ools import Euca2ool
euca = Euca2ool()
31
euca_conn = euca.make_connection()
reservations = euca_conn.get_all_instances()
Täielik versioon näidisprogrammist on ära toodud lisas 3.
Hindamise ja tagasiside süsteemi projektis kasutatakse RoR (Ruby on Rails)
keskkonda, seetõttu kirjeldame ära ka pilvega suhtlemise antud keskkonnas. Eelnevalt tuleb
installida RightScale [16], vabavaraline Ruby keele liides pilvarvutusele. Seda teeme
kasutades korraldust:
sudo gem install right_aws
RoR keskkonna konfiguratsioonifaili environment.rb tuleb lisada järgnev rida, et
tagada liidese olemasolu erinevates installatsioonides:
config.gem "right_aws"
RoR projektis saab luua EC2 objekti, mille abil saab hallata virtuaalmasinaid ja muud
Eucalyptus pilvega seotud teenuseid.
Objekti loomine:
akey = 'RD6AAL33rV6rkKlpPoI8vUveIRlhIS7gMDfQ'
skey = 'tjfAAL33rV6rk6NzQqiHsThcb8Kqbwwp7z8Q'
url = 'http://localhost:8773/services/Eucalyptus'
euca = RightAws::Ec2.new(akey, skey, :endpoint_url => url)
akey – ligipääsu võti (access key)
skey – salajane ligipääsu võti (secret access key)
url – CLC aadress
Antud objekt sobib nii Eucalyptuse kui ka Amazon EC2 pilve sisselogimiseks. Lõputöös
toodud näidetes on akey ja skey väärtused juhuslikud. Näidiste reaalseks kasutamiseks
asendage need oma pilve konsoolilt saadud väärtustega.
32
Loodud objekti saab veebiliideses kasutada: instantside nimekirja kuvamiseks, labori
instantsi loomiseks ja muu pilve funktsionaalsuse väljakutsumiseks.
Töötavate virtuaalmasinate nimekirja kuvamine:
<% euca.describe_instances().each do |inst| %>
<%= inst[:aws_instance_id] %>,
<%= inst[:aws_state] %>,
<%= inst[:dns_name] %><br>
<% end %>
Meetod describe_instances tagastab kõigi pilves käivitatud virtuaalmasinate
eksemplaride prameetrid.
Näites väljastatad parameetrid:
• aws_instance_id – käivitatud instantsi id;
• aws_state – instantsi staatus (starting, running, terminating);
• dns_name – instantsi võrguaadress.
Virtuaalmasina käivitamine olemasoleva malli põhjal:
euca_inst = euca.run_instances('emi-C4C01403', 0, 2, nil, nil,
'UserData', nil, 'm1.small')
Lõputöö käigus loodi RoR baseerv näidisprogramm, kus on olemas kõik vajalikud
funktsioonid laborite tegemiseks - käivitamine, staatuse vaatamine ja töö lõpetamine.
Rakenduse algtekst on ära toodud lisas 4.
Kokkuvõtlikult võib öelda, et pilve tarkvara on edukalt installeeritud ja
konfigureeritud. Projekti teised osapooled saavad kasutada antud projekti raames koostatud
näiteprogramme pilveteenustega suhtlemiseks.
33
Prototüübi piloteerimine
Prototüübi piloteerimiseks kasutati arvutit, kuhu oli installeeritud Eucalyptuse
privaatne pilv. E-õppe projekti raames valmis veebiliidese esimene iteratsioon, mis
integreerus antud lõputöö tulemusena loodud lahendusega. Esmase katsena realiseeriti labor
“Veebiserveri installeerimine”.
Piloteerimisel selgusid mitmed probleemid, mis vaadatakse üle edasise töö käigus.
Näiteks kui käivitada korraga kõigi kasutajate laborid (näiteks tunni alguses), siis tekib
serverile lühiajaline ülekoormus. Avalikus pilves sellist probleemi ei ole, kuna seal on rohkem
paralleelselt kasutatavat riistvara. Lahenduseks on võimalikult väikese kettatõmmise
kasutamine ja paralleelselt käivitatavate masinate arvu piiramine arvestades kasutusel olevat
riistvara.
Kokkuvõtteks saame öelda, et piloteerimine oli edukas, näidates, et antud lahendus on
sobilik. Samuti andis protsess hulgaliselt infot edasiseks arenguks.
34
Edasised tööd
Prototüüp tuleb installida uuele riistvarale, et seda oleks võimalik kasutada ka
reaalsete laborite läbiviimiseks. Õppetöö alustamine valminud prototüübi baasil annab
võimaluse uurida kasutatavust ja otstarbekust, ning planeerida projekti teise iteratsiooni
tegevusi.
Antud lõputöö käigus valminud tarkvara arendatakse edasi, kuna on vaja parandada
liidestumist projekti ülejäänud osadega. Momendil jäi lahendamata laborimasina
konfigureerimine pärast käivitamist ja enne kasutajale ligipääsu avamist. Otstarbekas oleks
laborisse lisada veebipõhine ssh rakendus, sest kõigil õppuritel ei pruugi olla ssh klienti oma
arvutis. Laborimasinate kasutamist saaks optimeerida – näiteks ei vaja iga labor iseseisvat
DNS serverit, piisab ühest.
Antud lahendus projekteeriti ühilduma Eucalyptusel baseeruva teenusepakkujatega ja
Amazon EC2ga. Liidestust teiste pilvedega tuleb rohkem testida ning vajadusel lahendust
viimistleda. Samuti tuleb uurida erinevate teenusepakkujate teenustaseme lepinguid (SLA),
mille alusel saaks otsustada pilvepartneri valiku.
35
Kokkuvõte
Antud lõputöö eesmärgiks oli küberkaitse mooduli virtuaallaborite lahenduse loomine
Eesti Infotehnoloogia Kolledži näitel. Käesolev diplomitöö on allosa ITK ja RIA
ühisprojektist küberkaitse alase õppemooduli loomine, mis koosneb põhiosas laboritest. Need
praktikumid nõuavad eelhäälestatud infrastruktuuri. Probleemiks on labori keerukus ja
tagasiside vajadus õppurile, millele käesolev lõputöö lahenduse leiab.
Alljärgnevalt on toodud diplomitöö põhieesmärgid:
• analüüsida kauglaborite virtualiseerimise võimalusi;
• disainida virtuaallabori süsteem;
• luua süsteemi prototüüp;
• luua arhitektuur ja nõuded süsteemi edasiseks arenduseks.
Analüüsiti erinevaid lahendusi, uurides ja võrreldes sarnaseid lahendusi mujal, mille
tulemusena järeldus, et olemasolevad lahendusi ei ole otstarbekas rakendada. Tagamaks
riistvara optimaalsemat kasutamist virtualiseeritakse loodavad laborikeskkonnad. Analüüsi
käigus selgus, et kogu vajaliku arvutusvõimsust kohapeal omada pole otstarbekas, põhjuseks
riistvara alakasutus igapäevases olukorras. Seepärast pakub autor välja pilvarvutuse,
võimalusega kasutada privaatpilve tavapärase õppe ajal ning avalikku pilve juhul, kui on vaja
teha suuremaid koolitusi. Töö käigus võrreldi erinevaid virtualiseerimistehnoloogiaid ja
pilvarvutuse platvormide kasutatavust antud probleemi lahendamiseks. Tarkvarana valiti välja
36
Eucalyptus, kuna pakub ühilduvust pilvarvutuse ressurssi pakkujaga Amazon, mis on antud
valdkonnas innovatsiooniliste lahenduste teerajaja. Samuti sai arvestatud sellega, et turule on
tulnud mitmeid ettevõtteid, kes pakuvad teenust Eucalyptuse baasil. Ühe näitena võib
siinkohal tuua BalticCloud.
Diplomitöö raames töötati välja kauglabori näidisarhitektuur, mis realiseeriti
prototüübina. See kasutas privaatset pilve ja töötas ühe arvuti peal. Samuti loodi
näiterakendus, mille abil teised küberkaitse mooduli allprojektid saavad RoR rakendustes
kasutada piloodi käigus loodud Eucalyptuse pilve. Koostati skriptid süsteemi varundamiseks
ning taastamiseks ja kirja pandi nõuded edasiseks arenduseks.
Töö tulemusena valminud virtuaallaborite süsteem on taaskasutatav erinevate
koolitusfirmade ja õppeasutuste poolt, kuna valmislahendused mida me töös kasutame ning
kood mida ise produtseerime on kaitstud GPL litsentsiga. Antud lõputöö annab juhendi kuidas
kasutada pilvarvutust praktikumide läbiviimiseks.
Seatud diplomitöö põhieesmärgid on täidetud.
37
Summary
Development of the Cyber Defence Virtual Environment at the Estonian Information
Technology College
The goal of this diploma thesis was to develop the cyber defence virtual learning
environment at the Estonian IT College. The current study is the part of the Estonian IT
College and RIA cooperation project. It addresses a development of the cyber defence
learning environment and consists mainly of virtual environments. In order to use the virtual
environments, the appropriate infrastructure has to be set up beforehand. The main problem
with virtual learning environments is high complexity and the need to give a suitable
feedback to students.
The main goals of the study are:
• to analyse possible solutions for remote virtual environments;
• to design a virtual environment;
• to develop a system prototype;
• to develop system architecture and draft requirements for further development.
After analysing existing systems, the author reached a conclusion that it is not
practical to implement existing solutions because they are not optimal for the target
38
environment. In order to optimise hardware performance, the author suggests using
virtualisation of the environments. The analyses showed that it is a waste of resources to have
all computing power on site due to low usage of the hardware; therefore the author suggests
using the cloud computing method. For the normal studying process the author suggests using
a private cloud computing method and public cloud computing in the case when more
computing power is needed. The author has investigated possibilities of using several
virtualisation technologies and cloud computing solutions to achieve the goals set for the
current study. As a conclusion, the software called Eucalyptus was chosen because it is
compatible with the Amazon which is a pioneer in these areas. The additional consideration
which led to selection of the Eucalyptus software was the number of companies which offer
services using that software, e.g. BalticCloud.
As a result of the study, the architecture of the remote environment was formulated.
The prototype was built and ran on a single computer using the private cloud software. An
application was developed which can be used also by other cyber defence module sub-
projects in order to access the pilot Eucalyptus cloud via the RoR applications. Additionally,
the system backup and restore scripts were written and the requirements for further
development were drafted.
The system developed in the current study can be reused by everyone because all
components of the system are protected with GPL licences. The current study also developed
a manual which provides guidance about how to carry out practical work with students.
Finally, the author would like to point out that all goals for the diploma thesis were
achieved.
39
Kasutatud kirjanduse loetelu
Kõik viited Internetis leiduvatele allikatele olid kättesaadavad 11. november 2009 a. seisuga.
1. Guardian, 29.09.2009 "Cloud computing is a trap" -
http://www.guardian.co.uk/technology/2008/sep/29/cloud.computing.richard.stallman
2. Jungwoo Ryoo jt. IEEE Security & Privacy, Vol. 7, No. 2, March 2009 -
http://pike.psu.edu/publications/j-sp09.pdf
3. Kaitseministeerium "Küberjulgeoleku strateegia 2008–2013" -
http://www.valitsus.ee/failid/kuberjulgeolek.pdf
4. Michael Armbrust jt. Electrical Engineering and Computer Sciences University of
California at Berkeley, Technical Report No. UCB/EECS-2009-28 "Above the
Clouds: A Berkeley View of Cloud Computing" -
http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.html
5. Amazon "Amazon Elastic Compute Cloud (Amazon EC2)" -
http://aws.amazon.com/ec2
6. BalticCloud "BalticCloud Project" - http://cloud.balticgrid.eu
7. Cisco Systems "Cisco Networking Academy" - https://cisco.netacad.net
8. Eucalyptus "Your environment. Our industry leading cloud computing software" -
http://www.eucalyptus.com
40
9. Eycalyptus "Eucalyptus Overview"
http://open.eucalyptus.com/wiki/EucalyptusOverview
10. FSF "GNU GRUB" - http://www.gnu.org/software/grub
11. GoGrid "Cloud Hosting, Cloud Computing Infrastructure, & Hybrid Hosting from
GoGrid" - http://www.gogrid.com
12. Hosting.com "Cloud Hosting - Enterprise & Private Cloud Hosting" -
http://hosting.com/cloudhosting
13. IBM "An overview of virtualization methods, architectures, and implementations" -
http://www.ibm.com/developerworks/linux/library/l-linuxvirt
14. Microsoft "Microsoft Virtual Labs" - http://www.microsoft.com/events/vlabs
15. Phusion "Phusion Passenger" - http://www.modrails.com
16. RightScale "Cloud Computing RubyGems by RightScale" -
http://rightscale.rubyforge.org
17. "The Syslinux Project" - http://syslinux.zytor.com
18. VMware "VMware ESX and ESXi, Bare-Metal Hypervisor for Virtual Machines" -
http://www.vmware.com/products/esx
41
Lisad
Lisa 1 – upload-bundle.sh
Antud programm laeb tõmmiste komplekti pilve. Programmi parameetritena tuleb ette anda
tuuma-, mäluketta- ja operatsioonisüsteemi tõmmised ning virtuaalmasina arhitektuur.
Viimase parameetrina võib ette anda komplekti nime.
#!/bin/bash
if [ $# -lt 4 ]
then
echo "Kasuta:" `basename $0` "<kernel> <ramdisk> <machine image> <i386|
x86_64> [bundle name]"
exit 1
fi
if [ $# -eq 5 ]
then
BUNDLE=$5
else
BUNDLE=`date +%Y%m%d-%H%M`
fi
42
euca-bundle-image -i $1 -r $4 --kernel true
euca-upload-bundle -b $BUNDLE -m /tmp/$1.manifest.xml
EKI=$(euca-register $BUNDLE/$1.manifest.xml | grep "^IMAGE" | awk '{print $2}')
&& echo $EKI
euca-bundle-image -i $2 -r $4 --ramdisk true
euca-upload-bundle -b $BUNDLE -m /tmp/$2.manifest.xml
ERI=$(euca-register $BUNDLE/$2.manifest.xml | grep "^IMAGE" | awk '{print $2}')
&& echo $ERI
euca-bundle-image -i $3 -r $4 --kernel $EKI --ramdisk $ERI
euca-upload-bundle -b $BUNDLE -m /tmp/$3.manifest.xml
EMI=$(euca-register $BUNDLE/$3.manifest.xml | grep "^IMAGE" | awk '{print $2}')
&& echo $EMI
43
Lisa 2 – delete-bundle.sh
Antud programm kustutab pilvest tõmmiste komplekti. Parameetrina anname ette komplekti
nime.
#!/bin/bash
if [ $# -lt 1 ]
then
echo "Kasuta:" `basename $0` "<bundle name>"
exit 1
fi
BUNDLE=$1
euca-describe-images | grep $BUNDLE
if [ $? -eq 1 ]
then
echo "Ei leidnud sellist !"
exit 1
fi
for image in `euca-describe-images | grep $BUNDLE | grep "^IMAGE" | awk '{print
$2}'`
do
euca-deregister $image
done
euca-delete-bundle -b $BUNDLE
44
Lisa 3 – get_state.py
Näidisrakendus Python baasil, kuvab instantside infot, parameetrina saab ette anda ressursi id.
#!/usr/bin/env python
import os
from sys import argv
from euca2ools import Euca2ool
if len(argv) > 1:
res = argv[1]
else:
res = None
os.environ["EC2_ACCESS_KEY"] = "RD6AAADbhbx7RKlpPoI8vUveIRlhIS7gMDfQ"
os.environ["EC2_SECRET_KEY"] = "tjfAAASaHT28S6NzQqiHsThcb8Kqbwwp7z8Q"
os.environ["EC2_URL"] = "http://localhost:8773/services/Eucalyptus"
euca = Euca2ool()
euca_conn = euca.make_connection()
reservations = euca_conn.get_all_instances()
for r in reservations:
instances = r.instances
if res:
if res == r.id:
for i in instances:
print '%s,%s,%s,%s' % (i.id, i.dns_name, i.state)
else:
print '%s,%s' % (r.id, r.owner_id)
for i in instances:
print '\t%s,%s,%s,%s' % (i.id, i.dns_name, i.state)
45
Lisa 4 – Näidisrakendus RoR baasil
index.html.erb
Näterakenduse vaikimisi vaatefail
<h3>Laborid</h3>
<%
akey = 'RD6AAADbhbx7RKlpPoI8vUveIRlhIS7gMDfQ'
skey = 'tjfAAASaHT28S6NzQqiHsThcb8Kqbwwp7z8Q'
url = 'http://localhost:8773/services/Eucalyptus'
euca = RightAws::Ec2.new(akey, skey, :endpoint_url => url)
euca_inst = euca.describe_instances
euca_res = Array.new()
euca_inst.each do |inst|
euca_res << inst[:aws_reservation_id]
end
euca_res.uniq!
euca_res.each do |inst|
%>
<%= link_to 'Labori info - '+inst, '/elab/status/'+inst %><br>
<%
end
%>
<hr>
<h3>Start</h3>
<%= link_to 'Stardime labori', '/elab/start/2' %><br>
46
start.html.erb
Labori käivitamise näiteprogramm
<h3>Stardime</h3>
<%
if params[:id] == nil
%>
Puudub labori nimi !
<%
else
akey = 'RD6AAADbhbx7RKlpPoI8vUveIRlhIS7gMDfQ'
skey = 'tjfAAASaHT28S6NzQqiHsThcb8Kqbwwp7z8Q'
url = 'http://localhost:8773/services/Eucalyptus'
euca = RightAws::Ec2.new(akey, skey, :endpoint_url => url)
euca_inst = euca.run_instances('emi-C4C01403',0,
params[:id],nil,nil,'UserData',nil,'m1.small')
%>
Labor <%= euca_inst[0][:aws_reservation_id] %>
<%= euca_inst[0][:aws_state] %><br>
<%
end
%>
47
status.html.erb
Töötava labori masinate seisundi kuvamine.
<h3>Labori seisund</h3>
<table>
<tr><th>instance_id</th><th>index</th>
<th>state</th><th>dns_name</th></tr>
<%
akey = 'RD6AAADbhbx7RKlpPoI8vUveIRlhIS7gMDfQ'
skey = 'tjfAAASaHT28S6NzQqiHsThcb8Kqbwwp7z8Q'
url = 'http://localhost:8773/services/Eucalyptus'
euca = RightAws::Ec2.new(akey, skey, :endpoint_url => url)
euca.describe_instances().each do |inst|
if inst[:aws_reservation_id] == params[:id] or params[:id]==nil
%>
<tr>
<td><%= inst[:aws_instance_id] %></td>
<td><%= inst[:ami_launch_index] %></td>
<td><%= inst[:aws_state] %></td>
<td><%= inst[:dns_name] %></td>
<td><%= link_to 'Restardime',
'/elab/restart/'+inst[:aws_instance_id] %></td>
</tr>
<%
end
end
if params[:id]!=nil
%>
<td></td><td></td><td></td><td></td><td>
<%= link_to 'Stopime labori', '/elab/stop/'+params[:id] %></td>
<%
end
%>
</table>
48
stop.html.erb
Labori seiskamise programm
<h3>Labori seiskamine</h3>
<%
if params[:id] == nil
%>
Puudub instantsi ID !
<%
else
akey = 'RD6AAADbhbx7RKlpPoI8vUveIRlhIS7gMDfQ'
skey = 'tjfAAASaHT28S6NzQqiHsThcb8Kqbwwp7z8Q'
url = 'http://localhost:8773/services/Eucalyptus'
euca = RightAws::Ec2.new(akey, skey, :endpoint_url => url)
euca.describe_instances().each do |inst|
if inst[:aws_reservation_id] == params[:id]
euca_inst =
euca.terminate_instances(inst[:aws_instance_id])
%>
Masin <%= euca_inst[0][:aws_instance_id] %>
<%= euca_inst[0][:aws_shutdown_state] %><br>
<%
end
end
end
%>
49
restart.htm.erb
Labori masina taaskäivitamine
<h3>Taaskäivitamine</h3>
<%
if params[:id] == nil
%>
Puudub masina ID !
<%
else
akey = 'RD6AAADbhbx7RKlpPoI8vUveIRlhIS7gMDfQ'
skey = 'tjfAAASaHT28S6NzQqiHsThcb8Kqbwwp7z8Q'
url = 'http://localhost:8773/services/Eucalyptus'
euca = RightAws::Ec2.new(akey, skey, :endpoint_url => url)
euca_inst = euca.reboot_instances(params[:id])
%>
Masin <%= params[:id] %> re-startub (<%= euca_inst %>)<br>
<%
end
%>
50