Chroot


Chroot

chroot steht für „change root“ und ist eine Funktion auf Unix-Systemen um das Rootverzeichnis zu ändern. Sie wirkt sich nur auf den aktuellen Prozess und seine Kindprozesse aus. „chroot“ selbst kann sich auf den Systemaufruf chroot(2) als auch das Dienstprogramm chroot(8) beziehen.

Ein Programm, das auf ein Verzeichnis re-rooted wurde, kann nicht mehr auf Dateien außerhalb dieses Verzeichnisses zugreifen. Chrooting bietet somit eine einfache Möglichkeit, nicht vertrauenswürdige, Test- oder sonstwie gefährliche Programme in eine Sandbox zu versetzen. Es ist auch ein einfacher Jail-Mechanismus.

In der Praxis wird Chrooting dadurch erschwert, dass Programme beim Start erwarten, Platz für temporäre Dateien, Konfigurationsdateien, Gerätedateien und shared Libraries an bestimmten festen Orten zu finden. Um Programme also innerhalb des chroot-Verzeichnisses laufen lassen zu können, muss das Verzeichnis mit diesen notwendigen Dateien ausgestattet werden. Dabei ist vorsichtig vorzugehen, damit über sie nicht versehentlich Zugriff auf das restliche System ermöglicht wird.

Inhaltsverzeichnis

Sicherheitsfeature oder nicht?

Ob chroot-Umgebungen ein Sicherheitsfeature sind, um einzelne Programme gegenüber dem Gesamtrechner abzuschotten, hängt stark von der Ansicht des Betriebssystems ab:

  • Solaris vertritt die Ansicht, dass chroot kein Sicherheitsfeature ist und es deshalb kein Problem darstellt, wenn sich ein Programm aus dieser Umgebung „befreien“ kann. Das Ausbrechen ist sogar explizit dokumentiert. [1] Um Prozesse gegeneinander abzuschotten, gibt es seit Solaris 10 das Konzept der Zonen.
  • Unter Linux wird chroot nicht als Sicherheitsfeature angesehen, und ein Weg für den root-Benutzer eine chroot-Umgebung zu verlassen ist sogar in der chroot(2)-Manpage dokumentiert.
  • viele BSD-Systeme versuchen dagegen, einen Prozess, der einmal in einer chroot-Umgebung ist, nicht wieder herauszulassen. Unter NetBSD ist es sehr schwierig, vielleicht sogar unmöglich. [2] FreeBSD bietet das Konzept der Jails, um Prozesse voneinander abzuschotten.

Einsatz

Rechtetrennung 
Ein chroot kann als Vorsorgemaßnahme gegen einen Sicherheitsbruch eingesetzt werden, indem es einen potentiellen Angreifer daran hindert, mit einem kompromittierten Programm Schaden anzurichten oder das System zu sondieren. Beispielsweise kann ein Dateiserver im Netzwerk das Verzeichnis, aus dem er einen Client bedient, direkt nach der Verbindungsaufnahme chrooten. Einen ähnlichen Ansatz verfolgt der Mail Transfer Agent Postfix, der seine Aufgabe auf mehrere kleine, hintereinandergeschaltete Programme aufteilt, die jedes für sich in eigenen Chroots laufen. Ein guter Einsatz ist chroot auch für FTP Server, damit FTP User nicht aus ihrem "home" Directory in ein anderes Verzeichnis wechseln können.
Honeypot 
Ein chroot-Verzeichnis kann so bestückt werden, dass ein echtes System mit Netzwerkdiensten simuliert wird. Der chroot-Mechanismus kann dann dieses System kompromittierende Angreifer daran hindern, zu erkennen, dass sie sich in einer künstlichen Umgebung befinden, oder in das echte System auszubrechen.
Testen 
Die durch den chroot-Mechanismus erreichte Isolation ist auch zu Testzwecken nützlich. In ein solches Verzeichnis kann eine eigene Kopie des Betriebssystems installiert werden und als Testumgebung für Software dienen, deren Einsatz in einem Produktivsystem zu riskant wäre.
Reparatur 
Um ein Linux/Unix System mit Hilfe einer Boot-CD wie Knoppix zu reparieren, kann chroot genutzt werden um auf dem eingemounteten System zu arbeiten. So kann beispielsweise ein vergessenes root Passwort wiederhergestellt werden.

