You are here: TUTWiki>Tietoturva/Tutkielmat>Tutkielmat?>SmartOSHypervisor (revision 5)

TTY / Tietoturvallisuuden jatkokurssi / Harjoitustyö 2012 / Luonnosvaihe

Antti Kolehmainen

SmartOS? Hypervisor

Johdanto

Kun Oracle Sun Microsystemsin oston jälkeen päätti lakkauttaa avoimen lähdekoodin OpenSolaris?-projektin kehityksen, päätettiin se yhteisöllisesti forkata viimeisimmästä avoimesta versiosta. Tämän forkkauksen tuloksena syntyi illumos-projekti. Yksi illumos-kerneliä käyttävistä jakeluista on Joyentin SmartOS? joka on kehitetty pääasiassa virtualisointiin ja pilvi-infrastruktuurin pyörittämiseen. [1]

Koska SmartOS? pohjautuu Solariksen tekniikkaan sisältää se monia hyödyllisiä enterprise-tason ominaisuuksia niin tietoturvan kuin myös virtualisoinnin kannalta. Näitä ovat esimerkiksi Crossbow, Zone/Container-tekniikka, ZFS-tiedostojärjestelmä sekä Linuxilta portattu QEMU/KVM. Tässä työssä käsitellään näitä asioita tietoturvanäkökulmasta ja tutkitaan millä tavoin järjestelmän eri komponentit edesauttavat tietoturvallisten virtuaalikoneiden hallinnointia ja käyttämistä.

SmartOS? turvamekanismit

Koska illumos, ja näin myös SmartOS?, on Solariksen, joka ei siis ole Linux vaan aito alkuperäinen SVR4-pohjainen Unix, jälkeläinen on se perinyt monia enterprise-tason ominaisuuksia itseensä jotka edesauttavat tietoturvallisen järjestelmän rakentamista. Tässä kappaleessa esitellään niistä muutama painottaen asiaa virtualisoinnissa hyödyllisiin.

Yksi SmartOS?:n erikoisuuksista muihin jakeluihin verrattuna on sen ajotapa. SmartOS? on suunniteltu ajettavaksi Live-imagesta joko netboottina, usb-tikulta tai cd:ltä. Järjestelmä pyörii siis tavallisesti ainoastaan muistista eikä sitä tarvitse asentaa varsinaisille kiintolevyille ollenkaan. Tämä mahdollistaa koko kiintolevykapasiteetin valjastamisen virtuaalikoneille. Konfiguraatiotiedostot säilytetään myös kiintolevyllä joka mahdollistaa SmartOS?-järjestelmän päivityksen kirjoittamalla uusi live-image USB-tikulle ja reboottaamalla kone.

Crossbow

Yksi OpenSolariksessa? syntyneistä uusista innovaatioista on myös illumokseen siirtynyt Crossbow verkkopino. Tämä virtualisoitu pino mahdollistaa virtuaalisten verkkosovittimien (vnic) ja kytkimien (vswitch) tekemisen. Kaikki virtuaalisovittimet sisältävät täyden TCP/IP-pinon sekä asetuksia joilla mm. niiden nopeuksia ja kaistankäyttöä pystytään rajoittamaan haluttujen parametrien mukaisesti. Crossbowissa on mukana myös QOS-järjestelmä nimeltään ”flow” jolla voidaan määritellä rajoituksia L3 ja L4 mukaisesti. [2] [3]

Jokainen vnic sidotaan tiettyyn fyysiseen verkkosovittimeen tai -sovittimiin, Crossbow mahdollistaa siis myös linkkien aggregoinnin. SmartOS?:n tapauksessa jokainen virtuaalikone saa yhden tai useamman vnicin käytettäväkseen joiden kautta kaikki liikenne ulkomaailmaan hoidetaan. Jokainen fyysinen sovitin tagataan tietyllä tunnisteella (esim. external_nic, backup_nic) joiden perusteella virtuaalikoneet muodostavat omat sovittimensa konfiguraation mukaisesti. Virtuaalikoneiden nic-tageja voidaan myös vaihtaa lennossa jos tulee tarvetta vaihtaa fyysistä sovitinta johon ne ovat kytketty.

Containerit

