Wer sein System permanent überwacht, hat den Grundstein dafür gelegt Engpässe zu vermeiden und Fehler frühzeitig zu erkennen. Neben dem Platzhirsch Nagios ... (mehr)

Geschichte

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.

Abbildung 1: PHP Shell ist unschwer als Webanwendung zu erkennen.
Abbildung 2: Shell in a Box wirkt auf den ersten Blick wie die echte Kommandozeile.

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.

Abbildung 3: Ein selbst signiertes Zertifikat im Webbrowser.

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

  1. PHP Shell: http://phpshell.sourceforge.net
  2. Shell in a Box: http://code.google.com/p/shellinabox/
  3. CACert: http://www.cacert.org
  4. Eigenes SSL-Zertifikat: Florian Effenberger, "Brief und Siegel", LU  06/2009, S.  31, http://www.linux-community.de/18025

Der Autor

Der Systemadministrator Wolfgang Dautermann hat neben vielen Linux-Varianten auch schon diverse Unixe gebändigt, darunter Solaris, Irix und Tru64. Er zählt zu den Organisatoren der Grazer Linux-Tage.

Ähnliche Artikel

comments powered by Disqus
Mehr zum Thema

Workshop: PowerShell-Tipp

Windows PowerShell Web Access stellt eine webbasierte Windows PowerShell-Konsole bereit. Auf diese Weise können Sie PowerShell-Befehle und -Skripte über eine PowerShell-Konsole in einem Webbrowser ausführen. So greifen Sie mit PowerShell Web Access beispielsweise über Smartphones und Tablets remote auf die PowerShell von Servern zu. Dabei können Sie alle Cmdlets nutzen, die auf dem Server verfügbar sind.
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023