Pinguin-Gehege im Eigenbau

Oft wird vom Einsatz von Chroot-Umgebungen abgesehen, da ihre Einrichtung kompliziert ist. Jailkit schafft Abhilfe.

Artikel erschienen in Swiss IT Magazine 2006/05

     

FreeBSD verfügt schon seit Jahren mit Jails über eine eingebaute Virtualisierung, die es erlaubt, Anwender und Daemons voneinander und vom Host-System abzuschotten. Dies erhöht vor allem die Sicherheit, da ein mögliches Leck auf ein Jail beschränkt ist und weder das Host-System noch die anderen Anwender und Daemons beeinträchtigt. Linux bringt kein entsprechendes System von Haus aus mit, allerdings existiert neben diversen Third-Party-Tools mit Chroot eine Art von Sandboxing, das zwar nur ein Subset der Funktionalität der FreeBSD Jails zur Verfügung stellt, aber doch sehr nützlich sein kann.


Effektvoll

Chroot ist im Vergleich zu den FreeBSD Jails ziemlich primitiv. Es funktioniert so, dass es für den jeweiligen Prozess das Root Directory in einen Teilbaum des Dateisystems verschiebt. Damit wird der Prozess vom Rest des Dateisystems abgeschnitten, und der Prozess kann so auch nicht auf die dort hinterlegten Ressourcen wie Daten oder Programme zugreifen. Läuft ein verwundbarer Serverprozess in so einem Chroot-Gefängnis, kann zwar weiterhin eingebrochen werden, allerdings kommt der Angreifer nicht über das virtuelle Root Directory hinaus und kann somit auch nur verhältnismässig wenig Schaden anrichten. Das gleiche gilt für Anwender mit Shell-Access.


Komplizierte Einrichtung

Somit wären Chroots eigentlich perfekt für das durchschnittliche Sicherheitsbedürfnis – wäre da nicht die komplizierte Einrichtung. Denn Applikationen, die eingesperrt werden sollen, müssen nicht nur selber in das Chroot-Gefängnis verschoben werden, sondern auch sämtliche Ressourcen, auf die sie zugreifen (u.a. Shared Libraries, Logging Sockets, Konfigurationsdateien, weitere Programme). Diese ganzen Informationen herauszufinden, kann von Hand ziemlich lange dauern. Abhilfe schafft hier Jailkit (olivier.sessink.nl/jailkit/).





Jailkit ist ein Toolkit, das diverse Scripts beinhaltet, die halbautomatisch Chroot-Umgebungen nach den Wünschen des Administrators einrichten. Sie stellen selbständig fest, welche Libraries, Logging-Sockets usw. benötigt werden, erzeugen die passende Verzeichnisstruktur, kopieren die Daten dort hinein und passen auch etliche Konfigurationsdateien an.
Zudem bringt Jailkit diverse Helferlein mit wie einen speziellen Logging-Daemon, der für die eingesperrten Anwender und Prozesse Syslog ersetzt, ein Maintenance-Script, das die Jails auf verdächtige Inhalte und Modifikationen prüft, oder eine limitierte Login-Shell, welche alleinigen SFTP/SCP-Zugang zur Verfügung stellt. Unterstützt wird man dabei von einer ausführlichen Dokumentation und einfach nachzuvollziehenden Howtos, welche die wichtigsten Schritte zur Einrichtung von Chroot-Shells oder nacktem SFTP/SCP-Zugang detailgenau aufzeigen.






Doch ganz ohne Stolpersteine geht es auch bei Jailkit nicht. So passiert es immer wieder mal, dass den beiden Programmen jk_init und jk_cp zur Einrichtung und Wartung der Chroots die eine oder andere benötigte Ressource durch die Lappen geht, beispielsweise /usr/bin/groups, das auf Debian Sarge nur ein simples Shell-Script ist und deshalb Jailkit auch nicht ohne weiteres verrät, dass es noch von /usr/bin/id abhängt. Bei Accounts mit Shell-Access lassen sich derartige Fehler meist recht schnell finden, indem man die Logs von jk_socketd und die Fehlermeldungen der betroffenen Programme auf der Shell auswertet. Kommt man damit nicht mehr weiter, helfen entweder ldd, das die Bibliotheken listet, von denen ein Programm abhängt, oder strace, das sämtliche Ressourcen anzeigt, auf die ein Programm während seiner Tätigkeit zugreift.


Keine absolute Sicherheit

Auch wenn Chroot-Umgebungen insbesondere bei Anwendern mit Shell-Access deutlich mehr Sicherheit bringen, ist doch etwas Vorsicht angesagt. Denn Chroot-Umgebungen können beispielsweise mittels missbrauchter Hardlinks oder Sockets aufgebrochen werden. Auch kann Chroot keine Ressourcen wie I/O oder CPU-Zeit beschränken. So empfiehlt es sich nicht nur, bei der Einrichtung eines Chroot-Gefängnisses sehr sorgfältig vorzugehen, sondern auch Hardening-Patches wie grsecurity, welche diverse Chroot-Angriffe unterbinden, und prinzipiell keine Software zu installieren oder Anwender auf die Maschine zu lassen, denen man nicht vertraut.


scponly

Wer nur Chroot-Shells für SCP und SFTP benötigt, verfügt mit scponly (www.sublimation.org/scponly/) über eine kompakte Alternative zu Jailkit, die wir bereits in InfoWeek 14/2004 vorgestellt haben. Das Tool bringt wie Jailkit eine limitierte Login-Shell sowie Einrichtungsscripts mit, die ähnlich wie bei Jailkit einen Benutzer-Account samt sämtlichen benötigten Ressourcen anlegen. Zusätzliche Funktionalität wie ein Logging-Daemon fehlt dagegen.




Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Wieviele Fliegen erledigte das tapfere Schneiderlein auf einen Streich?
GOLD SPONSOREN
SPONSOREN & PARTNER