Container on itse asiassa ”sateenvarjotermi” Zonejen ja niihin vaikuttavien resurssikontrollien yhteistyölle. Containereita voidaan verrata esimerkiksi FreeBSD?:n jaileihin, eli ne ovat jossain tietyssä hakemistossa sijaitsevia ”emojärjestelmän” klooneja joilla on omat määritellyt resurssinsa eivätkä ne pysty näkemään toisiaan eikä itse emojärjestelmää. Jokaisella Containerilla on oma tyyppinsä joita on SmartOS?:ssä seuraavasti:

  • KVM jossa kaikki KVM:n alaiset virtuaalikoneet pyörivät.
  • Joyent joka on SmartOS? ilman KVM:ää.

Illumoksessa on hieman eroja SmartOS?:n ratkaisuun sillä siinä opensolaris-kloonijärjestelmän brand on ”ipkg” ja se sisältää myös ”s10brand”-brandin jolla voidaan ajaa Solaris 10 ympäristöä. Myös itse emojärjestelmä on oma Zonensa nimeltään ”global zone”. Jokaisen Zonen (pl. KVM) voi myös tehdä kevyempänä ratkaisuna jolloin osa tiedostojärjestelmästä mountataan read onlynä suoraan global Zonesta. Ongelmana Zoneissa on se, että jotkut ohjelmat jotka vaativat joitain tiettyjä oikeuksia joihin Zonejen turva-asetukset eivät anna pääsyä eivät toimi. Normaalit Zonet eivät myöskään sisällä omaa kerneliään vaan käyttävät aina global zonessa pyörivää. Edellisten käyttöjärjestelmien binäärit ajetaan translaatiokutsujen kautta.Kun Zoneihin otetaan vielä mukaan ZFS:n tarjoamat snapshotit ja varmuuskopio-ominaisuudet, voidaan helposti tehdä järjestelmä jossa on ensin yksi ”vakio-zone” josta pystytään helposti snapshottaamaan uusia virtuaalikoneita käytettäväksi. Parasta tässä on se, että snapshotit toimivat myös SmartOS?:n KVM-zonessa jossa käytetään ZFS-tietdostojärjestelmän sijaan Volumeita. Näistä kuitenkin lisää seuraavassa kappaleessa.

ZFS

ZFS on alunperin Sun Microsystemsin kehittämä tiedostojärjestelmän ja loogisen taltionhallinnan yhdistelmä. Tavalliseen tiedostojärjestelmään verrattuna se eroaa pääasiassa filosofialtaan. Jokainen fyysinen kovalevy liitetään ensin "storage pooliin" ja näihin pooleihin luodaan varsinaiset tiedostojärjestelmät ja volumet. ZFS käyttää tiedon kirjoituksessa Copy on Write -periaatetta. Tässä jokainen kirjoitusoperaatio suoritetetaan joko täysin valmiiksi tai sitten ei ollenkaan jolloin voidaan tiedon eheys todeta välittömästi. Copy on Write poistaa myös mahdollisuuden tiedostojen korruptoitumiseen koska "puolittaisia" kirjoituksia ei pääse syntymään. [5] Virheiden seurauksena siis ainoastaan menetetään meneillään olleiden kirjoitusoperaatioiden alaisena olleet tiedot. Copy on Writen lisäksi jokainen ZFS-järjestelmässä oleva tiedosto ja sen metatieto on checksummattu. Ennen jokaista operaatiota checksum tarkistetaan ja jos se eroaa, virheet korjataan. ZFS tiedostojärjestelmiin on myös mahdollista asettaa kompressio jolloin kaikki siellä oleva tieto pakataan lennossa.

ZFS mahdollistaa siis kahden eri tyyppisen tiedostovarannon käytön, tiedostojärjestelmän ja volumen. Näistä tiedostojärjestelmä on kuin mikä tahansa tavallinen Unixin polku joka voidaan mountata mihin tahansa sitä tarvitaankaan. Volumet taasen ovat "block devicejä" jotka toimivat samaan tapaan kuin fyysiset kovalevyt. Volumeihin voidaan siis formatoida vaikkapa joku toinen tiedostojärjestelmä ja silti saada ZFS:n ominaisuudet käyttöön.

