VirtualBox Server, vervanger voor VMWare Server

Door The Zep Man op zaterdag 30 april 2011 10:00 - Reacties (13)
Categorie: Handleidingen, Views: 13.183

Zoals enthousiastelingen op virtualisatiegebied weten, zal VMWare Server 2.0 eind juni 'End of Availability' zijn. Versie 2.0.2 stamt alweer uit oktober 2009, waardoor de kans op een nieuwe release die fouten en veiligheidslekken dicht nihil is. Ook werkt de web-interface niet lekker onder bepaalde browsers en werkt de browser-plugin om de consoles van de VMs te kunnen benaderen ook niet meer op moderne browsers (zoals Firefox 4). Gebruikers/beheerders van virtuele machines (VMs) worden door VMWare geadviseerd om uit te wijken naar VMWare Player of VMWare ESXi.

Er zijn situaties waarbij dit geen alternatief is: VMWare Player is niet praktisch om zonder user interface te draaien en voor kleinschalige virtualisatie is VMWare ESXi overkill. Het komt vaak genoeg voor dat een 'headless' virtualisatieoplossing (een manier van virtualiseren waarbij niet voortdurend een gebruiker ingelogd hoeft te zijn of een user interface open hoeft blijven te staan) gewenst is zonder een volledige server hiervoor te gebruiken. Immers, de hardware kan zich ook bezighouden met zaken die niet onder virtuele machines kunnen draaien. Maar wat is dan een oplossing? Microsoft had ooit Virtual Server, maar heeft dat als stand-alone product een stille dood laten sterven door verder te borduren op het veel minder flexibele Hyper-V.

Een oplossing is VirtualBox in combinatie met phpVirtualbox en wat andere, kleinere softwarebenodigdheden. VirtualBox zelf is open-source en voor de benodigde missende functionaliteit is een Extension Pack beschikbaar. Het Extension Pack is gratis bruikbaar bij een persoonlijke installatie (ook in een commerciŰle omgeving), op scholen of voor evaluatiedoeleinden (om een betaalde licentie af te nemen). Zie voor meer informatie de Licensing FAQ.

Inleiding

Deze handleiding gaat in op het installeren en configureren van VirtualBox en bijbehorende componenten om zo headless virtuele machines te kunnen gebruiken en beheren, vergelijkbaar met VMWare Server. Het beheer gaat via een web-interface en gebruikt het Remote Desktop Protocol (RDP) om de consoles van virtuele machines te kunnen benaderen. Via de web-interface wordt met behulp van een Flash-gebaseerde applicatie een RDP client aangeboden, waardoor dit op meer browsers en platformen werkt dan de browser-plugins van VMWare.

Hiernaast is beheer via de command line ook mogelijk. Ook wordt voor bestaande VMWare gebruikers aan het einde van deze handleiding een stappenplan gegeven om bestaande Windows VMs van VMWare te migreren naar VirtualBox.

Als Host OS om VirtualBox op te installeren is voor deze handleiding gekozen voor Windows (om specifiek te zijn: Windows NT 5.2 en 6.x) in combinatie met Internet Information Services (IIS) voor de web-interface. Het OS is gekozen omdat voor het enige echte alternatief, Linux, een wildgroei bestaat van distributies waar VirtualBox onder kan draaien. Bovendien is het dan zelfs makkelijker om VirtualBox headless te draaien met een fatsoenlijke web-interface, wanneer gebruik wordt gemaakt van een goede package manager. Met uitstervende besturingssystemen (Solaris) doe ik niets en OS X wordt niet eens overwogen vanwege een voor de hand liggende reden.

Voor de architectuur van zowel de hardware, Host OS en andere software wordt gerekend op x64. Met een lichte aanpassing van de instructies is het zeker mogelijk om het met 'alleen' x86 te doen, maar dit wordt niet aanbevolen vanwege praktische redenen (prestaties, geheugenlimiet...).

Ter referentie geef ik hier een tabel om aan te geven welke Windows versie onder welke NT versie valt, welke edities er zijn en welke IIS versie meegeleverd wordt. De kleur geeft aan of deze handleiding betrekking heeft op de betreffende combinatie. Met uitzondering van de apart genoemde XP versies en de Starter edities van Vista en 7 (die alleen als x86 editie zijn uitgekomen), heeft de tabel alleen betrekking op de x64 versies van de genoemde besturingssystemen.

NTWindowsEditieIIS
5.1XP (x86 only)Alle5.1
5.2XP (1)Professional x646.0
Server 2003 (1)Alle
6.0Vista (2)Starter (x86 only)N/A
Home Basic
Home Premium7.0
Ultimate
Business
Enterprise
Server 2008 (2)Alle
6.17Starter (x86 only)7.5
Home Basic
Home Premium
Ultimate
Professional
Enterprise
Server 2008 R2Alle
(1) Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package ATL Security Update (x64) moet ge´nstalleerd zijn voordat begonnen wordt aan de installatie van VirtualBox en het Extension Pack.
(2) Service Pack 2 is vereist voor FastCGI ondersteuning en om te voorkomen dat losse hotfixes ge´nstalleerd moeten worden.

Indien de gewenste combinatie met rood wordt aangegeven, is het evengoed mogelijk om VirtualBox en phpVirtualBox te draaien. Het kan alleen niet met de instructies die in deze handleiding staan. Een alternatief zal dan gezocht moeten worden in 32-bits software en/of bijvoorbeeld Apache als webserver in plaats van IIS.

Benodigdheden

Alle benodigdheden om VirtualBox headless te draaien met een web-interface worden hier opgesomd.á

1. Installatie VirtualBox en Extension Pack

De installatie van VirtualBox is niet heel spannend. Download VirtualBox en het bijbehorende Extension Pack. Start de installatie van VirtualBox. Al is snelheid gewenst, dan kan simpelweg de klassieke "next-next-next-yes-install-finish" werkwijze gehanteerd worden. Let erop dat eventuele netwerkverbindingen kort worden onderbroken wanneer de netwerkdrivers voor VirtualBox worden ge´nstalleerd. Tijdens de installatie zal Windows waarschijnlijk enkele malen vragen of VirtualBox drivers mag installeren. Sta dit toe. Aan het einde van de installatie hoeft VirtualBox niet gestart te worden.

