Zum Inhalt springen

Shellinabox/Sicherheit: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „–“ durch „-“
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Sicherheit ==
'''Shellinabox/Sicherheit'''
Shellinabox ermöglicht es Benutzern, sich mit Benutzernamen und Passwort anzumelden und gewährt Zugriff auf eine Anmelde-Shell, ähnlich wie [[SSH]]
 
== Beschreibung ==
* Shellinabox ermöglicht es Benutzern, sich mit Benutzernamen und Passwort anzumelden und gewährt Zugriff auf eine Anmelde-Shell, ähnlich wie [[SSH]]
* Während Shellinabox für Systemadministratoren sehr praktisch ist, kann es für Hacker einen einfachen Einstiegspunkt bieten, wenn es nicht ordnungsgemäß gesichert ist
* Während Shellinabox für Systemadministratoren sehr praktisch ist, kann es für Hacker einen einfachen Einstiegspunkt bieten, wenn es nicht ordnungsgemäß gesichert ist


=== Privilegientrennung ===
; Privilegientrennung
'''shellinaboxd''' verwendet Techniken zur Privilegientrennung, um Privilegien frühzeitig zu löschen
'''shellinaboxd''' verwendet Techniken zur Privilegientrennung, um Privilegien frühzeitig zu löschen


Zeile 22: Zeile 24:
; Erhöhung der Shellinabox-Sicherheit
; Erhöhung der Shellinabox-Sicherheit
Es gibt mehrere Möglichkeiten, Ihre Shellinabox-Installation zu sichern
Es gibt mehrere Möglichkeiten, Ihre Shellinabox-Installation zu sichern
* Im Folgenden werden fünf einfache Maßnahmen beschrieben, mit denen Sie die „Shellinabox-Sicherheit“ erhöhen können
* Im Folgenden werden fünf einfache Maßnahmen beschrieben, mit denen Sie die "Shellinabox-Sicherheit" erhöhen können
* Bevor wir beginnen, sollten Sie wissen, wie Shellinabox und Apache gestartet, gestoppt und neu gestartet werden
* Bevor wir beginnen, sollten Sie wissen, wie Shellinabox und Apache gestartet, gestoppt und neu gestartet werden


Zeile 31: Zeile 33:
== Port ändern ==
== Port ändern ==
Shellinabox lauscht standardmäßig auf Port 4200
Shellinabox lauscht standardmäßig auf Port 4200
* Sie können Shellinabox über <tt>http://localhost:4200</tt> aufrufen
* Sie können Shellinabox über <tt>https://localhost:4200</tt> aufrufen
* Das Problem ist, dass auch Hacker dies wissen
* Das Problem ist, dass auch Hacker dies wissen
* Wenn sie also Ihre IP-Adresse kennen, können sie auf Ihre Shellinabox zugreifen, indem sie <tt>http://XXX.XXX.XXX.XXX:4200</tt> aufrufen, wobei XXX.XXX.XXX.XXX für Ihre IP-Adresse steht
* Wenn sie also Ihre IP-Adresse kennen, können sie auf Ihre Shellinabox zugreifen, indem sie <tt>https://XXX.XXX.XXX.XXX:4200</tt> aufrufen, wobei XXX.XXX.XXX.XXX für Ihre IP-Adresse steht
* Wenn Sie den Standard-Überwachungsport in einen zufälligen Port ändern, ist es für Hacker schwieriger, auf Ihre Shellinabox zuzugreifen
* Wenn Sie den Standard-Überwachungsport in einen zufälligen Port ändern, ist es für Hacker schwieriger, auf Ihre Shellinabox zuzugreifen


Zeile 39: Zeile 41:
  sudo editor /etc/default/shellinabox
  sudo editor /etc/default/shellinabox


Suchen Sie nach den folgenden Zeilen und ändern Sie die Portnummer von der Standardnummer 4200 in einen anderen zufälligen Port (z.&nbsp;B.&nbsp;6125)
Suchen Sie nach den folgenden Zeilen und ändern Sie die Portnummer von der Standardnummer 4200 in einen anderen zufälligen Port (beispielsweise 6125)
  # TCP port that shellinboxd's webserver listens on
  # TCP port that shellinboxd's webserver listens on
  SHELLINABOX_PORT=6125
  SHELLINABOX_PORT=6125