ZFS sisältää myös snapshotit jotka ovat niiden ottohetken "kuva" tiedostojärjestelmästä. Snapshoteilla on monia käyttötarkoituksia, esimerkiksi varmuuskopioinnissa tai järjestelmän kloonauksessa. illumos-julkaisut. kuten SmartOS? on, sisältää esimerkiksi ominaisuuden jolla järjestelmä voidaan käynnistää tiettyihin snapshotteihin. Näin esimerkiksi päivityksen jälkeen voidaan bootata ongelmatilanteissa takaisin toimivaan kokoonpanoon. SmartOS? käyttää snapshotteja myös virtuaalikoneiden nopeassa kloonauksessa. Kaiken tämän lisäksi ZFS-tiedostojärjestelmien snapshotteja voidaan siirtää send/receive -komennoilla vaikkapa verkon yli. Tämä mahdollistaa mm. helpon tavan varmuuskopiointiin.

Redundanssia ZFS tarjoaa omalla ohjelmistopohjaisella RAID-ratkaisullaan. ZFS:n RAID-tasoja on tällä hetkellä neljä: mirror sekä yksi-, kaksin-, tai kolminkertainen pariteetti. Näitä RAID-tasoja ajaessa ei tarvita mitään muuta rautaa kuin levyohjaimet. Varsinaisen rautapohjaisen RAID-ohjaimen ollessa mukana menetetään monia ZFS:n hyvistä ominaisuuksista kuten mahdollisuuden kovalevyjen hotswappaukseen sekä tiedostojärjestelmän self-healingiin.

ZFS mahdollistaa nopeiden 15k RPM ja SSD -levyjen käytön välimuistina luku- ja kirjoitusoperaatioille. ARC eli Adaptive Replacement Cache sijaitsee keskusmuistissa ja skaalautuu olemassa olevan muistimäärän mukaisesti. ARC pitää kirjaa useasti ja hiljattain käytössä olleista tiedostoista aktiivisten poolien alueelta joiden perusteella se osaa nopeuttaa niihin pääsyä. Yleensä keskusmuistia varataan tälle välimuistille niin paljon kuin mahdollista ja sitä vapautetaan sen mukaan kun ohjelmat tarvitsevat. L2ARC? istuu taas poolin ja keskusmuistissa sijaitsevan ARC:n välissä. Sen tarkoituksena on laajentaa keskusmuistia nopealla massamuistilla, tyypillisesti SSD-levyllä, ja näin nopeuttaa tiedostojen käsittelyä varsinkin suurissa levyjärjestelmissä.

ZiL? eli ZFS Intent Log taas on kirjoitusvälimuisti. ZiL?:n tarkoituksena on helpottaa pyöriville levyille kirjoitusta cachettamalla kaikki data ensin nopealle massamuistille jonka jälkeen ne siirretään pyöriville levyille heti kun mahdollista.

KVM

//FIXME, add pics!!

KVM eli Kernel-based Virtual Machine on alunperin Linuxille kehitetty virtualisointilaitos. SmartOS? ajaa KVM-pohjaisia virtuaalikoneita Containereiden sisällä virtuaali-verkoilla varustettuna. Tämä tapa lisää tietoturvaa varsinkin siten, että jos KVM:n Qemusta pystytään murtautumaan ulos, tuloksena on vain pääsy vieläkin rajoitetumpaan Containeriin. Kaikki KVM-virtualikoneet omaavat yhden tai useampia ZFS-volumeita, ei siis tiedostojärjestelmiä, jotka määritetään kyseisen virtuaalikoneen kovalevyiksi. Tämä tuo mukanaan mahdollisuuden snapshotteihin sekä checksummauksen avulla tiedostojen eheyden tarkkailuun.

Päätelmät / yhteenveto

// FIXME

SmartOS? pwnz vmware lolz! Asentakaa ja testatkaa, ette tule pettymään! \o/

Lähteet

SivuTiedotLaajennettu edit

Vaativuus Jatko
Valmius Valmisteilla
Tyyppi Ydin
Luokitus Uhkat
Mitä Luottamuksellisuus
Miltä Ihmisetön uhka
Missä Organisaatio
Kuka Titu-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r8 | r6 < r5 < r4 < r3 | 
Topic revision: r5 - 30 Nov 2012 - 03:18:12 - AnttiKolehmainen
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback