PHP Shell bietet eine einfache History-Funktion, über die Sie mit den Cursor-Tasten in den zuletzt ausgeführten Kommandos vor- und zurückblättern. Weitere History-Funktionen wie eine Suche unterstützt PHP Shell aber nicht. Die Größe des "Shell-Fensters" ändern Sie gegebenenfalls via
»Size:
«
rechts unterhalb des Eingabebereichs. Dort tragen Sie einfach die gewünschten Werte ein und führen dann den nächsten Befehl aus.
Die PHP Shell enthält auch einen einfachen Editor (
»editor
Datei
«
), mit dessen Hilfe Sie alle Dateien ändern können, für die die Benutzer-ID des Webserver Schreibrechte besitzt.
Shell in a Box (Abbildung 2) eignet sich dann, wenn Sie zwar Shell-Zugang zum Server haben und dort eigene Programme einrichten können, aber als Client einen Webbrowser verwenden wollen oder müssen.
Das Projekt stellt neben dem Quellcode auf seinen Webseiten
[2]
auch Debian-Pakete zur Verfügung. Benutzer von Debian und dessen Derivaten sowie Ubuntu-User installieren die Binärpakete bequem über den Paketmanager. Verwenden Sie eine andere Distribution, entpacken Sie nach dem Herunterladen den Quellcode-Tarball in ein beliebiges Verzeichnis und übersetzen ihn dort mittels
»./configure ; make
«
. Anschließend installieren Sie Shell in a Box mit dem Befehl
»make install
«
als Root. Der Aufruf richtet das Programm unterhalb des Verzeichnisses
»/usr/local
«
ein.
Shell in a Box bringt anders als PHP Shell einen eigenen Webserver mit, der per Default auf Port 4200 lauscht. Dabei kann das Programm eine Reihe von Diensten zur Verfügung stellen, die Sie nach dem Schema
shellinaboxd -s Webpfad:Dienst
starten. Für erste Versuche können Sie dabei mit der zusätzlichen Option
»-t
«
oder in der Langform
»--disable-ssl
«
die Verschlüsselung via SSL (dazu später mehr) vorläufig deaktivieren. Welche grundsätzlichen Möglichkeiten es gibt, führt die Tabelle "Funktionen von Shell in a Box" auf. Ein
»shellinaboxd
«
-Prozess kann dabei durchaus mehrere Services zur Verfügung stellen, wie beispielsweise 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
«
verbinden, unter der URL
»http://localhost:4200/host2/
«
öffnen Sie eine SSH-Verbindung zum Rechner
»host2.example.com
«
.
Anders die PHP Shell, bei der eine Zeile komplett eingegeben, diese dann verarbeitet und das Ergebnis wieder an den Browser zurückgeschickt wird, ermöglicht Shell in a Box das textbasierte interaktive Arbeiten, beispielsweise mit einem Editor wie Vi. Die Performance bleibt dabei etwas hinter jener im "normalen" Terminal zurück, meist spürt man jedoch keine großen Einschränkungen. Shell in a Box stellt noch eine ganze Reihe weiterer Optionen zur Verfügung, ein Blick in die Dokumentation beziehungsweise auf die Webseite [2] lohnt sich.
Während erste Experimente mit Shell in a Box am lokalen Rechner durchaus ohne Verschlüsselung erfolgen können, empfiehlt es sich dringend, im produktiven Einsatz alle Verbindungen mittels SSL abzusichern. Dazu benötigen Sie ein Zertifikat, das sich im entweder im aktuellen Verzeichnis befinden muss oder dessen Speicherort Sie durch die Option
»--cert=
Verzeichnis
«
angeben. Näheres erläutert der
Kasten "Verschlüsselung und Zertifikate"
.
(jlu/ofr)
Mehr Sicherheit
Das verschlüsselte Abspeichern des Passworts mithilfe von
»pwhash.php
«
verhindert zwar unberechtigte Logins, falls einem Angreifer die Konfigurationsdatei in die Hände fallen sollte. Sie sollten PHP Shell aber grundsätzlich über eine per SSL verschlüsselte Verbindung (HTTPS) aufrufen – andernfalls könnte ein Angreifer die eingegebenen Kommandos und Ausgaben im Klartext mitlesen.
Verschlüsselung und Zertifikate
Die Verschlüsselung von Passwörtern und Daten zwischen Sender und Empfänger sorgt dafür, dass kein Unberechtigter mitlesen kann. Dazu braucht man Zertifikate, wie man sie von diversen Webseiten (oder auch Mailservern) kennt – meist nimmt man sie erst dann wahr, wenn der Browser ein Zertifikatsproblem meldet. Diese Zertifikate sollen sicherstellen, dass der Server auf der Gegenseite auch tatsächlich derjenige ist, für den er sich dem Client gegenüber ausgibt. Anderenfalls könnte sich ein Angreifer zum Abfangen des Datenverkehrs einfach als berechtigte Gegenstelle ausgeben.
Zertifikate bekommt man einerseits von kommerziellen, kostenpflichtigen Zertifizierungsstellen: Sie verifizieren die Identität des Antragstellers und geben dann ein Zertifikat für einen Hostnamen aus. Der Browser erkennt das dann automatisch als korrekt: Er vertraut bestimmten eingebauten Zertifizierungsstellen. 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
SSL-Schlüssel
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
Infos