Als het toch gewenst is om de installatie aan te passen (zoals de locatie en de te installeren componenten), installeer dan in ieder geval 'VirtualBox Python Support' mee wanneer het gewenst is om VMs te bedienen via de command line.

Het Extension Pack kan ge´nstalleerd worden door, na installatie van VirtualBox, het bestand simpelweg te starten vanuit Windows Explorer. De installatie kan ook gestart worden via de GUI van VirtualBox, genaamd VirtualBox Manager (via 'File' -> 'Preferences' -> 'Extensions'). Sluit na installatie VirtualBox Manager.

2. Configuratie als Windows service

Standaard heeft VirtualBox geen ondersteuning om als Windows service te draaien. Hierom moet iets meer werk verzet worden om het als een service te laten draaien, in verhouding met een VMWare Server installatie.
2.1 Gebruikersaccount aanmaken en voorbereiden
Maak een nieuw (lokaal) Windows gebruikersaccount aan en geef deze administratorrechten. Voor deze handleiding wordt aangenomen dat het account 'vbox' heet. Het wachtwoord van het account wordt alleen maar gebruikt door softwarecomponenten, maar het is toch belangrijk dat deze veilig is. Maak het lang (met hoofdletters, kleine letters en getallen) en noteer het voor later gebruik. Geef ook aan dat het wachtwoord nooit verloopt.

Log eenmaal in met het vbox account, zodat het gebruikersprofiel aangemaakt kan worden. Start VirtualBox eenmaal op met dit account om alvast de initiŰle configuratie te maken. Log daarna weer uit en log weer in met het eigen account.

VirtualBox heeft een lastige bug als het als Windows service draait. Normaals worden de instellingen opgehaald uit '%USERPROFILE%\.VirtualBox' (gelijk aan '~/.VirtualBox' onder Linux). Hoewel het zich niet echt aan de de-facto standaard houdt, is er voor normaal gebruik van VirtualBox niets mis mee. Echter, als service probeert VirtualBox altijd de instellingen op te halen vanuit het Default User profiel onder NT 5.2 of uit het profiel van het System account onder NT 6.x. Aangenomen dat profielen op de standaardlocatie zijn geconfigureerd zijn dit 'C:\Documents and Settings\Default User\.VirtualBox' voor NT 5.2, en 'C:\Windows\System32\config\systemprofile\.VirtualBox' voor NT 6.x). Een workaround moet toegepast worden om hier geen problemen mee te krijgen.

Workaround voor NT 5.2
Door een Junction Point te maken, is het mogelijk om VirtualBox de configuratie uit de Default User folder te laten halen, zonder dat de configuratie daar daadwerkelijk staat. Dit voorkomt problemen wanneer later een nieuw account op dezelfde machine wordt aangemaakt: Junction Points worden niet gekopieerd vanuit het Default User profiel naar de nieuwe profielfolder.

Standaard heeft NT 5.2 geen gereedschap om Junction Points aan te maken. Download en installeer de Windows Server 2003 Resource Kit Tools voor de inbegrepen 'linkd' tool. Open een command prompt ('cmd') en voer het volgende uit:
linkd "%USERPROFILE%\..\Default User\.VirtualBox" "%USERPROFILE%\..\vbox\.VirtualBox"
In Windows Explorer is nu te zien dat in de folder '%USERPROFILE%\Default User' de subfolder '.VirtualBox' is toegevoegd.

Workaround voor NT 6.x
Hetzelfde verhaal voor NT 5.2 gaat op, behalve dat het nu niet om de Default User folder gaat, maar om de folder voor het profiel van het System account. NT 6.x heeft zelf de mogelijkheid om Junction Points aan te maken, waardoor het ook niet nodig is om hiervoor extra software te installeren. Open een command prompt en voer het volgende uit:
mklink /J "%windir%\System32\config\systemprofile\.VirtualBox" "%USERPROFILE%\..\vbox\.VirtualBox"
2.2 De service aanmaken en configureren
Voor het aanmaken van de service wordt gebruik gemaakt van NSSM, de Non-Sucking Service Manager. Download het en pak het uit in een logische locatie. Voor deze handleiding wordt 'C:\Program Files' aangenomen en wordt de folder 'nssm-X.Y' (waarbij X en Y voor het versienummer staan) hernoemd naar 'nssm'. Open een command prompt en voer het volgende uit:
"C:\Program Files\nssm\win64\nssm.exe" install VBoxWebSrv "C:\Program Files\Oracle\VirtualBox\vboxwebsrv.exe"
De service is nu ge´nstalleerd. Open nu 'Services' ('Start' -> 'Control Panel' -> 'Administrative Tools' -> 'Services', of start zelf 'services.msc') en ga naar de nieuw aangemaakte 'VBoxWebSrv'. Open de 'Properties' en kies het tabblad 'Log On'. Geef aan dat de service gebruik moet maken van het vbox account en geef het bijbehorende wachtwoord op. Na het bevestigen met 'OK' of 'Apply' zal Windows het recht om in te loggen als een service uitgeven voor het vbox account.

Start nu de service. Als op het tabblad 'Processes' van 'Task Manager' het proces 'vboxwebsrv.exe' te zien is, dan is de service succesvol geconfigureerd.

3. IIS voorbereiden

IIS moet geinstalleerd en voorbereid worden voor PHP en phpVirtualbox. De instructies verschillen per IIS/NT versie.
Installeer IIS 6.0 onder NT 5.2
Open 'Control Panel' -> 'Add or Remove Programs' -> 'Add/Remove Windows Components'. Installeer het volgende component:
Voor XP:
'Internet Information Services (IIS)' -> 'World Wide Web Service' -> 'World Wide Web Service'

Voor Server 2003:
'Application Server' -> 'Internet Information Services (IIS)' -> 'World Wide Web Service' -> 'World Wide Web Service'

Andere benodigde componenten worden automatisch geselecteerd. Kies meerdere malen 'OK' om weer terug te komen in de 'Windows Components Wizard'. Installeer de toegevoegde componenten via Next.

IIS 6.0 heeft geen FastCGI, de geprefereerde interface tussen IIS en PHP, meegeleverd. Download en installeer de x64 versie (indien er problemen zijn met het starten van de installatie vanuit de browser: start de installatie vanuit Windows Explorer). Open nu in Notepad 'C:\WINDOWS\system32\inetsrv\fcgiext.ini' en vul het einde van dit bestand aan met het volgende (overschrijf de al aanwezige regel met '[Types]'):
code:
1
2
3
4
5
6
7
8
[Types]
php=PHP

