6. September 2017

shellinabox – SSH über den Browser

Öffnen einer Shell-Session (SSH) um auf einen Server in der Ferne zuzugreifen und das von überall dort wo ein Browser zur Verfügung steht? Mit shellinabox ist das kein Problem. Bei der Installation und Konfiguration sind aber besonders bezüglich der Sicherheit einige Dinge zu beachten. In diesem Beitrag beschreibe ich die Installation auf einer Debian basierten Linux Distribution.

Installation

Auf Debian, Ubuntu & Co. lässt sich shellinabox sehr einfach installieren, und zwar mit dem Kommando:

sudo apt-get install shellinabox

Im Normalfall läuft der Dienst nun bereits schon und zwar mit einem selbstsignierten Zertifikat unter dem Port 4200. Also sollte der Zugriff über https://SERVERNAME:4200 funktionieren.

Konfiguration

Wenn shellinabox hinter einem Reverse Proxy auf dem gleichen Server betrieben soll, kann man htttps auch deaktivieren. Dies und sonstige Einstellungen lassen sich in folgender Datei konfigurieren:

/etc/default/shellinabox

HTTPS lässt sich über die zusätzliche Option “–disable-ssl” deaktivieren.

SSH Mit NGINX als Reverse Proxy

Der Zugriff über einen Reverse Proxy lässt sich in NGINX wie folgt konfigurieren:

server {
...
 location /shellinabox/ {
 rewrite ^/shellinabox/(.*) /$1 break;
 proxy_pass http://127.0.0.1:4200;
 proxy_read_timeout 90;
 }
...
}

Zu Beachten

Generell sollte nur eine über HTTPS verschlüsselte Verbindung mit Shellinabox gearbeitet werden. Zusätzliche Sicherheitsmaßnahmen können die Absicherung des Webservers, z.B. über ein Passwort sein oder aber eine Absicherung z.B. über OTP Keys auf dem Zielsystem.

Das Key Management über OTP werde ich in einem anderen Beitrag beschreiben, da die Einrichtung etwas aufwändig ist.

NGINX – Bereich mit Passwort absichern

Ein Passwort für NGINX lässt sich relativ simpel in drei Schritten anlegen.

Zuerst legen wir eine neue Datei an, die später unser verschlüsseltes Passwort enthalten soll:

sudo sh -c "echo -n 'BENUTZERNAME:' >> /etc/nginx/.htpasswd"

Das verschlüsselte Passwort ergänzen wir mit folgenden Kommando:

sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

Abschließend müssen wir die Datei noch in die Konfiguration von NGINX integrieren:

server {
...

location / {
 ...
 auth_basic "Restricted Content";
 auth_basic_user_file /etc/nginx/.htpasswd;
 }
}
Titel

shellinabox – SSH über den Browser

Veröffentlicht am

6. September 2017

Teilen
facebook twitter xing linkedin email whatsapp
Kategorien / Tags
Linux