Das Projekt stellt neben dem Quellcode auf seinen Webseiten [2] unter anderem als DEB-Pakete bereit. Benutzer von Debian und dessen Derivaten sowie Ubuntu-User installieren die Binärpakete bei Bedarf über den Paketmanager.
Verwenden Sie eine andere Distribution, entpacken Sie nach dem Herunterladen den Tarball mit dem Quellcode in ein beliebiges Verzeichnis und übersetzen ihn dort mittels ./configure ; make. Anschließend installieren Sie das Programm mit dem Befehl make install als Root. Der Aufruf richtet das Programm unterhalb von /usr/local ein.
Shell in a Box bringt anders als PHP Shell einen eigenen Webserver mit, der in der Vorgabe auf Port 4200 lauscht. Dabei stellt das Programm bei Bedarf eine Reihe von Diensten bereit. Die starten Sie nach dem folgenden Schema:
shellinaboxd -s Webpfad:Dienst
Für erste Versuche bietet es sich in einigen Fällen an, mit der zusätzlichen Option -t oder der Langform --disable-ssl das Verschlüsseln via SSL vorläufig zu deaktivieren. Das Programm bringt noch eine ganze Reihe weiterer Optionen mit, ein Blick in die Dokumentation beziehungsweise auf die Webseite [2] lohnt sich. Die Tabelle “Funktionen von Shell in a Box” führt die grundsätzlichen Möglichkeiten auf.
Funktionen von Shell in a Box
|
Kommando |
Funktion |
|---|---|
|
|
Stellt eine Login-Shell am lokalen System unter dem Pfad |
|
|
Stellt ein SSH-Login am lokalen System unter dem Pfad |
|
|
Stellt einen SSH-Login für den entfernten Rechner |
|
|
Startet unter |
Ein Prozess der Software stellt bei Bedarf mehrere Services bereit, wie das Login zu mehreren Rechnern:
shellinaboxd -s /host1/:SSH:host.example.com -s /host2/:SSH:host2.example.com
So verbinden Sie sich unter der URL http://localhost:4200/host1/ zu host.example.com, unter der URL http://localhost:4200/host2/ öffnen Sie eine SSH-Verbindung zum Rechner host2.example.com.
Anders als bei PHP Shell, das den Befehl in einer Zeile erwartet, diese dann verarbeitet und das Ergebnis an den Browser zurückschickt, ermöglicht Shell in a Box das textbasierte interaktive Arbeiten, beispielsweise mit einem Editor wie Vi oder Joe. Die Performance bleibt dabei etwas hinter jener im normalen Terminal zurück, meist spüren Sie jedoch kaum Einschränkungen.
Während für erste Experimente am lokalen Rechner eine unverschlüsselte Verbindung ausreicht, empfiehlt es sich dringend, im produktiven Einsatz die gesamte Kommunikation mittels SSL abzusichern. Dazu benötigen Sie ein Zertifikat, das die Software im aktuellen Verzeichnis erwartet. ALternativ geben Sie den Speicherort durch die Option --cert=Verzeichnis an. Näheres erläutert der Kasten “Verschlüsselung und Zertifikate”.
Verschlüsselung und Zertifikate
Das Verschlüsseln von Passwörtern und Daten zwischen Sender und Empfänger sorgt dafür, dass kein Unberechtigter mitliest. Dazu brauchen Sie Zertifikate, wie Sie sie von diversen Webseiten (oder Mailservern) kennen – meist bemerken Sie diese erst, wenn der Browser ein Problem meldet.
Diese Zertifikate sollen sicherstellen, dass der Server auf der Gegenseite tatsächlich derjenige ist, für den er sich dem Client gegenüber ausgibt. Anderenfalls bestünde die Möglichkeit, dass sich ein Angreifer zum Abfangen des Datenverkehrs einfach als berechtigte Gegenstelle ausgibt.
Zertifikate bekommt Sie einerseits von kommerziellen, kostenpflichtigen Ausgabestellen: Diese verifizieren die Identität des Antragstellers und geben ein Zertifikat für einen Hostnamen aus. Der Browser erkennt das dann automatisch als korrekt: Er vertraut bestimmten, eingebauten Unternehmen. Eine Alternative bietet die Community-Lösung CACert [3].
Schließlich besteht die Möglichkeit, mithilfe von OpenSSL selbst signierte Zertifikate [4] auszustellen – Listing 1 führt die dazu notwendigen Schritte auf. Wenn Sie solche verwenden (Abbildung 3) und von anderen Rechnern aus über das Internet auf derart gesicherte Dienste zugreifen, sollten Sie sich dabei auf jeden Fall das Zertifikat anschauen und die zugehörigen MD5/SHA1-Fingerprints vergleichen.
Listing 1
Key erzeugen:
# openssl genrsa -des3 -out server.key 1024
Certificate Signing Request (CSR) erzeugen:
# openssl req -new -key server.key -out server.csr
Passwort vom Schlüssel entfernen:
# cp server.key server.key.org
# openssl rsa -in server.key.org -out server.key
CSR signieren und Zertifikat erzeugen:
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt cat server.crt server.key > certificate.pem
Glossar
- Safe-Mode
-
Der (als veraltet geltende) Safe-Mode ist ein Versuch, PHP auf Webservern, die viele verschiedene Sites hosten (sogenannte “Shared Server”), durch Einschränkungen gewisser Befehle sicher zu machen.
- SSL
-
Secure Sockets Layer. Eine Zwischenschicht, die auf das TCP/IP-Protokoll aufsetzt und dortexistierende Protokolle (HTTP, POP3, IMAP, …) verschlüsselt.
Infos
- PHP Shell: http://phpshell.sourceforge.net
- Shell in a Box: http://code.google.com/p/shellinabox/
- CACert: http://www.cacert.org
- Eigenes SSL-Zertifikat: Florian Effenberger, “Brief und Siegel”, LU 06/2009, S. 31, http://www.linux-community.de/18025