[PHP]
ExePath=C:\Program Files\PHP\php-cgi.exe
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
ActivityTimeout=600

Sla 'fcgiext.ini' op en sluit Notepad af.

Open nu IIS Manager ('Control Panel' -> 'Administrative Tools' -> 'Internet Information Services (IIS) Manager', of start zelf 'inetmgr'). Open de 'Properties' van de site 'Default Web Site'. Ga eerst naar het tabblad 'Documents'. Verwijder alle standaardwaardes uit de default content page-lijst en voeg 'index.html' als enige toe.

Ga nu naar het tabblad 'Home Directory'. Controleer of onder 'Application Settings', 'Execute Permissions' staat ingesteld op 'Scripts only' en open de bijbehorende 'Configuration'. Voeg in het 'Application Configuration' scherm op het tabblad 'Mappings', onder 'Application extensions' een nieuwe extensie toe met de volgende instellingen:
  • Executable:C:\WINDOWS\system32\inetsrv\fcgiext.dll
  • Extension: .php
  • Verbs: Limit to: GET,HEAD,POST (let op: geen spaties!)
  • Script engine: checked
  • Verify that file exists: checked
Kies driemaal 'OK' om de instellingen te bevestigen.

Als een firewall is ge´nstalleerd, moet deze ingesteld worden dat inkomend verkeer naar TCP poort 80 wordt toegestaan.
Installeer IIS 7.0 of 7.5 onder NT 6.x
IIS 7.0 gebruikers (en alleen IIS 7.0 gebruikers: IIS 7.5 heeft dit allemaal meegeleverd) moeten eerst hun machine voorzien van Administration Pack for IIS 7.0 (x64). Ook worden zij geadviseerd om deze hotfix te installeren.

Open 'Control Panel' -> 'Programs and Features' -> 'Turn Windows features on or off'. Vanaf hier verschillen de instructies per soort Windows versie: client of server.

Client/werkstation gebaseerde Windows-versies (Vista & 7)
Het 'Windows Features' venster wordt geopend. Schakel de volgende componenten in en kies 'OK':
  • Internet Information Services -> Web Management Tools -> IIS Management Console
  • Internet Information Services -> World Wide Web Services -> Application Development Features -> CGI
  • Internet Information Services -> World Wide Web Services -> Common HTTP Features -> Default Document
  • Internet Information Services -> World Wide Web Services -> Common HTTP Features -> Static Content
  • Internet Information Services -> World Wide Web Services -> Security -> Basic Authentication
Server gebaseerde Windows-versies (Server 2008 & Server 2008 R2)
De Server Manager wordt geopend. Voeg een nieuwe role toe met 'Add Roles'. Schakel in de wizard de role 'Web Server (IIS)' in. Kies onder 'Role services' de volgende opties:
  • Web Server -> Common HTTP Features -> Static Content
  • Web Server -> Common HTTP Features -> Default Document
  • Web Server -> Application Development -> CGI
  • Web Server -> Security -> Basic Authentication
  • Management Tools -> IIS Management Console
Server 2008 R2 gebruikers: ja, de wizard geeft aan dat IIS 7.0 ge´nstalleerd wordt. In werkelijkheid is dit IIS 7.5.

Voor zowel client- als serverversies van Windows
Open nu IIS Manager via 'Control Panel' -> 'Administrative Tools' -> 'Internet Information Services (IIS) Manager', of door 'inetmgr' te starten. Ga naar <COMPUTERNAAM> -> 'Sites' -> 'Default Web Site'. Open van deze site het configuratiescherm 'Default Document'. Verwijder alle waarden, behalve 'index.html'. Ga weer terug naar 'Default Web Site' en open 'Handler Mappings'. Voeg een nieuwe Module Mapping toe met de volgende instellingen:
  • Request path: *.php
  • Module: FastCgiModule
  • Executable: C:\Program Files\PHP\php-cgi.exe
  • Name: PHP
  • (onder Request Restrictions, tabblad Mapping) Invoke handler only if request is mapped to: File
  • (onder Request Restrictions, tabblad Verbs) One of the following verbs: GET,HEAD,POST (let op: geen spaties!)
  • (onder Request Restrictions, tabblad Access) Access required by the handler: Script
Kies tweemaal 'OK' om de Module Mapping met de opgegeven instellingen toe te voegen. IIS Manager zal vragen of het toegestaan is of 'php-cgi.exe' gebruikt mag worden als FastCGI applicatie. Kies 'Yes'.

Kies nu in IIS Manager <COMPUTERNAAM> zelf en kies het configuratiescherm 'FastCGI Settings'. Bewerk de waarde voor 'php-cgi.exe'. Zet 'Instance MaxRequests' op 10000 en 'Activity Timeout' op 600. Voeg onder 'EnvironmentVariables' een variabele met de naam 'PHP_FCGI_MAX_REQUESTS' toe en geef deze de waarde 10000. Kies tweemaal 'OK' om de instellingen te bevestigen.

Als een firewall is ge´nstalleerd, moet deze ingesteld worden dat inkomend verkeer naar TCP poort 80 wordt toegestaan.

4. PHP installeren en testen

Installeer eerst Visual C++ 2008 SP1 Redistributable Package (x64). Dit pakket bevat DLL's waarvan PHP afhankelijk is.

Download en pak PHP (de 'nts' versie!) uit in de folder 'C:\Program Files\PHP'. Kopieer in deze folder 'php.ini-production' naar 'php.ini' en open dit bestand in Notepad. Pas hierin het volgende aan:
  • Verander de waarde van 'extension_dir' naar "C:\Program Files\PHP\ext" (inclusief dubbele quotes).
  • Verander de waarde van 'cgi.force_redirect' naar 0.
  • Verander de waarde van 'fastcgi.impersonate' naar 1 (of haal de puntkomma voor de voorbeeldregel weg).
  • Haal de puntkomma aan het begin van de regel ';extension=php_soap.dll' weg.
  • Verander de waarde van date.timezone naar 'Europe/Amsterdam' (zonder quotes), mits de computer zich in deze tijdzone bevindt. Kies anders een andere, bijpassende tijdzone.
Sla 'php.ini' op. Maak nu met Notepad een nieuw bestand aan, 'C:\inetpub\wwwroot\phpinfo.php', en vul het met het volgende:
code:
1
2
3
<?php
phpinfo();
?>

Sla 'phpinfo.php' op en sluit Notepad af. Surf nu naar het adres: http://servernaam_of_ip/phpinfo.php

Als het goed is, verschijnt er een pagina met informatie over de ge´nstalleerde PHP versie. Indien dit klopt, is PHP succesvol ge´nstalleerd. 'phpinfo.php' kan nu verwijderd worden.

5. phpVirtualbox installeren en testen

Download phpVirtualbox, en pak van het archief de inhoud van de folder 'php-virtualbox-<VERSIENUMMBER>' uit in 'C:\inetpub\wwwroot'. Kopieer in deze folder het bestand 'config.php-example' naar 'config.php' en open het met Notepad. Maak in dit bestand de volgende aanpassingen:
  • Vul bij 'var $username' de gebruikersnaam in van het account waaronder de web-interface zal draaien. Voor deze handleiding is aangenomen dat het gebruikersaccount voor VirtualBox 'vbox' is. De standaardwaarde voor dit veld hoeft in dit geval niet gewijzigd te worden.
  • Pas bij 'var $password' het wachtwoord aan naar het ingestelde wachtwoord voor het 'vbox' gebruikersaccount.
  • Zet 'var $noAuth' op 'true'.
  • Zet 'var $consoleHost' op de hostnaam of IP adres waarmee de server bereikbaar is vanaf andere computers. Dit is belangrijk voor RDP sessies naar de consoles van VMs die vanuit phpVirtualBox worden gestart.
  • Zet 'var $enableAdvancedConfig' op 'true'.
  • Optioneel: Voeg aan 'var $consoleResolutions' de resolutie '720x400' toe. Bij het opzetten van een RDP sessie naar de console van een VM vanuit de web-interface moet er gekozen worden voor een resolutie omdat het gebruikte Flash applet niet automatisch de resolutie van de VM kan herkennen. Voor het installeren en configureren van systemen zonder verplichte grafische omgeving is 720x400 precies voldoende voor een terminal van 80x25 karakters. Zo wordt voorkomen dat 800x600 gekozen moet worden voor deze VMs, wat scheelt in benodigde schermruimte.
Sla 'config.php' op en sluit Notepad. Surf met een browser naar: http://servernaam_of_ip/

Als het goed is, wordt nu phpVirtualbox getoond. De installatie is voltooid. Alle volgende delen van deze handleiding zijn optioneel. Toch wordt geadviseerd om 'A. Hardening' uit te voeren omdat de huidige staat na het volgen van de handleiding onveilig is.

A. Hardening (optioneel)

In het voorgaande stappenplan is geen rekening gehouden met beveiliging. Sterker nog: op bepaalde punten lijkt het wel alsof de beveiliging opzettelijk is uitgeschakeld. Dit klopt: begin niet tijdens het configureren aan beveiligen voordat het geheel in ieder geval werkt (in een gesloten omgeving). Dit maakt het opsporen van fouten bij het eerste gebruik makkelijker, omdat het geen permissieprobleem kan zijn door strengere beveiliging.

Beveiliging wordt op een aantal gebieden toegepast:
  • Het protocol waarmee de web-interface nu bereikt wordt is standaard HTTP. Dit verandert in HTTPS, waardoor plain-text verkeer wordt vermeden.
  • De web-interface heeft nu geen gebruikersnaam en wachtwoord nodig. Dit wordt veranderd: het wordt mogelijk om met een Windows account van het Host OS in te loggen. phpVirtualBox heeft weliswaar de mogelijkheid om zelf gebruikersbeheer uit te voeren, maar vanwege het gemak en de betere veiligheid waarmee Windows credentials bewaard ten opzichte van PHP en phpVirtualBox, wordt hier geen gebruik van gemaakt.
  • Het gebruikersaccount 'vbox' heeft nu administratorrechten. Dat is niet veilig wanneer beseft wordt dat het wachtwoord in plain-text op de server staat (in 'config.php' van phpVirtualbox, en eventueel in het script voor het beheren via de command line). Dit wordt veranderd in een gewoon gebruikersaccount.
  • Voor het inloggen via RDP op de console van een VM is standaard geen authenticatie vereist. Per VM kan dit veranderd worden: het wordt mogelijk om met een Windows account van het Host OS in te loggen.
A.1 SSL ondersteuning toevoegen
Benodigdheden:
  • VeryEasy-RSA (x64), gebaseerd op Easy-RSA van OpenVPN. Het verschil met Easy-RSA is dat VeryEasy-RSA gebruiksvriendelijker is in het opzetten van een eigen certificate authority en het genereren van self-signed certificates
Met behulp van dit pakket is het mogelijk om een self-signed certificate te genereren, welke ge´nstalleerd kan worden in IIS. Hiermee wordt HTTPS mogelijk. Het enige nadeel dat aan self-signing kleeft is dat als een client voor de eerste keer verbind, deze het certificaat niet zal vertrouwen omdat de zelf gemaakte certificate authority niet vertrouwd wordt. In alle moderne browsers is het mogelijk om dit te negeren en om alleen specifiek het certificaat van de betreffende server te vertrouwen, waardoor de waarschuwing niet meer voor zal komen.

Download VeryEasy-RSA (x64) en pak het ergens uit. Genereer een private key en self-signed certificaat door het tweede stappenplan van 'instructions.txt' te volgen. Maak met behulp van 'build-pcs12-file.bat' hier een .pfx bestand van. Dit bestand is te gebruiken in IIS om SSL ondersteuning toe te voegen aan een site. Geef het '.pfx' bestand ook een wachtwoord, om problemen tijdens het importeren van het bestand te voorkomen.

Het importeren van een certificaat, private key en root certificaat in IIS 6.0
Open Microsoft Management Console ('mmc') en voeg de Certificates Snap-in toe voor het lokale computeraccount. Ga nu naar 'Console Root' -> 'Certificates (Local Computer)' -> 'Personal'. Kies in het bijbehorende context-menu voor 'All Tasks' -> 'Import...'. Importeer met behulp van de wizard de eerder gegenereerde 'server.pfx' of 'server.p12'. Laat Windows automatisch uitzoeken welk certificaat in welke store geplaatst moet worden.

Open IIS Manager en open daarin de 'Properties' van 'Default Web Site'. Ga naar het tabblad 'Directory Security' en kies onder 'Secure Communications' voor de knop 'Server Certificate'. Kies op de tweede pagina van de wizard voor de optie 'Assign an existing certificate' en kies op de derde pagina het eerder ge´mporteerde certificaat. Deze handleiding gaat uit dat de standaard TCP poort voor HTTPS, 443, wordt gekozen op de vierde pagina. Bevestig op de laatste pagina het toekennen van het certificaat. Het zal Windows Server 2003 x64 gebruikers opvallen dat de wizard ook een optie had om direct een .pfx bestand te importeren. Deze handleiding maakt geen gebruik van deze optie, omdat die niet beschikbaar is in IIS 6.0 van XP x64.

Na het sluiten van de wizard staat de 'Properties' van 'Default Web Site' nog open op het tabblad 'Directory Security'. Kies 'Edit' onder 'Secure Communications'. Vink in het nieuwe scherm de opties 'Require secure channel (SSL)' en 'Require 128-bit encryption' aan. Sluit dit venster af met 'OK' en sluit het nog openstaande venster ook af met 'OK'. Vanaf nu is phpVirtualbox bereikbaar door in een browser te surfen naar https://servernaam_of_ip/ . Vergeet niet om een eventueel aanwezige firewall te configureren om inkomend verkeer naar TCP poort 443 toe te staan.

Het importeren van een certificaat, private key en root certificaat in IIS 7.x
Open een command prompt ('cmd') en navigeer naar de 'keys\pkcs12' folder. Geef daar de volgende opdracht, waarbij <CERTIFICAATNAAM> de bestandsnaam zonder extentie van het gegenereerde certificaat en de bijbehorende private key is:
certutil -importpfx <CERTIFICAATNAAM>.pfx
Geef het wachtwoord op dat is ingevuld tijdens het aanmaken van het .pfx bestand met 'build-pkcs12-file.bat'.

Open nu IIS Manager, ga naar <COMPUTERNAAM> -> 'Sites' -> 'Default Web Site', en kies (rechts, in het menu) voor 'Bindings'. Voeg een nieuwe binding toe van het type 'https' met TCP poort 443. Kies onder 'SSL Certificate' het eerder ge´mporteerde certificaat en bevestig alles met 'OK'. Eventueel kan nu in het 'Bindings'-venster de binding voor HTTP poort 80 weggehaald worden.

Kies na het afsluiten van het 'Bindings'-venster van 'Default Web Site' het configuratiescherm 'SSL Settings'. Vink hier 'Require SSL' aan en kies 'Apply'. Vanaf nu is phpVirtualbox bereikbaar door in een browser te surfen naar https://servernaam_of_ip/ . Vergeet niet om een eventueel aanwezige firewall te configureren om inkomend verkeer naar TCP poort 443 toe te staan.
A.2 Authenticatie voor phpVirtualBox toevoegen
Met behulp van Basic Authentication is het mogelijk om alleen gebruikers toe te staan die succesvol met hun Windows gebruikersnaam en wachtwoord inloggen. Over HTTP zouden de gebruikersnaam en het wachtwoord met deze meest simpele vorm van authenticatie plain-text over het netwerk gaan. Dit wordt echter voorkomen, omdat in de vorige stap HTTPS ondersteuning is toegevoegd, en daardoor al het netwerkverkeer tussen client en server versleuteld is.

Instructies voor IIS 6.0
Open IIS Manager. Ga naar de site 'Default Web Site' en open de 'Properties'. Kies op het tabblad 'Directory Security', onder 'Authentication and access control', de 'Edit' knop. Zet 'Enable anonymous access' en eventueel andere geselecteerde authenticatievormen uit. Zet 'Basic authentication' aan. Wanneer de host onderdeel is van een domein, kan eventueel een standaarddomein en een realm ingevuld worden. Door dit in te vullen, is het niet nodig om handmatig het domeinnaam in te vullen in het gebruikersveld bij het inloggen op de web-interface.

Instructies voor IIS 7.x
Open IIS Manager. Ga naar de site 'Default Web Site'' site en kies het 'Authentication' configuratiescherm. Zet 'Anonymous Authentication' uit en 'Basic Authentication' aan. Wanneer de host onderdeel is van een domein, kan eventueel met behulp van 'Edit' een standaarddomein en een realm ingevuld worden. Door dit in te vullen, is het niet nodig om handmatig het domeinnaam in te vullen in het gebruikersveld bij het inloggen op de web-interface.
A.3 'vbox' administratorrechten wegnemen
Voor de veiligheid wordt sterk aanbevolen om van het 'vbox' account de administratorrechten weg te nemen. Het wachtwoord staat plain-text op een door het OS te bereiken schijf en is hierom een veiligheidsrisico. Door de administratorrechten weg te nemen, wordt bij een lek van het wachtwoord de schade beperkt. Ook bij andere hackpogingen via de web-interface zal de schade aan het Host OS beperkt blijven.

Let op dat hoewel het wegnemen van administratorrechten op veiligheidsgebied veel voordelen biedt, dat het ook enkele nadelen geeft.
  • Het is niet meer mogelijk om via de web-interface VirtualBox host-only netwerkadapters toe te voegen of te verwijderen. Het toekennen aan en gebruik door VMs van host-only netwerkadapters is echter nog steeds mogelijk. Workaround: voeg host-only adapters toe en verwijder ze via de normale VirtualBox GUI.
  • Hoewel het via de web-interface nog wel mogelijk is om USB controllers toe te kennen aan VMs, is het niet meer mogelijk om USB Device Filters te installeren. Met andere woorden: het is niet meer mogelijk om fysieke USB apparaten toe te kennen aan VMs. De workaround hiervoor is omslachtig, maar door tijdelijk administratorrechten toe te kennen aan het 'vbox' account en de 'VBoxWebSrv' service te herstarten, is het mogelijk om in de web-interface USB Device Filters te installeren. Haal daarna de administratorrechten weer weg en herstart de service opnieuw. De bestaande USB Device Filters werken, zelfs als administratorrechten ontbreken.
Om de administratorrechten weg te nemen, moeten eerst handmatig een aantal rechten aan het 'vbox' account toegekend worden. Deze rechten heeft het 'vbox' account nu, omdat alle administrators deze rechten hebben.

'vbox' rechten geven op het VirtualBox DCOM object
Open 'Start' -> 'Control Panel' -> 'Administrative Tools' -> 'Component Services'. Open in 'Component Services' de eigen computer -> 'DCOM Config'. Zoek in de lijst naar 'VirtualBox Application'. Open de 'Properties' ervan en ga naar het tabblad 'Security'. Kies onder 'Launch and Activation Permissions' voor 'Customize' en 'Edit'. Voeg het account 'vbox' toe en ken aan 'vbox' de rechten 'Local Launch' en 'Local Activation' toe. Kies tweemaal 'OK' om de instellingen te bevestigen en sluit Component Services af.

'vbox' wijzigingsrechten geven op de folder met virtuele machines
Via phpVirtualbox is het mogelijk om via 'File' -> 'Preferences' -> 'General' de 'Default Machine Folder' aan te passen. Indien deze de standaardwaarde heeft en dit gewenst is (VMs worden opgeslagen in het gebruikersprofiel van 'vbox'), hoeft er niets aangepast te worden, omdat 'vbox' hier al alle rechten op heeft (ook als niet-administrator).

Indien deze waarde wel gewijzigd is, moeten de NTFS rechten van de betreffende folder gewijzigd worden. Ga in Windows Explorer naar de betreffende folder, open de 'Properties' en ga naar het tabblad 'Security'. Voeg het account 'vbox' aan de lijst toe en geef het de rechten op 'Modify'. Sluit de hiervoor geopende vensters af met 'OK' om de wijzigingen te bevestigen.

'vbox' wijzigingsrechten geven op de configuratiefolder van VirtualBox
De configuratiefolder van 'vbox' staat wel in het eigen profiel en hierom zou het account daar alle rechten op moeten hebben. Echter, de configuratiefolder wordt benaderd door de eerder gemaakte junction point, die zijn eigen NTFS rechten heeft.

Voor NT 5.2: ga in Windows Explorer naar 'C:\Documents and Settings\Default User'. Open van '.VirtualBox' de 'Properties' en ga naar het tabblad 'Security'. Voeg het account 'vbox' aan de lijst toe en geef het de rechten op 'Modify'. Sluit de hiervoor geopende vensters af met 'OK' om de wijzigingen te bevestigen.

Voor NT 6.x zijn de instructies iets uitgebreider. De reden hiervoor is dat naast schrijfrechten voor de configuratiefolder, VirtualBox ook leesrechten nodig heeft op de folder daarboven om te verifieren dat de configuratiefolder bestaat. Bij NT 5.2 zou dit de 'Documents and Settings\Default User'-folder zijn, waarvoor elke gebruiker leesrechten heeft. Onder NT 6.x is dit echter de folder van het systeemprofiel, waarvoor alleen het systeemaccount en administrators rechten hebben.

Ga in Windows Explorer naar 'C:\Windows\System32\config\systemprofile'. Open van '.VirtualBox' de 'Properties' en ga naar het tabblad 'Security'. Voeg het account 'vbox' aan de lijst toe en geef het de rechten op 'Modify'. Sluit de hiervoor geopende vensters af met 'OK' om de wijzigingen te bevestigen. 'Windows Security' zal een waarschuwing geven over dat de permissies van een systeemfolder gewijzigd worden. Kies bij deze waarschuwing voor 'Yes'.

Ga nu in Windows Explorer naar de folder 'C:\Windows\System32\config', open van 'systemprofile' de 'Properties' en ga naar het tabblad 'Security'. Voeg het account 'vbox' aan de lijst toe en geef het alleen rechten 'Read'. Sluit de hiervoor geopende vensters af met 'OK' om de wijzigingen te bevestigen. 'Windows Security' zal een waarschuwing geven over dat de permissies van een systeemfolder gewijzigd worden. Kies bij deze waarschuwing voor 'Yes'.

Ga nu in Windows Explorer naar de folder 'C:\Windows\System32\config\systemprofile', en zet op alle bestanden en folders (in ieder geval AppData en ntuser.dat), behalve '.VirtualBox', voor 'vbox' het 'Read'-recht op 'Deny' om te voorkomen dat het gebruikersaccount dit kan uitlezen. Dit kan gedaan worden via 'Properties' -> 'Security'.

De administratorrechten wegnemen
Stop de VBoxWebSrv service, verwijder de gebruiker 'vbox' uit de groep 'Administrators' en plaats deze in 'Users'. Start de VBoxWebSrv service om VirtualBox te laten draaien met beperkte rechten. Als in phpVirtualBox de virtuele machines te zien en te beheren zijn, is de configuratiewijziging succesvol gelukt.
A.4 Authenticatie voor de console van een VM toevoegen
Deze instructies moeten uitgevoerd worden per VM waarvan de console op afstand te gebruiken is.

Open in phpVirtualBox de 'Settings' van de VM. Ga naar 'Display' -> 'Remote Display'. Zet 'Enable Server' aan en kies bij 'Authentication Method' voor 'External'. Bevestig de wijziging in de configuratie met 'OK'.

Vanaf nu zal in phpVirtualBox het tabblad 'Console' bruikbaar zijn wanneer de VM aanstaat en gekozen is. Via dit tabblad kan ingelogd worden op de console van de VM door het eigen Windows gebruikersnaam en wachtwoord te gebruiken. Al zou 'Authentication Method' op 'None' staan, wordt niets in de velden voor gebruikersnaam en wachtwoord geverifieerd en zou iedereen in kunnen loggen.

B. Command-line interface ondersteuning toevoegen (optioneel)

Het standaard command-line gereedschap van VirtualBox ('vboxmanage.exe') werkt niet op de server wanneer VirtualBox als service draait, omdat VirtualBox niet in dezelfde sessie draait als dat van de gebruiker. Het is mogelijk om via een (localhost-gebaseerde) netwerkinterface (dezelfde interface als die phpVirtualBox gebruikt) te communiceren met VirtualBox, om zo opdrachten te geven of informatie te verkrijgen. Bij VirtualBox wordt geen command-line tool hiervoor meegeleverd. Wel is een SDK beschikbaar, waarmee een werkende CLI tool gemaakt kan worden. Gekozen kan worden om een vooraf bereid pakket te gebruiken of om zelf aan de slag te gaan met de SDK.
B.1 CLI tool gebruiken via een pre-compiled pakket
Benodigdheden:Met behulp van Python en het meegeleverde voorbeeld uit de SDK heb ik een simpel front-end batch-script gemaakt die het volgende kan doen:
  • Toon alle VMs (namen of UUIDs).
  • Toon alle gestarte VMs (namen of UUIDs).
  • Toon de huidige status van een VM.
  • Start, pauzeer (save to disk/hibernate), hervat en stop (op de nette manier of hardnekkig) een VM.
  • Toon de configuratie van een VM.
