Aus Raspberry Pi Geek 02/2016

Shell-Zugriff per Webbrowser (Seite 2)

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.

Abbildung 2: Die Software Shell in a Box wirkt auf den ersten Blick wie die echte Kommandozeile.

Abbildung 2: Die Software Shell in a Box wirkt auf den ersten Blick wie die echte Kommandozeile.

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

shellinaboxd -s /:LOGIN

Stellt eine Login-Shell am lokalen System unter dem Pfad http://localhost:4200/ bereit.

shellinaboxd -s /:SSH

Stellt ein SSH-Login am lokalen System unter dem Pfad http://localhost:4200/ bereit. Das setzt voraus, das ein SSH-Server (zumindest am Loopback-Device) läuft.

shellinaboxd -s /Bezeichner/:SSH:host.example.com

Stellt einen SSH-Login für den entfernten Rechner host.example.com am lokalen System unter dem Pfad http://localhost:4200/Bezeichner/ bereit. Das setzt ein SSH-Server auf der entsprechenden Maschine laufen. Auf diese Weise erreichen Sie von außen unzugängliche Rechner.

shellinaboxd -s /systemstatus/:User:Gruppe:/:Programm

Startet unter http://localhost:4200/systemstatus/ ein Programm mit den Rechten des angegebenen Users und der Gruppe laufen. Als Arbeitsverzeichnis dient das Wurzelverzeichnis.

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.

Abbildung 3: Ein selbst signiertes Zertifikat im Webbrowser.

Abbildung 3: Ein selbst signiertes Zertifikat im Webbrowser.

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

  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, drunter Solaris, Irix und Tru64. Er zählt zu den Organisatoren der Grazer Linux-Tage.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben