Ich habe viel über das Chroot-Gefängnis unter Linux gehört/gelesen, aber noch nie benutzt (ich benutze Fedora täglich), also was ist ein Chroot-Gefängnis? Wann und warum kann ich es verwenden/nicht verwenden und gibt es noch etwas, das ich wissen sollte? Wie würde ich vorgehen, um eine zu erstellen?
Akzeptierte Antwort:
Ein Chroot-Gefängnis ist eine Möglichkeit, einen Prozess und seine untergeordneten Prozesse vom Rest des Systems zu isolieren. Es sollte nur für Prozesse verwendet werden, die nicht als Root ausgeführt werden, da Root-Benutzer sehr leicht aus dem Gefängnis ausbrechen können.
Die Idee ist, dass Sie einen Verzeichnisbaum erstellen, in den Sie alle Systemdateien kopieren oder einbinden, die für die Ausführung eines Prozesses erforderlich sind. Sie verwenden dann chroot()
Systemaufruf, um das Root-Verzeichnis so zu ändern, dass es sich an der Basis dieses neuen Baums befindet, und den Prozess zu starten, der in dieser Chroot-Umgebung ausgeführt wird. Da es nicht wirklich auf Pfade außerhalb des modifizierten Stammverzeichnisses verweisen kann, kann es an diesen Orten keine böswilligen Operationen (Lesen/Schreiben usw.) ausführen.
Unter Linux ist die Verwendung von Bind-Mounts eine großartige Möglichkeit, den Chroot-Baum zu füllen. Damit können Sie Ordner wie /lib
einziehen und /usr/lib
während /usr
nicht hineingezogen wird , zum Beispiel. Binden Sie einfach die gewünschten Verzeichnisbäume an Verzeichnisse, die Sie im Jail-Verzeichnis erstellen.