Download eerst de VirtualBox SDK. Pak de inhoud van de 'sdk' folder van het archief uit in de 'sdk' folder van de installatie van VirtualBox.

VBoxManageService, samen met een voorbereide, klant-en-klare, stand-alone Python-distributie, is hier op te halen. Pak het geheel ergens uit en start 'VBoxManageService.bat' vanuit een command prompt ('cmd'). De help-pagina geeft aan hoe het programma werkt. Indien meer functionaliteit gewenst is, kan geŰxperimenteerd worden met 'vboxshell.py' uit de VirtualBox SDK.
B.2 Zelf compileren en experimenteren met de SDK
Hierbij een kort stappenplan indien eigen compilatie gewenst is. Het 'VBoxManageService' pakket is op het resultaat hiervan gebaseerd.
  1. Download en installeer Python, de laatste stabiele 2.x X86-64 versie.
  2. Download Zolera SOAP Infrastructure (ZSI) 2.1_a1 (.tar.gz archief), pak het ergens uit, compileer en installeer het met Python via de volgende opdrachten:
    python setup.py build
    python setup.py install
  3. Download de VirtualBox SDK en pak de inhoud van de 'sdk' folder in het archief uit in de al bestaande sdk folder van VirtualBox ('C:\Program Files\Oracle\VirtualBox\sdk').
  4. Compileer en installeer de VirtualBox SDK met Python door de volgende opdrachten uit te voeren in de sdk\installer folder:
    python vboxapisetup.py build
    python vboxapisetup.py install
  5. Nu is Python in combinatie met de VirtualBox SDK klaar om met behulp van het aangeleverde script 'VBoxManageService.bat' of 'vboxshell.py' uit de SDK via de command-line de VMs te beheren.
á

C. Windows VMs van VMWare Server migreren naar VirtualBox Server (optioneel)

Linux VMs omzetten naar VirtualBox Server zal over het algemeen weinig problemen geven. Windows is echter wat strenger met betrekking tot grote hardwarewijzigingen. Hierom een apart stappenplan om een Windows VM vanuit VMWare Server (of een ander VMWare product) om te zetten naar VirtualBox Server.

Bij bepaalde stappen wordt aangegeven waar de betreffende stap en opvolgende stappen uitgevoerd dienen te worden.
  1. Voer deze stappen uit in de VM in VMWare.
    Start de VM en log in Windows in met een account met administratorrechten.
  2. De-installeer VMWare Tools.
  3. Herstart de VM om de de-installatie te voltooien.
  4. Sluit de VM af.
  5. Voer deze stap uit in het Host OS.
    Kopieer de folder van de VM naar de locatie waar de VMs van VirtualBox staan.
  6. Voer deze stappen uit in phpVirtualBox.
    Maak een nieuwe VM aan. Gebruik voor de VM dezelfde naam als de folder waar de VM in zit (zodat het .vbox configuratiebestand in dezelfde folder komt). Gebruik als bootdisk het .vmdk bestand van de VM.
  7. Open de instellingen van de VM. Schakel onder het tabblad Settings -> Motherboard -> IO APIC in.
  8. Zet onder het tabblad Network -> Adapter 1 'Attached to' op de gewenste instellingen. Controleer onder Advanced of het gekozen 'Adapter Type' staat ingesteld op 'AMD PCNet-FAST III'.
  9. Controleer onder Storage of de HDD zit aangesloten op een IDE
    Controller van het type PIIX4 en of op dezelfde controller een CD/DVD drive aanwezig is.
  10. Sla de instellingen op en start de VM.
  11. Voer deze stappen uit in de VM in VirtualBox.
    Log in Windows in met een account met administratorrechten.
  12. Installeer de VirtualBox Guest Additions.
  13. Herstart de VM na de installatie van de VirtualBox Guest Additions.
  14. Open Device Manager. Ga naar 'Computer' -> 'ACPI Uniprocessor PC'.
  15. Wijzig dit apparaat via handmatige driver herinstallatie naar 'Advanced Configuration and Power Interface (ACPI) PC'.
  16. Sluit de VM af.
  17. Voer deze stappen uit in phpVirtualBox en deels in de VM zelf.
    Schakel in de configuratie van de VM de eerder aangezette optie 'IO APIC' uit wanneer het besturingssysteem van de VM 32-bit is en maar van ÚÚn processor gebruik maakt. Laat het anders aan staan.
  18. Start de VM. In de VM zal Windows na het inloggen nog eenmaal vragen om te
    herstarten om alle nieuw gevonden hardware te initialiseren. Doe dit.
  19. De migratie is voltooid. Vergeet niet dat alle hardware voor het OS 'nieuw' is. Herconfigureer de netwerkkaart en alles wat daarvan afhankelijk is, indien nodig.

D. VirtualBox upgraden (optioneel)

Het ligt aan het soort nieuwe versie of de upgrade gemakkelijk zal zijn of niet. Bij een 'minor upgrade' (bijvoorbeeld: van versie 4.0.4 naar 4.0.6) kan dit erg kort zijn:
  1. Stop alle VMs en stop de VBoxWebSrv service. Zet de 'Startup type' van de service op 'Disabled'.
  2. Start de installatie van de nieuwe versie.
  3. Reboot nadat de installatie van de nieuwe versie voltooid is.
  4. Haal een nieuwe, passende versie van het Extension Pack op voor de nieuw ge´nstalleerde VirtualBox versie. Installeer deze versie. Het kan zijn dat door VirtualBox een foutmelding gegeven wordt dat de oude versie niet verwijderd kon worden. Indien dit het geval is, start de installatie van het nieuwe Extension Pack nog een keer. Daarna voltooid de installatie wel.
  5. Zet de 'Startup Type' van VBoxWebSrv nu op 'Manual' of 'Automatic' en start de service.
  6. Als het goed is moet nu alles werken via phpVirtualBox. Voor de CLI: Als VBoxManageService niet meer werkt, volg dan stappen 3, 4 en 5 van B.2 om de meegeleverde Python distributie te voorzien van een nieuwere VirtualBox SDK die wel werkt met de nieuwe versie van VirtualBox.
