Einführung
Der Begriff Chroot-Gefängnis stammt aus dem Jahr 1992 und wird heute häufig verwendet. Aber was bedeutet dieser Begriff und wofür wird diese Operation verwendet?
In diesem Tutorial behandeln wir die Grundlagen der Verwendung von Chroot-Jails und zeigen Ihnen, wie Sie eines einrichten können.
Voraussetzungen
- Ein System, auf dem ein Linux- oder Unix-Betriebssystem ausgeführt wird
- Ein Benutzerkonto mit sudo-Berechtigungen
- Zugriff auf Terminal/Befehlszeile
Was ist ein Chroot-Gefängnis?
Eine Chroot (kurz für root ändern ) ist eine Unix-Operation, die das scheinbare Stammverzeichnis in das vom Benutzer angegebene ändert.
Jeder Prozess, den Sie nach einer Chroot-Operation ausführen, hat nur Zugriff auf das neu definierte Stammverzeichnis und seine Unterverzeichnisse. Diese Operation wird umgangssprachlich als Chroot-Gefängnis bezeichnet da diese Prozesse außerhalb des neuen Stammverzeichnisses weder lesen noch schreiben können.
Wofür wird das Chroot-Gefängnis verwendet?
Chroot-Gefängnis wird verwendet, um eine begrenzte Sandbox zu erstellen, in der ein Prozess ausgeführt werden kann. Dies bedeutet, dass ein Prozess Daten außerhalb des vorgeschriebenen Verzeichnisbaums nicht böswillig ändern kann.
Eine weitere Verwendung für Chroot-Jails ist der Ersatz für virtuelle Maschinen. Diese Methode wird als Kernel-Level-Virtualisierung bezeichnet und benötigt weniger Ressourcen als virtuelle Maschinen. Dieser Vorgang ermöglicht es Benutzern, mehrere isolierte Instanzen auf demselben System zu erstellen.
Wie man das Chroot-Gefängnis benutzt
Dieses Beispiel führt Sie durch das Erstellen und Einrichten eines Chroot-Jails, damit es bash
ausführen kann und ls
Befehle.
Befolgen Sie diese Schritte:
1. Erstellen Sie ein neues Verzeichnis namens chroot_jail :
mkdir chroot_jail
Wenn wir versuchen chroot
zu machen in das neue Verzeichnis erhalten wir folgende Ausgabe:
Sie müssen bash
aktivieren Befehl, bevor Sie chroot
können in das neue Verzeichnis. Dazu müssen die Befehlsdatei und alle zugehörigen Bibliotheken in das neue Stammverzeichnis kopiert werden.
2. Erstellen Sie einen neuen Unterverzeichnisbaum in chroot_jail :
mkdir -p chroot_jail/bin chroot_jail/lib64/x86_64-linux-gnu chroot_jail/lib/x86_64-linux-gnu
Diese Unterverzeichnisse speichern alle notwendigen Elemente der bash
und ls
Befehle.
3. Verwenden des cp
Befehl mit dem which
Befehl lässt bash
kopieren und ls
Befehle, ohne den Pfad anzugeben, von dem Sie kopieren.
Verwenden Sie dazu:
cp $(which ls) chroot_jail/bin/
cp $(which bash) chroot_jail/bin/
4. Für bash
und ls
Um im neuen Root-Ordner zu arbeiten, fügen Sie alle zugehörigen Bibliotheken zu chroot_jail/libraries hinzu . Verwenden Sie den ldd
Befehl, um herauszufinden, welche Bibliotheken welchem Befehl zugeordnet sind:
ldd $(which bash)
ldd $(which ls)
5. Kopieren Sie die entsprechenden Bibliotheken in das chroot_jail Unterverzeichnisse lib und lib64 .
Für die bash
Befehl:
cp /lib/x86_64-linux-gnu/libtinfo.so.6 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libdl.so.2 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libc.so.6 chroot_jail/lib/x86_64-linux-gnu/
cp /lib64/ld-linux-x86-64.so.2 chroot_jail/lib64/
Für ls
Befehl:
cp /lib/x86_64-linux-gnu/libselinux.so.1 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libc.so.6 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libpcre2-8.so.0 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libdl.so.2 chroot_jail/lib/x86_64-linux-gnu/
cp /lib64/ld-linux-x86-64.so.2 chroot_jail/lib64/
cp /lib/x86_64-linux-gnu/libpthread.so.0 chroot_jail/lib/x86_64-linux-gnu/
6. Verwenden Sie die chroot
Befehl, um das Root-Verzeichnis in chroot_jail zu ändern Verzeichnis:
sudo chroot chroot_jail
Verwenden Sie das ls
Befehl, um alle Dateien und Verzeichnisse im neuen Stammverzeichnisbaum aufzulisten:
ls -R
7. Wenn Sie mit der Verwendung des neuen Stammordners fertig sind, verlassen Sie die Shell:
exit