Vertrag Shellzugang bash - Einsicht in gesamtes Dateisystem möglich

  • Hallo,


    Ich habe gerade eine Anforderung für ein Projekt, bei der gefordert ist, daß man dem Kunden / Vertrag einen Shellzugang ermöglicht.
    Das klappt auch ganz wunderbar, der webxxx-User kann sich via Shell (in dem Fall bash) anmelden.


    Was mir in dem Zusammenhang etwas aufstößt ist die Tatsache, daß der webxxx-User Zugriff (lesend) auf das gesamte Dateisystem des Servers erlangen kann. Dazu muss er einfach "cd /" eingeben...


    Das gefällt mir natürlich nicht ganz so...kann ich das irgendwie verhindern? Oder ist das ggf. ein Bug?


    System ist ein Ubuntu 20.04LTS mit Liveconfig 2.15.1, betrifft aber auch andere Ubuntu-Versionen mir anderen LC-Versionen...
    getestet via Linux-Shell sowie Windows-Putty


    Freundliche Grüße
    Micha

  • Ja, hab ich zufällig auch gerade gefunden...

    Danke.


    da es sich nur um einen Kunden handelt muss ich mal schauen, ob ich den Aufwand betreibe was zu unternehmen...

    Immerhin könnte der eine Kunde sämtliche anderen Webspaces durchschnufteln und untersuchen und kopieren etc...


    Die gehen ihn aber nichts an...

  • Hi!


    Das Stichwort ist hier "chroot" - damit wird dann jedem User ein eigenes Enviroment mit einzelnen Befehlen, etc. "vorgespielt". Ist auch nicht 100% sicher, aber funktioniert i.d.R. super, so dass "Scriptkiddies" nicht andere Verzeichnisse auslesen können.


    Viele Grüße

  • Hallo,


    mit chroot habe ich gestern noch einige Stunden rumgespielt. Prinzipiell funktioniert das auch.
    Allerdings muss ich hier Herrn Keppler recht geben. Durch den Chroot hat der Shell-User auch auf sämtliche Bibliotheken, Programme etc die ausserhalb des chroot-Verzeichnisses liegen keinen Zugriff und der ganze Schneuf muss mit allen Abhängigkeiten und ggf. Konfigurationen in den chroot "kopiert" werden...


    Zum einen gestaltet sich es recht schwierig tatsächlich "alles " zu erwischen zum anderen gibt es speziell in den Lib-Ordnern teilweise Symbolische Links, die absolut definiert sind, was das ganze nochmal verkompliziert...


    Für einfachste Befehle mag das alles noch funktionieren, aber ich sehe bei der Anforderung PHP-Cli, Composer, Pear, ggf. mc oder andere zu "installierende" Tools den Aufwand nicht wirklich gerechtfertigt... und das ganze System da reinzukippen macht auch keinen Sinn...

    :(


    Viele Grüße
    Micha

    • Offizieller Beitrag

    Ich habe das bestimmt schon oft geschrieben, aber gerne nochmal... :)

    chroot für SSH-User nutzt schon dann nichts mehr, wenn der User eine PHP-Shell ausführt. Hierfür müsste dessen PHP-Instanz nämlich selber wiederum in einer chroot-Umgebung ausgeführt werden. Und das würde bedeuten, dass man nicht nur pro Vertrag mindestens einen FPM-Pool laufen lässt, sondern auch noch eine komplette PHP-Installation pflegt (in welcher Form auch immer: Symlinks, bind-mount, copy, ...).

    Und das Ausbrechen aus einer chroot-Umgebung ist zwar nicht trivial, aber auch nicht unmöglich.


    Viel wichtiger ist es daher, den Server insgesamt so sauber zu konfigurieren, dass ein User dort keine Informationen findet, mit denen er irgendwas anfangen kann.

    LiveConfig konkret kümmert sich darum:

    • erzeugte Konfigurationsdateien sind nur vom jeweiligen Dienst lesbar
    • es gibt keine Datei und keine Verzeichnisse, aus denen die gehosteten Domains dieses Servers ausgelesen werden können
    • Verzeichnisrechte der Verträge sind so gesetzt, dass ein Kunde niemals in Verzeichnisse anderer Kunden gelangen kann

    Nach unserem Verständnis kann ein User maximal anhand der /etc/passwd herausfinden, welche Account-Namen auf dem Server vorhanden sind. Sofern die angemessen anonym sind ("web1", "web2", ...) ist das also auch wertlos.


    Mit cgroups und bind-mounts gibt es interessantere/mächtigere Werkzeuge als chroot, um Informationen zusätzlich zu filtern. Sobald LiveConfig 3.0 fertig ist, werden wir in dem Bereich verstärkt etwas entwickeln.


    Viele Grüße


    -Klaus Keppler

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!