Bij een major upgrade kan het nodig zijn om phpVirtualBox te vervangen met een nieuwere versie (zie de downloadpagina van phpVirtualBox voor welke versies van VirtualBox ondersteund worden). Verwijder in dit geval alles uit 'C:\inetpub\wwwroot' en begin met een verse start. Kopieer niet de 'config.php' over uit een oude versie: er kunnen variabelen missen in een oudere versie die essentieel zijn voor een nieuwere versie van phpVirtualBox.

Volgende: Deus Ex: Human Revolution Collector's Edition 08-'11 Deus Ex: Human Revolution Collector's Edition
Volgende: Van harte gefeliciteerd, Windows XP x64! 04-'11 Van harte gefeliciteerd, Windows XP x64!

Reacties


Door Tweakers user woekele, zaterdag 30 april 2011 10:21

Wat een uitgebreide handleiding. Mooi hoor.

Door Tweakers user Cyphax, zaterdag 30 april 2011 11:19

Complimenten voor je artikel. Niet alleen ontzettend netjes gemaakt, maar ook erg nuttig. :)

Door Tweakers user Tsurany, zaterdag 30 april 2011 11:52

Net artikel! Gebruik zelf gewoon Server 2008 R2 met Hyper-V, net wat simpeler voor elkaar te krijgen :)

Door Tweakers user Gleighton, zaterdag 30 april 2011 11:54

Heb je ook wel eens naar VRDP gekeken? Ik vind dit een mooie feature van vitualbox, ook voor headless installaties.

Door Tweakers user i-chat, zaterdag 30 april 2011 13:43

voor de mensen die liever linux gebruiken (omdat dit bijv al op een servertje staat), kun je ook af met ubuntu 4.x (OSE) - onder ubuntu is deze build gedaan met vnc-enable en heb je dus geen extention pack nodig - ander voodeel vind ik dat je wat makkelijker over kunt stappen naar iets als jeOS.

bovendien heb je er geen licenties voor win2008 voor nodig,

[Reactie gewijzigd op zaterdag 30 april 2011 13:49]


Door Tweakers user HyperBart, zaterdag 30 april 2011 16:10

Why the hell is ESXi te overkill voor kleinschalige virtualisatie? 8)7 Daarvoor is het net ook supergeschikt...

Trouwens, een OS wat al meer als 5 jaar uit support is gebruiken als host-OS, nofi, maarre 8)7

[Reactie gewijzigd op zaterdag 30 april 2011 16:33]


Door Tweakers user The Zep Man, zaterdag 30 april 2011 16:37

HyperBart schreef op zaterdag 30 april 2011 @ 16:10:
Why the hell is ESXi te overkill voor kleinschalige virtualisatie? 8)7 Daarvoor is het net ook supergeschikt...
Niet als je hardware ook nog andere dingen moet doen dan ESXi draaien. Virtualisatie is nog steeds geen 100% oplossing voor alles.
Trouwens, een OS wat al meer als 5 jaar uit support is gebruiken als host-OS, nofi, maarre 8)7
Alle besturingssystemen waarop deze handleiding betrekking heeft ontvangen nog minstens drie jaar beveiligingsupdates. Ik snap daarom ook niet niet wat je met "uit support" bedoelt.

[Reactie gewijzigd op zaterdag 30 april 2011 16:39]


Door Tweakers user HyperBart, zaterdag 30 april 2011 16:40

Oeps, even te snel gereageerd met dat NT-gedoe, je draait een NT-kernel, dus je gebruikt niet "Windows NT"... ;)

Door Tweakers user HyperBart, zaterdag 30 april 2011 16:45

En wat wil je nog meer draaien op je computer dan hetgeen wat ESXi aanbiedt? Mijn vraag is eigenlijk, waarom verplaats je functies naar het OS dat ook moet virtualiseren? Als er daar dan iets misloopt gaat je hele stack op zijn bek...

Door Tweakers user rhodium, zaterdag 30 april 2011 16:58

Mij kon Virtualbox niet bekoren en ESXI was traag in de meeste gevallen. Ik ben overgestapt naar Citrix XenServer. Op wat nukkigheden na ben ik er behoorlijk tevreden over. Meer dan over ESXI :)

Door Tweakers user HyperBart, zaterdag 30 april 2011 17:05

rhodium schreef op zaterdag 30 april 2011 @ 16:58:
Mij kon Virtualbox niet bekoren en ESXI was traag in de meeste gevallen. Ik ben overgestapt naar Citrix XenServer. Op wat nukkigheden na ben ik er behoorlijk tevreden over. Meer dan over ESXI :)
Hoe bedoel je, ESXi traag? XenServer hoor ik de laatste tijd ook wel heel wat positief over, moet ik ook eens een probeerseltje geven...

Door Tweakers user Ellos, zaterdag 30 april 2011 19:28

Totaal offtopic vraagje, heb jij ook een minecraft server draaien?

Door Tweakers user The Zep Man, zaterdag 30 april 2011 19:47

HyperBart schreef op zaterdag 30 april 2011 @ 16:45:
En wat wil je nog meer draaien op je computer dan hetgeen wat ESXi aanbiedt?
Software welk van hardware afhankelijk is die (nog) niet gevirtualiseerd kan worden.
HyperBart schreef op zaterdag 30 april 2011 @ 16:45:
Mijn vraag is eigenlijk, waarom verplaats je functies naar het OS dat ook moet virtualiseren? Als er daar dan iets misloopt gaat je hele stack op zijn bek...
Je zegt het heel goed: 'als'. Er zijn situaties waarin een stukje verwachte stabiliteit ingeleverd kan worden om zo veel meer functionaliteit te verkrijgen.

Als je het oneens bent met de handleiding: niemand verplicht je om hem te gebruiken. Ik weet echter dat er velen zijn die nog steeds VMWare Server draaien en voor wie ESXi geen alternatief is. Die hebben waarschijnlijk meer aan deze handleiding.

[Reactie gewijzigd op zaterdag 30 april 2011 20:26]


Reageren is niet meer mogelijk