remote Administration seiner Virtualbox Instanzen per Webbrowser – PHPVirtualBox

Die sicherlich nicht unbekannte Software Virtualbox (aktuelle Version: 3.2.10) bietet schnell und zudem auch noch recht komfortabel zu bedienen die Möglichkeit, virtuelle Maschinen (sogenannte VMs) zu erstellen. Somit kann man mal schnell ein Betriebssystem testweise installieren, Programme unabhängig von seinem eigentlichen Rechner nutzen oder einfach die Vorteile geteilter Hardware ausnutzen. Eine Anleitung zur Installation von VirtualBox im „headless“ Betrieb habe ich vor einiger Zeit schon einmal erstellt. Wer noch nicht mit VirtualBox vertraut ist, sollte sich das ruhig mal durchlesen und findet vielleicht auch einen Einsatzzweck (z.B. Test von Software, Sandboxing, Installation anderer Betriebssysteme) für sich selber.



VirtualBox, eine für den Endbenutzer kostenfreie Software zur Virtualisierung von Rechnern, ist im „Auslieferungszustand“ nicht unbedingt zur (remote-)Administration per Webbrowser vorgesehen. Grundsätzlich kann alles auf dem Host entweder in der Konsole oder im mitgelieferten Administrationstool eingerichtet und administriert werden.
Allerdings braucht oder möchte man wohl ab und an seine virtuellen Maschinen von extern (also remote) administrieren. Am Liebsten natürlich per Webbrowser von jedem Rechner der Welt (sofern man Zugriff hat). Unabhängig vom Betriebssystem des Hosts, auf dem der Browser läuft.

Hierzu gibt es verschiedene Möglichkeiten und Projekte, die allesamt ein paar Vor- und Nachteile haben. Die wohl interessanteste Variante, die ich habe hierzu habe finden können, ist PHPVirtualBox. Ein Projekt, welches eine Administration seiner virtuellen Maschinen im Webbrowser zur Verfügung stellt. Ähnlich der bekannten webbrowsergestützen Administrationstools wie PHPMyAdmin (Administration von MySQL Datenbanken), webmin (Administration seines Servers) und vieler anderen nützlichen Webbrowser-Administrations-Tools.
Quasi die einzige Voraussetzungen auf dem VM Host (also dort, wo die virtuellen Maschinen laufen): Ein installierter Webserver (Apache, tinyhttpd o.ä.) und natürlich ein paar Kenntnisse in Linux/ UNIX. Mehr braucht man erstmal auf dem Host nicht.


Was bietet PHPVirtualBox an Funktionen?
PHPVirtualBox ist ein sich in der Entwicklung befindliches und noch wachsendes Projekt. Derzeit umfasst es noch nicht alle Funktionen, die man u.U. vom VirtualBox Administrationstool (der „GUI“) kennt. Die derzeitige Version ist Version 0.5 vom 10. August 2010. Es wird weiter entwickelt und nach und nach hoffentlich auch noch ein paar kleine Fehler beseitigt.
Die grundlegenden Funktionen, die auch das Administrationstool selber bietet, sind in PHPVirtualBox derzeit schon implementiert:

  • Übersicht über die vorhandenen virtuellen Maschinen
  • Änderungen der Konfiguration einzelner VMs
  • neu anlegen von virtuellen Maschinen
  • starten, stoppen, pausieren von VMs
  • Snapshots erstellen, löschen und wiederherstellen
  • Medien (Disk, CD, DVD usw.) verwalten
  • Netzwerkeinstellungen der virtuellen Maschine bearbeiten
  • und noch einiges mehr

Diese Funktionen können über einen gängigen Webbrowser (Firefox, Safari, Chrome, Opera usw.) administriert und die VMs somit gesteuert werden. Gut, braucht man ja eigentlich die grafische Oberfläche nicht wirklich, da auch alles über die Konsole gesteuert werden kann.
Und sich die Arbeit etwas erleichtern ist auch immer eine gute Idee, schaden kann es ja nicht 😉


Die Installation
Die Installation ist normalerweise in wenigen Schritten fertig: Runterladen, entpacken, Konfigurationsdatei anpassen, fertig.
In etwas mehr Schritten erklärt: Die Installation ist dokumentiert unter http://code.google.com/p/phpvirtualbox/wiki/Installation. Hier gibt es noch für „spezielle“ Einzelfälle ein paar Tipps und Hinweise.
Die Voraussetzungen für die Installation sind sparsam gehalten: Ein Webserver (Apache o.ä.) mit aktuellem PHP5 (5.2.0 oder aktueller).
Unter Ubuntu kann man mit den folgenden Schritten eine korrekte Kombination Apache2 & PHP5 einrichten:
#Shell> sudo apt-get install apache2
#Shell> sudo apt-get install php5
#Shell> sudo apache2ctl restart

