XenClient – 2.0
Egy korábbi cikkben írtam arról az elvetemült igényemről, hogy egy biztonságos destop operációs rendszert szeretnék használni, ahol nem keverednek a céges adataim/alkalmazásaim a priváttal, és legfőképp nem a szórakozásra használtakkal…
A Citrix elsőként jelent meg a piacon egy széles körben használható desktop virtualizációs megoldással, amely alapjául egy valódi Type1 típusú hypervisor szolgál: a Xen
A hivatalos marketing ömleny természetesen a Citrix oldalain olvasható, én ezt a részt ugranám, és rátérnék arra, hogy mit is kapunk valójában.
Verziók
Először is tisztázni kell, hogy pontosan melyik verzióról is van szó:
Ez a XenDesktop részeként használható, nagyvállalatoknak szánt megoldás.
Ez egy titokzatos, magas biztonsági szintet ígérő verzió – ám erről egyelőre kizárólag marketing anyag érhető el…
Ez lenne a nép számára is ingyenesen használható megoldás, ami vizsgálatunk további tárgyát is képezi :)
Telepítés
Hardver Követelmények
A hivatalosan támogatott hardverek listája megtalálható a termék weboldalán
Ezek között sajnos az én laptopom sem szerepel, de ettől függetlenül egy próbát megért, és kiderült hogy mik azok a bizonyos sarkalatos pontok:
- VT-x
Ezen a fícsör megléte elengedhetetlen, nélküle egyáltalán nem telepíthető a rendszer (ahogy semmilyen más egyéb Type1 hypervisor sem)
- VT-d
Ennek hiányát a telepítő jelzi, ám a gyakorlatban csak a VM-ek 3D támogatás hiányát okozza.
- GPU
Ezzel kapcsolatban a telepítő nem nyilatkozik, a telepítés gyakorlatilag bármilyen GPU-val sikeres lesz, ám a rendszer támogatott GPU hiányában csak „Safe Grapics Mode”-ban hajlandó elindulni. Ez később a VM-ekre is kihatással van, ők is csak limitált felbontással (1024×768) és sebességgel (fbdev) fogynak működni…
- HDD
Erről csak annyit, hogy a telepítés során a TELJES diszket birtokba veszi a rendszer, külön partícióra nem telepíthető. Erre amúgy a telepítés során fel is hívja a figyelmet.
Ha a fenti követelményeknek (többé-kevésbé) megfelel a hardverünk, akkor hipp-hopp fel is települ, és az első sikeres boot után a rendszer grafikus felülete fogad bennünket, ahol többek között virtuális gépeket hozhatunk létre – és végül is, ez volt a cél :)
A virtuális gépek létrehozására – egyelőre – két lehetőségünk van:
- Local Disc
Azt hiszem ezt nem kell túlmagyarázni, lokális médiáról való telepítést jelent :) Tehát, ha van a közelünkben telepítő CD, (vagy image) akkor a guest oprendszer telepítése semmiben nem különbözik egy normális telepítéstől.
- Synchronizer
Ezen megoldás segítségével, egy központi szerveren hozhatunk létre szabványos VM-eket, amiket aztán a kliensek letölthetnek és használhatnak, Olyan egyéb járulékos előnyökkel mint: ‘Dynamic VM Image Mode’ használata. Természetesen ennek előfeltétele, a Synchronizer szerver, és a róla elérhető VM-ek előkészítése…
Használat
Amint sikerült egy legalább egy VM-et létrehoznunk, máris használatba vehetjük. Fontos kiemelni, hogy – egyelőre – a VM-ek között, a (hálózaton kívül) semmiféle egyéb kapcsolat nincs, egyszerre mindig csak az egyik VM konzolját látjuk és használhatjuk. A közös beviteli és kimeneti eszközök (egér, billentyűzet, hangkártya, monitor!, stb) mindig az ‘aktív’ VM-hez vannak rendelve.
Fontos kiemelni, hogy a 3D támogatás – ami tulajdonképp csak marketing elnevezés – szükséges egyéb olyan fícsörök használatához is, aminek semmi köze a 3D-hez. Ilyen pl.: a külső monitor használata, ami egy laptop esetében mindennapos… Ezt azonban egyszerre csak egy VM birtokolhatja, a többieknek ilyenkor be kell érni a beépített kijelzővel.
Tehát, hiába van (akár több) külső monitorunk, több VM egyidejű megjelenítésére nincs lehetőségünk.
Közösködés
Ha már van némi fogalmunk egy hypervisor (esetünkben a Xen) működésével kapcsolatban, akkor tudjuk, hogy van egy bizonyos dom0 nevezetű izé, ami közvetlenül a hardverelemekkel tartja a kapcsolatot, így ő lesz a közös pontja a rendszernek. Aki hozzáfér ehhez, az ugyanis teljes joggal birtokolhatja és befolyásolhatja a gépünkön futó összes VM működését. Ez tehát, a rendszerünk gyenge pontja is egyben.
Amit láthatjuk, ezen megoldás esetében valóban minden eszközt a dom0 lát, kezel és birtokol:
00:00.0 Host bridge: Intel Corporation Mobile PM965/GM965/GL960 Memory Controller Hub (rev 03) 00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (primary) (rev 03) 00:02.1 Display controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (secondary) (rev 03) 00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #4 (rev 03) 00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 03) 00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 03) 00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03) 00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 03) 00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 03) 00:1c.2 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 3 (rev 03) 00:1c.3 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 4 (rev 03) 00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 03) 00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 03) 00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 03) 00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 03) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f3) 00:1f.0 ISA bridge: Intel Corporation 82801HEM (ICH8M) LPC Interface Controller (rev 03) 00:1f.1 IDE interface: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller (rev 03) 00:1f.2 SATA controller: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller (rev 03) 00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 03) 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01) 08:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
Ebből az következik, hogy a hálózati interfészeket, és így a külső fizikai hálózattal való összeköttetést is a dom0-re bízták:
brbridged Link encap:Ethernet HWaddr 00:16:D3:8D:DB:F9 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) brinterna Link encap:Ethernet HWaddr 82:0C:37:96:E1:4E UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) brshared Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF inet addr:172.16.25.1 Bcast:172.16.25.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) brwireles Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF inet addr:172.16.26.1 Bcast:172.16.26.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth0 Link encap:Ethernet HWaddr 00:16:D3:8D:DB:F9 UP BROADCAST PROMISC MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:162 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:296 (296.0 B) TX bytes:296 (296.0 B) uivm Link encap:Ethernet HWaddr 8A:6C:C3:83:70:B6 inet addr:10.169.142.1 Bcast:10.169.142.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) vif2.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:32 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) vif2.1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:32 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) wlan0 Link encap:Ethernet HWaddr 00:1C:BF:34:C1:A0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Ami így, egy valós támadási felületet ad a rendszerhez, és ezt a marketing ódák figyelmen kívül hagyják!
Ezek után magától érthetődő, hogy a virtuális és fizikai interfészek közötti hálózati forgalomról is a dom0-ban kell gondoskodni:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- brshared brbridged 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- brbridged brshared 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- brwireless wlan0 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- wlan0 brwireless 0.0.0.0/0 0.0.0.0/0 0 0 REJECT all -- brshared * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 0 0 REJECT all -- brwireless * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 0 0 REJECT all -- * brshared 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 0 0 REJECT all -- * brwireless 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Ha a fenti csomagszűrő szabályokat hálózati szakemberként nézzük, láthatjuk, hogy nincs túlbonyolítva a dolog ;)
Természetesen egy Type2 hypervisorhoz képest ez semmivel sem rosszabb megoldás, ám a biztonságos szeparáció elnevezés ezesetben megtévesztő lehet. Várhatóan, a titokzatos XT verzióban a maximális biztonság érdekében ezen eszközök további szeparációjáról beszélnek…
Ilyen jellegű szeparáció nyomait fedezhetjük fel, ha megnézzük milyen VM-ek is vannak a gépünkön:
ID | Name | UUID | State -----+--------------------+--------------------------------------+-------- 1 | uivm | 00000000-0000-0000-0000-000000000001 | running 2 | windows7 | d5f0e6ae-22ba-4386-8fd0-a78f15c2c6ed | running
Trmészetesen, a windows7 nevű az, amit én magam hoztam létre, a másik pedig egy gyári – a nevéből ítélve – a VM váltó felület, és a globális beállításokért, és a Synchronizer-rel való kapcsolattartásért felelős virtuális gép lehet.
Összegzés
Ha az egyéb (biztonsággal és működéssel kapcsolatos) részletek nem különösebben érdekelnek, akkor tulajdonképpen a rendszer kész és működőképes, hiszen használhatunk egyszerre több operációs rendszert, váltogathatunk közöttük, és akár központilag előkészített céges VM-eket is letölthetünk/használhatunk. Mindezt ingyen.
Ha azonban valós biztonságot is remélünk, akkor tisztában kell lennünk ezen megoldás részleteivel is, nem bedőlve a marketing szövegeknek.
A biztonságon kívül, van ezért még egy-két kérdéses pontja a Citrix megoldásának: kezdve a VM-ek mentési lehetőségeitől, egyészen a VM-ek közötti adatcsere lehetőségéig.
Mivel azonban a terméknek egyelőre nincs életképes konkurenciája, így más lehetőség hiján ez az egyedüli valódi deskop virtualizációt biztosító megoldás. Ha tetszik használjuk, ha nem akkor várunk bizakodva az újabb vezriók és/vagy a konkurrencia megjelenésére ;)