Zeile 45: Zeile 47:
Speichern und beenden
Speichern und beenden
* Starten Sie Shellinabox wie oben beschrieben neu
* Starten Sie Shellinabox wie oben beschrieben neu
* Ihre Shellinabox sollte nun unter <tt>http://localhost:6125</tt> verfügbar sein
* Ihre Shellinabox sollte nun unter <tt>https://localhost:6125</tt> verfügbar sein
* Wenn Sie [https://www.smarthomebeginner.com/setup-port-forwarding-on-router/ Portweiterleitung einrichten] auf Ihrem Router/DHCP-Server haben, können Sie auf Ihre Shellinabox über <tt>http://XXX.XXX.XXX.XXX:6125</tt> zugreifen, wobei XXX.XXX.XXX.XXX Ihre externe IP-Adresse ist
* Wenn Sie [https://www.smarthomebeginner.com/setup-port-forwarding-on-router/ Portweiterleitung einrichten] auf Ihrem Router/DHCP-Server haben, können Sie auf Ihre Shellinabox über <tt>https://XXX.XXX.XXX.XXX:6125</tt> zugreifen, wobei XXX.XXX.XXX.XXX Ihre externe IP-Adresse ist
* Wenn Sie einen Domainnamen eingerichtet haben, der auf Ihre IP-Adresse verweist, können Sie Ihre Shellinabox über <tt>http://domain.com:6125</tt> erreichen
* Wenn Sie einen Domainnamen eingerichtet haben, der auf Ihre IP-Adresse verweist, können Sie Ihre Shellinabox über <tt>https://domain.com:6125</tt> erreichen


== SSL aktivieren ==
== SSL aktivieren ==
Zeile 60: Zeile 62:
* Sie sollten nun nur noch über <tt>https://localhost:6125</tt> darauf zugreifen können
* Sie sollten nun nur noch über <tt>https://localhost:6125</tt> darauf zugreifen können
* Beachten Sie, dass Sie möglicherweise ein SSL-Zertifikat generieren lassen müssen
* Beachten Sie, dass Sie möglicherweise ein SSL-Zertifikat generieren lassen müssen
* Wenn Sie Ihr eigenes Zertifikat generieren möchten, finden Sie weitere Informationen unter [http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html Apache-Dokumentation]
* Wenn Sie Ihr eigenes Zertifikat generieren möchten, finden Sie weitere Informationen unter [https://httpd.apache.org/docs/2.2/ssl/ssl_faq.html Apache-Dokumentation]


Standardmäßig installiert das System selbstsignierte Zertifikate
Standardmäßig installiert das System selbstsignierte Zertifikate
* Diese Zertifikate lösen wahrscheinlich Warnungen aus, wenn Sie Ihren Browser auf die Website richten
* Diese Zertifikate lösen wahrscheinlich Warnungen aus, wenn Sie Ihren Browser auf die Website richten
; Empfohlene Leitfäden Secure Shell/SSH
* [https://www.amazon.com/SSH-Mastery-OpenSSH-PuTTY-Tunnels/dp/1642350028/?tag=shbeg-20 SSH-Beherrschung: OpenSSH, PuTTY, Tunnels und Schlüssel]
* [https://www.amazon.com/SSH-Secure-Shell-Definitive-Guide/dp/0596008953/?tag=shbeg-20 SSH, The Secure Shell: The Definitive Guide]
* [https://www.amazon.com/dp/1593279523/?tag=shbeg-20 The Linux Command Line, 2nd Edition]


== Auf Localhost beschränken ==
== Auf Localhost beschränken ==
Zeile 100: Zeile 97:
* Fügen Sie bei Bedarf vorhandene Zeilen hinzu und bearbeiten Sie sie
* Fügen Sie bei Bedarf vorhandene Zeilen hinzu und bearbeiten Sie sie


<syntaxhighlight lang="apache" line>
<syntaxhighlight lang="apache" line copy>
ProxyRequests off
ProxyRequests off
<Proxy *>
<Proxy *>
Zeile 108: Zeile 105:


<Location /shell>
<Location /shell>
  ProxyPass
  ProxyPass https://localhost:6125/
http://localhost:6125/
  order allow, deny
  order allow, deny
  Allow from all
  Allow from all
Zeile 117: Zeile 113:
</syntaxhighlight>
</syntaxhighlight>


Speichern und beenden
Starten Sie Shellinabox und Apache neu
* Starten Sie Shellinabox und Apache neu
* Nun können Sie über <tt>https://localhost/shell</tt> oder <tt>https://XXX.XXX.XXX.XXX/shell</tt> auf Ihre Shellinabox zugreifen (über das Internet unter Verwendung Ihrer IP-Adresse - erfordert [https://www.smarthomebeginner.com/setup-port-forwarding-on-router/ Portweiterleitung])
* Nun können Sie über <tt>https://localhost/shell</tt> oder <tt>https://XXX.XXX.XXX.XXX/shell</tt> auf Ihre Shellinabox zugreifen (über das Internet unter Verwendung Ihrer IP-Adresse erfordert [https://www.smarthomebeginner.com/setup-port-forwarding-on-router/ Portweiterleitung])
* Die letzte Zeile im obigen Code ermöglicht Ihnen den Zugriff auf Shellinabox über <tt>https://domain.com/shell</tt>
* Die letzte Zeile im obigen Code ermöglicht Ihnen den Zugriff auf Shellinabox über <tt>https://domain.com/shell</tt>
* Ignorieren Sie sie, wenn Sie keinen Domainnamen haben, der auf Ihre IP-Adresse verweist
* Ignorieren Sie sie, wenn Sie keinen Domainnamen haben, der auf Ihre IP-Adresse verweist


Dadurch wird die Sicherheit von Shellinabox erhöht, da der Shellinabox-Port nicht nach außen offengelegt wird
Dadurch wird die Sicherheit von Shellinabox erhöht, da der Shellinabox-Port nicht nach außen offengelegt wird
; Empfohlene Leitfäden Sichere Shell/SSH
* [https://www.amazon.com/SSH-Mastery-OpenSSH-PuTTY-Tunnels/dp/1642350028/?tag=shbeg-20 SSH-Beherrschung: OpenSSH, PuTTY, Tunnels und Schlüssel]
* [https://www.amazon.com/SSH-Secure-Shell-Definitive-Guide/dp/0596008953/?tag=shbeg-20 SSH, The Secure Shell: The Definitive Guide]
* [https://www.amazon.com/dp/1593279523/?tag=shbeg-20 The Linux Command Line, 2nd Edition]


== Apache-Authentifizierung ==
== Apache-Authentifizierung ==
Zeile 137: Zeile 127:


Dazu müssen Sie zunächst eine <tt>.htpasswd</tt>-Datei erstellen
Dazu müssen Sie zunächst eine <tt>.htpasswd</tt>-Datei erstellen
* Weitere Informationen finden Sie in der [http://httpd.apache.org/docs/2.2/programs/htpasswd.html Apache-Dokumentation]
* Weitere Informationen finden Sie in der [https://httpd.apache.org/docs/2.2/programs/htpasswd.html Apache-Dokumentation]
* Am einfachsten ist es jedoch, einen der online verfügbaren htpasswd-Generatoren zu verwenden
* Am einfachsten ist es jedoch, einen der online verfügbaren htpasswd-Generatoren zu verwenden


Zeile 144: Zeile 134:
* Kopieren Sie anschließend den Inhalt des <tt>.htaccess</tt>-Codeblocks und fügen Sie ihn wie unten dargestellt zu <tt>/etc/apache2/mods-available/proxy.conf</tt> hinzu
* Kopieren Sie anschließend den Inhalt des <tt>.htaccess</tt>-Codeblocks und fügen Sie ihn wie unten dargestellt zu <tt>/etc/apache2/mods-available/proxy.conf</tt> hinzu


<syntaxhighlight lang="apache" line>
<syntaxhighlight lang="apache" line copy>
<Location /shell>
<Location /shell>
  ProxyPass http://localhost:6125/
  ProxyPass https://localhost:6125/
  order allow, deny  
  order allow, deny  
  Allow from all
  Allow from all

Aktuelle Version vom 11. Mai 2025, 20:53 Uhr

Shellinabox/Sicherheit

Beschreibung

  • Shellinabox ermöglicht es Benutzern, sich mit Benutzernamen und Passwort anzumelden und gewährt Zugriff auf eine Anmelde-Shell, ähnlich wie SSH
  • Während Shellinabox für Systemadministratoren sehr praktisch ist, kann es für Hacker einen einfachen Einstiegspunkt bieten, wenn es nicht ordnungsgemäß gesichert ist
Privilegientrennung

shellinaboxd verwendet Techniken zur Privilegientrennung, um Privilegien frühzeitig zu löschen

setuid-Flag

Er erkennt setuid-Flags und schränkt einige Vorgänge ein, wenn er als setuid-Anwendung gestartet wird

  • Trotz dieser Sicherheitsfunktionen könnte ein Fehler dazu führen, dass ein entschlossener Angreifer erweiterte Berechtigungen erhält
Warung
Es wird daher dringend davon abgeraten, das setuid-Flag für die Binärdatei zu setzen!
Init

Die erwartete Bereitstellung erfolgt über ein System-rc-Skript, das von /sbin/init gestartet wird

Zusätzliche Sicherheit

Für zusätzliche Sicherheit sollten die Optionen --group und --user verwendet werden, um zu einem dedizierten Benutzer zu wechseln

Maßnahmen

Erhöhung der Shellinabox-Sicherheit

Es gibt mehrere Möglichkeiten, Ihre Shellinabox-Installation zu sichern

  • Im Folgenden werden fünf einfache Maßnahmen beschrieben, mit denen Sie die "Shellinabox-Sicherheit" erhöhen können
  • Bevor wir beginnen, sollten Sie wissen, wie Shellinabox und Apache gestartet, gestoppt und neu gestartet werden

Verwenden Sie die folgenden Befehle, um Shellinabox und Apache neu zu starten

sudo service shellinabox reload
sudo service apache2 reload

Port ändern

Shellinabox lauscht standardmäßig auf Port 4200

  • Sie können Shellinabox über https://localhost:4200 aufrufen
  • Das Problem ist, dass auch Hacker dies wissen
  • Wenn sie also Ihre IP-Adresse kennen, können sie auf Ihre Shellinabox zugreifen, indem sie https://XXX.XXX.XXX.XXX:4200 aufrufen, wobei XXX.XXX.XXX.XXX für Ihre IP-Adresse steht
  • Wenn Sie den Standard-Überwachungsport in einen zufälligen Port ändern, ist es für Hacker schwieriger, auf Ihre Shellinabox zuzugreifen

Um dies unter Linux/Ubuntu zu tun, müssen Sie /etc/default/shellinabox bearbeiten

sudo editor /etc/default/shellinabox

Suchen Sie nach den folgenden Zeilen und ändern Sie die Portnummer von der Standardnummer 4200 in einen anderen zufälligen Port (beispielsweise 6125)

# TCP port that shellinboxd's webserver listens on
SHELLINABOX_PORT=6125

Speichern und beenden

SSL aktivieren

Beim Zugriff auf die Shellinabox über http werden alle Informationen als unverschlüsselte Daten gesendet

  • Dies kann gefährlich sein, wenn Sie über das Internet auf Ihre Shellinabox zugreifen
  • Die Lösung besteht darin, die Daten während der Übertragung zu verschlüsseln, wodurch das Ausspähen durch Hacker erschwert wird

Um den HTTPS-Zugriff auf Linux-Servern mit Apache zu aktivieren und durchzusetzen, installieren Sie die folgenden Laufzeitbibliotheken

sudo apt install libssl0.9.8 libpam0g openssl

Starten Sie Ihre Shellinabox und den Apache-Server neu

  • Sie sollten nun nur noch über https://localhost:6125 darauf zugreifen können
  • Beachten Sie, dass Sie möglicherweise ein SSL-Zertifikat generieren lassen müssen
  • Wenn Sie Ihr eigenes Zertifikat generieren möchten, finden Sie weitere Informationen unter Apache-Dokumentation

Standardmäßig installiert das System selbstsignierte Zertifikate

  • Diese Zertifikate lösen wahrscheinlich Warnungen aus, wenn Sie Ihren Browser auf die Website richten

Auf Localhost beschränken

Sie können den Zugriff auf Shellinabox auf Localhost beschränken

  • Mit anderen Worten: Sie können nur von dem System aus auf Shellinabox zugreifen, auf dem es ausgeführt wird

Um dies unter Linux/Ubuntu zu tun, müssen Sie /etc/default/shellinabox wie unten gezeigt bearbeiten

sudo editor /etc/default/shellinabox

Suchen Sie die folgende Zeile und fügen Sie --localhost-only am Ende hinzu (wie unten dargestellt)

SHELLINABOX_ARGS="--no-beep --localhost-only"

Speichern Sie die Zeile und starten Sie Shellinabox neu

  • Dadurch kann zwar die Sicherheit von Shellinabox erhöht werden, allerdings wird der Zugriff auf Ihre Shellinabox von anderen Systemen und der Fernzugriff über das Internet verhindert
  • Dies kann sehr lästig sein
  • Sie können diesen Nachteil beheben, indem Sie den Apache-Reverse-Proxy einrichten, wie in Schritt 4 beschrieben

Apache-Reverse-Proxy

Um die Sicherheit Ihrer Shellinabox noch weiter zu erhöhen, können Sie einen Apache Reverse Proxy einrichten

Dazu müssen Sie zunächst mod_proxy auf Apache aktivieren

sudo a2enmod proxy
Enabling module proxy.
To activate the new configuration, you need to run:
  systemctl restart apache2

Erstellen Sie dann eine Sicherungskopie von /etc/apache2/mods-available/proxy.conf

sudo cp -a /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-available/proxy.conf.backup

Bearbeiten Sie als Nächstes /etc/apache2/mods-available/proxy.conf und stellen Sie sicher, dass sie wie unten dargestellt aussieht

  • Fügen Sie bei Bedarf vorhandene Zeilen hinzu und bearbeiten Sie sie



ProxyRequests off
<Proxy *>
 AddDefaultCharset off order Allow, Deny
 Allow from all
</Proxy>

<Location /shell>
 ProxyPass https://localhost:6125/
 order allow, deny
 Allow from all
</Location>

Redirect permanent /shell https://domain.com/shell

Starten Sie Shellinabox und Apache neu

Dadurch wird die Sicherheit von Shellinabox erhöht, da der Shellinabox-Port nicht nach außen offengelegt wird

Apache-Authentifizierung

Zu guter Letzt aktivieren Sie die Authentifizierung

  • Jedes Mal, wenn Sie auf Shellinabox zugreifen, werden Sie nach einem Benutzernamen und einem Passwort gefragt, wie in der folgenden Abbildung dargestellt
Apache-Authentifizierung

Dazu müssen Sie zunächst eine .htpasswd-Datei erstellen

  • Weitere Informationen finden Sie in der Apache-Dokumentation
  • Am einfachsten ist es jedoch, einen der online verfügbaren htpasswd-Generatoren zu verwenden

Nach Eingabe von Benutzername und Passwort werden zwei Codeblöcke generiert

  • Kopieren Sie den Inhalt des .htpasswd-Codeblocks und speichern Sie ihn unter /etc/apache2/.htpasswd_siab
  • Kopieren Sie anschließend den Inhalt des .htaccess-Codeblocks und fügen Sie ihn wie unten dargestellt zu /etc/apache2/mods-available/proxy.conf hinzu
<Location /shell>
 ProxyPass https://localhost:6125/
 order allow, deny 
 Allow from all
 AuthUserFile /etc/apache2/.htpasswd_siab
 AuthName "My Protected Area" 
 AuthType Basic
 require valid-user
</Location>
Redirect permanent /shell https://domain.com/shell

Speichern und beenden

  • Starten Sie Shellinabox und Apache neu
  • Sie sollten jedes Mal, wenn Sie versuchen, auf Shellinabox zuzugreifen, zur Eingabe eines Kennworts aufgefordert werden

Nachdem Sie alle Konfigurationen/Bearbeitungen abgeschlossen haben, führen Sie den folgenden Befehl aus, um sicherzustellen, dass Ihre neuen Shellinabox-Standardwerte aktualisiert werden

sudo update-rc.d shellinabox defaults

Starten Sie Apache und Shellinabox neu