Danach kann man sich eine Testseite (phpinfo(); ) mit PHP ausgeben lassen. PHPinfo() gibt einem eine Übersicht mit den PHP relevanten Konfigurationseinstellungen zurück, sofern alles richtig eingerichtet wurde.
Sollte man Apache2 und PHP5 noch nicht installiert haben, so sollte man sich ruhig mal ein paar Minuten die Installationsanleitung „Webserver & PHP5“ ansehen.

Erfüllt man obige Voraussetzungen, kann man endlich mit der eigentlichen Installation loslegen:
#Shell> sudo wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-0.5.zip
#Shell> sudo unzip phpvirtualbox-0.5.zip
#Shell> cd phpvirtualbox-0.5
#Shell> sudo vi config.php
Hier wird nun angepasst, mit welchem Benutzernamen sich PHPVirtualBox am lokalen System anmelden kann, die Zeilen sind anzupassen:

var $username = 'username';
var $password = 'password';
var $location = 'http://localhost:18083/';

Nachdem dieses ausgefüllt wurde kann mit einem Webbrowser auf die WebGUI zugegriffen werden: http://IP_HOST/phpvirtualbox-0.5/.


Erster Aufruf nach der Installation – eine Fehlermeldung begrüßt einen
Nachdem die Installation erfolgreich abgeschlossen wurde und die Benutzerdaten (Benutzername und Passwort) in der config.php gespeichert wurden kann mit einem Webbrowser auf PHPVirtualBox zugegriffen werden. Hierzu wird im Webbrowser die URL von PHPVirtualBox eingegeben. Angenommen der Installationspfad im Webserververzeichnis wurde als phpvirtualbox festgelegt, so wird über http://IP_VBoxHost/phpvirtualbox/ das Tool erreicht und aufgerufen.
Im Browserfenster startet eine mit grauem Hintergrund unterlegte Applikation. Da aber ein elementarer Dienst, auf den PHPVirtualBox zugreift, zwingend laufen muss und für die Administration erforderlich ist, gibt es ersteinmal eine Fehlermeldung:

vbox Fehlermeldung start
Fehlermeldung beim Zugriff auf PHPVirtualbox ohne laufenden Webserverdienst auf dem VirtualBox Host.

Diese Fehlermeldung erhält man dann, wenn der Webserverdienst für den Zugriff auf Virtualbox nicht läuft. Dieser Dienst vermittelt quasi zwischen der VBox Konsole und dem Webbrowser.
Man muss nun prüfen, ob der Dienst läuft. Hierzu auf der Konsole des Hosts nachsehen, ob vboxwebsrv läuft:
#Shell> ps aux | grep vboxwebsrv
Läuft der Dienst, bekommt man eine Zeile mit der PID (Prozess-ID) ausgegeben:
#Shell> prozessusername 12345 0.0 0.2 173724 6028 pts/4 Sl 11:37 0:00 /usr/bin/vboxwebsrv
Hier erkennt man den laufenden Prozess. Die erste Spalte zeigt den Username, unter dem das Tool läuft. Die zweite Spalte (12345) ist die Prozess-ID.

Erhält man keine Ausgabe (außer der einen Zeile seines „Suchaufrufs“), so läuft der Dienst nicht. Normalerweise liegt vboxwebsrv in /usr/bin. Sollte das nicht so sein, ein find durchführen:
#Shell> sudo find / -name vboxwebsrv
/usr/bin/vboxwebsrv
/usr/lib/virtualbox/vboxwebsrv

Dieser Dienst muss nun gestartet werden, man erhält einige Infos über den erfolgreichen Start und die Kommunikation des Prozesses:
#Shell> /usr/bin/vboxwebsrv
Sun VirtualBox web service version 3.1.6_OSE
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.
[ P ] Socket connection successful: host = default (localhost), port = 18083, master socket = 10

Nun läuft zumindest der Dienst. Ein erneuter Aufruf im Browser bringt einen weiter vorwärts, es wird sich nun die GUI anfangen zu starten.


Login Problem – error logging in or connecting to vboxwebsrv
Leider kommt die Version 0.5 noch mit einem sehr unschönen und lästigen Fehler daher: Die Authentifizierung (trotz korrekter Eingabe in der config.php) schlägt fehl. Sofern man sicherstellen kann, dass die Einträge richtig sind, ist hier die/ eine Lösung zu finden.

Versucht man den Aufruf, so erhält die Fehlermeldung, dass der Login fehlgeschlagen ist:

vbox Fehlermeldung Login fehlgeschlagen
(Fehlermeldung beim Aufruf – der interne Loginprozess schlägt fehl.)

Die Hinweise unter Details helfen einem leider nicht wirklich weiter. Einzig und allein ein wenig Googlen bringt einem die Lösung: Es gibt Probleme mit der Authentifizierung. Hierzu hilft derzeit leider nur, die Authentifizierung komplett zu deaktivieren. Das ist unschön, aber hilft ja nichts. Auf der Konsole des Hosts wird dies nun deaktiviert:
#Shell> VBoxManage setproperty websrvauthlibrary null
Der Aufruf deaktiviert die interne Authentifizierung des Webserverdiensts von VirtualBox. (Weiter unten gibt es noch den Hinweis zur Nutzung einer .htaccess Datei. Damit kann man zumindest erstmal wieder ein wenig mehr Sicherheit reinbringen.)

Der vboxwebsrv muss nun erneut gestartet werden. Mit STRG-C kann in der Konsole der Prozess beendet werden oder muss mit kill auf der Konsole abgeschossen werden. Nun kann der Aufruf erfolgreich durchgeführt werden und man erhält das Administrationstool in seiner kompletten Ansicht.
Fertig.
Um zu prüfen, ob das Problem der Authentifizierung in neuen Versionen irgendwann mal behoben ist, kann man testweise diese wieder aktivieren:
#Shell> VBoxManage setproperty websrvauthlibrary one
Nun gibt es wieder da schöne Fehlerfenster, sofern dieses Problem noch existiert…


Sicherheitsbedenken
Ein „Problem“ (wenn man es als solches bezeichnen mag) ist die derzeitige Implementation von PHPVirtualBox in das Netzwerk. Es findet keinerlei Benutzerauthentifizierung statt. Hat also jemand Zugriff auf die Weboberfläche, so hat dieser auch den uneingeschränkten Zugriff auf die virtuellen Maschinen. Das kann für den Einzelnen, der einfach nur die Webgui nutzen möchte, ohne Bedenken vernachlässigt werden. Nutzt man das allerdings in einem „Mehrbenutzer“-Netzwerk so sollte man sich über eine Beschränkung Gedanken machen. Einfachster Weg, um zumindest den Zugriff auf PHPVirtualBox zu beschränken: Benutzer- und Passwortverifikation per .htaccess Datei im Verzeichnis. Das schränkt zumindest die Anzahl der PHPVirtualBox Benutzer, jedoch nicht den Zugriff auf einzelne VMs ein. Jeder, der Zugriff auf PHPVirtualBox hat, hat auch den kompletten Zugriff auf die VMs, kann diese stoppen, neue hinzufügen und einzelne abändern.
Was man natürlich auch nicht machen sollte: Einige Privatnutzer leiten gerne einen HTTP Port auf dem NAT Router von extern auf den internen Webserver weiter. Hat man das gemacht und keinerlei Absicherung sollte man sich wohl nicht wundern, wenn die virtuellen Maschinen ein eigenartiges Eigenleben entwickeln und mal an, mal aus und auf einmal neue hinzukommen 😉


Fazit
PHPVirtualBox macht eigentlich nichts, was nicht auch auf der Konsole gemacht werden kann. Als Administrator nutzt man natürlich immer gerne alles direkt auf der Shell und braucht nicht mehr als einen Zugriff per SSH. GUIs werden einfach überbewertet und sind unnütz. Aber wer möchte es sich nicht doch irgendwann auch mal ein wenig einfacher machen und den „Luxus“ eines Tools nutzen, welches die Arbeit auch ein wenig erleichtern kann?
Man kann hoffen, dass die Entwicklung der Software weitergeht und neue Funktionen dazu kommen. Auch, wenn ich derzeit noch keine Probleme selber habe feststellen können und der Funktionsumfang für die „ich schalte mal eine VM an oder aus“ usw. vollkommen ausreichend ist.
Also: Ruhig mal selber nutzen und ausprobieren 😉


Links
http://code.google.com/p/phpvirtualbox/
Installationsanleitung PHPVirtualBox
Aktuelle Version http://phpvirtualbox.googlecode.com/files/phpvirtualbox-0.5.zip
VBoxWeb Project http://code.google.com/p/vboxweb/wiki/install

Dieser Beitrag wurde unter Dokus und Tipps, Linux/ UNIX, Technikspielkram abgelegt und mit , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Eine Antwort auf remote Administration seiner Virtualbox Instanzen per Webbrowser – PHPVirtualBox

  1. Pingback: remote Administration seiner Virtualbox Instanzen per Webbrowser …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*