Het wat, hoe en waarom van virtualisatie
Zoek je het begrip ‘virtualisatie’ op, dan is de kans groot dat je met heel wat uiteenlopende definities te maken krijgt. Dat is niet zo verwonderlijk want er zijn diverse types virtualisatie – afhankelijk van de bron wel tot 10 verschillende. In dit artikel focussen wij ons op de twee bekendste types systeemvirtualisatie en komt ook applicatievirtualisatie aan bod.
Wanneer we een poging wagen tot een overkoepelende definitie voor virtualisatie, dan komen we uit op iets als ‘het emuleren of simuleren van een object of een bron in software op zo’n manier dat die op precies dezelfde manier functioneert als het overeenkomstige fysieke object’. Er wordt dus op een of andere manier van abstractie gebruik gemaakt, zodat software zich als hardware gedraagt. Deze objecten of bronnen kunnen overigens zeer divers zijn, zoals computerhardware, opslagapparaten en netwerkbronnen, maar bijvoorbeeld ook desktops – of vdi (virtual desktop infrastructure) in een meer geavanceerde vorm – en applicaties.
Hoewel, bij deze laatste categorie (applicatievirtualisatie) gaat het doorgaans om het isoleren van individuele apps van het onderliggende besturingsysteem en van andere toepassingen in een zogenoemde sandbox. Ook al beschouwen sommige experts (zoals Wilders Security) dit niet als virtualisatie in strikte zin, hebben we hier er toch de nodige aandacht aan besteed.
Virtualisatie van vroeger en nu
De eerste vormen van virtualisatie vinden we al terug in de jaren 60 van de vorige eeuw, toen systeembronnen, zoals beschikbaar gesteld door mainframes, logisch werden opgesplitst tussen verschillende applicaties. Intussen is het begrip virtualisatie ook op andere manieren doorgedrongen tot in allerlei populaire applicaties, frameworks en besturingssystemen.
Zo maken de meeste moderne browsers gebruik van een of andere vorm van sandboxing: bij Chrome bijvoorbeeld wordt zowat elk proces en elke extensie gesandboxt. Ook in html5 tref je een vorm van sandboxing aan: dat voorziet in een sandbox-attribuut voor gebruik met iframes, bijvoorbeeld om het doorsturen van data of het uitvoeren van een script te blokkeren. Je kunt hier zelf mee experimenteren. Voer het script in het linkerpaneel uit, waarbij je ook een keer de waarde ="allow-scripts" aan het sandbox-attribuut toevoegt; alleen dan zal de functie Get date and time werken.
Het zal je weinig verbazen dat ook steeds meer security suites sandboxing aanwenden voor een nog betere beveiliging, waaronder die van Kaspersky, Comodo en Avast. Deze laatste voorziet tevens in een autosandbox-functionaliteit, waarbij verdachte bestanden automatisch in een sandbox belanden. Je legt hierbij zelf de criteria vast en je kunt ook uitzonderingen definiëren.
Windows Defender Application Guard
Ook Microsoft zet meer en meer in op diverse vormen van virtualisatie en sandboxing. Zo kun je (sinds Windows 10 versie 1803 ook voor Windows Pro 64 bit) de ingebouwde Windows Defender Application Guard activeren voor gebruik in Edge. Hierbij wordt de browser met behulp van Hyper-V in een eigen virtuele machine (vm) opgesloten, waarbij uitsluitend nog een sterk uitgeklede Windows-versie actief is.
Deze vm heeft bijvoorbeeld geen toegang tot de printer, het klembord of externe bestanden. Je moet WDAG dan wel eerst even inschakelen via Windows Configuratiescherm / Programma’s / Windows-onderdelen in- of uitschakelen. Vervolgens klik je in Edge het knopje met de drie puntjes aan en kies je Nieuw Application Guard-venster.
De functie Virtualization Based Security (VBS) van Microsoft is nog dieper verankerd in Windows en maakt gebruik van hardwarevirtualisatie. In essentie gebruikt Microsoft hiervoor Hyper-V om het OS te booten, waarna deze hypervisor als een compleet afgeschermd geheugengebied wordt gebruikt voor het bewaren van allerlei privacygevoelige informatie, zoals toegangsgegevens. Je kunt VBS onder meer activeren vanuit de groepsbeleidseditor (gpedit.msc), via Computerconfiguratie / Beheersjablonen / Systeem / Device Guard / Beveiliging op basis van virtualisatie inschakelen. Neem hier wel grondig de verschillende opties door.
Overigens heeft Microsoft voor de komende versie van Windows 10 Enterprise – Pro volgt ongetwijfeld later – de sandboxfunctie InPrivate Desktop aangekondigd. Dat is een vorm van containertechnologie die een beheerder toelaat om snel een soort van vm op te starten om daarin een niet-vertrouwde app te draaien.
Systeemvereisten voor virtualisatie
De tendens lijkt ons in elk geval onmiskenbaar: virtualisatie wordt steeds meer toegepast, ook in producten die niet op bedrijfsomgevingen zijn gericht.
Bij geavanceerde thuisgebruikers is echter vooral het concept van systeemvirtualisatie doorgedrongen. Hierbij zorgt een virtuele machine manager – oftewel hypervisor – ervoor dat er meerdere besturingssystemen naast elkaar kunnen draaien op een enkele computer, doordat er voor elk OS de nodige hardware wordt geëmuleerd.
De voordelen zijn duidelijk. Naast een duidelijke kostenbesparing (er is slechts één fysieke machine nodig) en de relatieve gebruiksvriendelijkheid (minder lastig dan multiboot-operaties) draaien vm’s ook veilig geïsoleerd van elkaar en zo nodig zelfs van het onderliggende OS. Verder zorgt encapsulatie ervoor dat een complete vm zich als een enkel bestand laat opslaan, wat handig is bij migratie- en back-up-scenario’s.
We onderscheiden twee hoofdtypes bij hypervisors: type 1, ook wel native of ‘bare metal’ genoemd, en type 2 oftewel hosted hypervisors. Bare-metal-hypervisors, zoals Microsoft Hyper-V, Citrix XenServer en VMware vSphere/ESXi) draaien rechtstreeks op de hardware van de machine, zonder onderliggend OS. Hosted hypervisors, zoals Oracle VM VirtualBox, VMware Workstation en Parallels Desktop, draaien bovenop een conventioneel OS. Type 1-hypervisors zijn doorgaans stabieler en presteren beter, maar type 2-hypervisors laten zich wel makkelijker installeren en ondersteunen doorgaans meer hardware doordat die ondersteuning door het onderliggende OS wordt afgehandeld.
De meeste hypervisors stellen tot slot duidelijke eisen aan de hardware, vooral wat betreft de cpu. Doorgaans heb je een 64bit-processor nodig die overweg kan met SLAT (second level address translation) en vooral ook virtualisatie ondersteunt. Dat is het geval bij de meeste moderne cpu’s van AMD (AMD-V) en Intel (Intel VT). Controleer in je bios of deze functie wel is ingeschakeld. Je vindt die in een menu als Chipset, Advanced CPU Configuration of Northbridge.