Nachteile

Nur der Benutzer root kann chroot ausführen. Dies soll normale Benutzer davon abhalten, ein setuid-Programm innerhalb einer speziell angefertigten Chroot-Jail zu platzieren (z. B mit einer falschen /etc/passwd), welche es dazu bringen würde, Rechte zu vergeben. Es hindert jedoch auch Nicht-Root-Benutzer an der Verwendung des chroot-Mechanismus um eine eigene Sandbox zu erstellen.

Der chroot-Mechanismus selbst ist nicht gänzlich sicher. Wenn ein Programm in einer chroot-Umgebung Rootrechte besitzt, kann es (unter Linux oder Solaris) eine verschachtelte chroot-Umgebung verwenden, um aus der ersten auszubrechen.[3]

Da die meisten Unix-Systeme nicht komplett dateisystemorientiert sind, bleiben potentiell gefährliche Funktionalitäten wie die Kontrolle über Netzwerk- und Prozesse durch Systemaufrufe einem gechrooteten Programm verfügbar.

Der chroot-Mechanismus selbst verhängt auch keine Einschränkungen über Ressourcen wie I/O-Bandbreite, Plattenplatz oder CPU-Zeit.

Weblinks

Einzelnachweise

  1. Solaris 10 manpage chroot(2), letzter Absatz vor "RETURN VALUES".
  2. http://wiki.netbsd.se/How_to_break_out_of_a_chroot_environment
  3. http://www.bpfh.net/simes/computing/chroot-break.html

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Chroot — операция изменения корневого каталога в Unix подобных операционных системах. Программа, запущенная с изменённым корневым каталогом, будет иметь доступ только к файлам, содержащимся в данном каталоге. Поэтому, если нужно обеспечить программе… …   Википедия

  • chroot — операция изменения корневого каталога в Unix подобных операционных системах. Программа, запущенная с изменённым корневым каталогом, будет иметь доступ только к файлам, содержащимся в данном каталоге. Поэтому, если нужно обеспечить программе… …   Википедия

  • chroot — steht für „change root“ und ist eine Funktion auf Unix Systemen, um das Rootverzeichnis zu ändern. Sie wirkt sich nur auf den aktuellen Prozess und seine Kindprozesse aus. „chroot“ selbst kann sich sowohl auf den Systemaufruf chroot(2) als auch… …   Deutsch Wikipedia

  • CHROOT — steht für „change root“ und ist eine Funktion auf Unix Systemen um das Rootverzeichnis zu ändern. Sie wirkt sich nur auf den aktuellen Prozess und seine Kindprozesse aus. „chroot“ selbst kann sich auf den Systemaufruf chroot(2) als auch das… …   Deutsch Wikipedia

  • Chroot — Saltar a navegación, búsqueda Chroot en un sistema operativo Unix es una operación que cambia el directorio raíz, afectando solamente al proceso actual y a sus procesos hijos. chroot se refiere a la llamada de sistema chroot(2) o al programa… …   Wikipedia Español

  • chroot — en los sistemas operativos derivados de Unix, es una operación que invoca un proceso, cambiando para este y sus hijos el directorio raíz del sistema. chroot puede referirse a la llamada de sistema chroot(2) o al programa ejecutable chroot(8).… …   Wikipedia Español

  • Chroot — est une commande des systèmes d exploitation UNIX permettant de changer le répertoire racine d un processus de la machine hôte. Sommaire 1 Objectif 2 Outil GNU 3 Voir aussi …   Wikipédia en Français

  • chroot — (change root) est une commande des systèmes d exploitation UNIX permettant de changer le répertoire racine d un processus de la machine hôte. Sommaire 1 Objectif 2 Outil GNU 3 Voir aussi …   Wikipédia en Français

  • chroot — A chroot on Unix operating systems is an operation that changes the apparent root directory for the current running process and its children. A program that is run in such a modified environment cannot name (and therefore normally not access)… …   Wikipedia

  • Chroot — A chroot on Unix operating systems is an operation that changes the apparent disk root directory for the current running process and its children. A program that is re rooted to another directory cannot access or name files outside that directory …   Wikipedia