Manchmal müssen Sie möglicherweise einen Prozess von anderen Prozessen isolieren, die auf Ihrem System ausgeführt werden. Wir können dies mit dem chroot-Befehl unter Linux tun.
In diesem Tutorial zeigen wir Ihnen, was der Chroot-Befehl ist und wie Sie den Befehl verwenden können, um ein Chroot-Gefängnis zu erstellen und einen Benutzer oder eine Gruppe in einer isolierten Umgebung zu fangen.
Verstehen des Chroot-Befehls in Linux
Der Chroot-Befehl ist in Linux-Systemen unerlässlich. Es hilft Ihnen, das Stammverzeichnis für einen Prozess zusammen mit seinen untergeordneten Prozessen zu ändern. Wenn wir ein gefälschtes Root-Verzeichnis für einen Benutzer oder eine Gruppe erstellen, verliert es den Zugriff auf das wahre Root-Verzeichnis.
Daher ist der Benutzer oder die Gruppe jetzt vom Rest unseres Systems isoliert. Dies kann viele Verwendungen haben, wie z. B. die folgenden:
- Erstellen Sie eine Testumgebung für Softwareentwicklung und -tests.
- Initiieren Sie die Neuinstallation der Bootloader-Dateien auf Ihrem System
- Führen Sie möglicherweise veraltete Software aus
- Verbessern Sie die Sicherheit mit einem Ringfencing-Mechanismus
Der Chroot-Befehl erstellt im Wesentlichen eine virtuelle Umgebung. Seine Funktion ist ähnlich wie bei einer virtuellen Maschine, aber Sie müssen keine dedizierten Ressourcen für das Chroot-Gefängnis bereitstellen.
Die virtuelle Umgebung teilt den gesamten Kernel mit dem Hostsystem.
Syntax des Chroot-Befehls
Der Chroot-Befehl unter Linux hat die folgende Syntax.
chroot [-OPTION] [PATH FOR NEW ROOT] [PATH FOR SERVER]
Der einzige Parameter, der zum Ausführen eines Chroot-Befehls erforderlich ist, ist der Pfad für das neue Stammverzeichnis. Sie können jedoch die im Chroot-Befehl verfügbaren Optionen verwenden, um die gewünschten Ergebnisse zu erzielen.
Hier sind die Optionen, die Ihnen zur Verfügung stehen, wenn Sie den Chroot-Befehl unter Linux verwenden.
- –userspec=USER[:GROUP] – Wird verwendet, um den Benutzer oder die Gruppe zu definieren, auf die wir den Chroot-Befehl anwenden möchten. Wir können die Gruppe oder den Benutzer, die wir verwenden möchten, anhand des Namens oder der ID angeben
- –groups=G_List – Wird verwendet, um zusätzliche Gruppen anzugeben, die wir als G1, G2 … Gn verwenden möchten
- – Hilfe – Zeigt Ihnen einen Hilfebildschirm und beendet
- –Version – Zeigt die Versionsdaten an und beendet
Erstellen eines Chroot-Befehlsgefängnisses
Nachdem wir den Chroot-Befehl und seine Syntax verstanden haben, ist es an der Zeit, ihn zu verwenden. Um Ihnen zu zeigen, wie es geht, erstellen wir ein Chroot-Gefängnis.
Ein Chroot-Gefängnis ist eine virtuelle Umgebung, die erstellt wird, indem das Stammverzeichnis eines Benutzers oder einer Gruppe in ein neues Verzeichnis geändert wird. Dieses neue Verzeichnis dient als falsches Root-Verzeichnis für unser Chroot-Gefängnis.
Lassen Sie uns die Schritte durchgehen, die Sie ausführen müssen, um den Chroot-Befehl unter Linux zu verwenden, um ein Chroot-Gefängnis zu erstellen.
1. Erstellen Sie ein Verzeichnis
Zuerst werden wir mit dem Erstellen eines gefälschten Root-Verzeichnisses unter /home/chroot_jail mit dem Befehl mkdir beginnen.
mkdir $home/chroot_jail
Dadurch wird ein Verzeichnis an der angegebenen Adresse erstellt, das wir für unser Chroot-Gefängnis verwenden werden. Bevor wir den Chroot-Befehl jedoch seine Arbeit erledigen lassen, müssen wir die erforderlichen Dateien zu unserem neuen Verzeichnis hinzufügen.
2. Erforderliche Stammverzeichnisse hinzufügen
Wir beginnen mit der Erstellung von /bin, /lib und /lib64 in unserem Jail-Verzeichnis. Der Befehl zum Erstellen dieser Verzeichnisse ist unten angegeben.
mkdir -p $home/chroot_jail/{bin,lib,lib64}
Wie Sie sehen können, werden die Verzeichnisse, die wir in unserer virtuellen Umgebung erstellen, in geschweiften Klammern (‘{}’) angegeben.
Jetzt werden wir den cd-Befehl verwenden, um chroot_jail zu unserem neuen Root-Verzeichnis zu machen.
cd $home/chroot_jail
3. Verschieben Sie die zulässigen Befehlsbinärdateien
Wir erstellen für dieses Beispiel eine minimalistische Linux-Umgebung. Lassen Sie uns die Befehle bash, ls, rm und touch verwenden, um Teil der Funktionalität unserer virtuellen Umgebung zu sein.
Kopieren Sie die Binärdateien aus unserem Root-/bin-Verzeichnis in das /bin-Verzeichnis unseres chroot_jail. Dazu verwenden wir den Befehl cp mit dem Tag -v (verbose), damit wir sehen können, was gerade kopiert wird.
cp -v /bin/{bash,touch,ls,rm} $home/chroot_jail
Wie Sie sehen können, sind die Binärdateien, die wir kopieren möchten, in geschweiften Klammern aufgeführt. Die Dateien aus den angegebenen Binärdateien wurden nun in unser neues Chroot-Gefängnisverzeichnis kopiert.
4. Befehlsabhängigkeiten auflösen
Aber diese Binärdateien haben Abhängigkeiten. Die Abhängigkeiten für Bash finden Sie mit dem Befehl ldd.
ldd /bin/bash
Jetzt werden wir den Befehl cp verwenden, um die Verzeichnisse sorgfältig eines nach dem anderen in unser Chroot-Gefängnis zu kopieren. Wir sollten sicherstellen, dass alle Abhängigkeitsbibliotheken kopiert werden, sonst funktioniert unser Chroot-Gefängnis nicht richtig. Ersetzen Sie den Teil
cp -v {<List dependencies here>} $home/chroot_jail/lib64
Wir werden diese Schritte für alle Befehle wiederholen, die wir innerhalb des Chroot-Gefängnisses zulassen möchten. Suchen Sie die Abhängigkeitsbibliotheken und kopieren Sie sie in das Verzeichnis chroot_jail.
5. Wechseln zum neuen Root-Verzeichnis
Jetzt müssen wir nur noch das Root-Verzeichnis unseres Chroot-Gefängnisses in das neue gefälschte Verzeichnis ändern, das wir gerade erstellt haben.
Um das Verzeichnis zu ändern und anzugeben, dass bash als Anwendung ausgeführt werden soll, die wir als Shell für unsere virtualisierte Umgebung ausführen, verwenden wir den folgenden Befehl.
sudo chroot $home/chroot_jail/bin/bash
Möglicherweise werden Sie aufgefordert, Ihr Benutzerkennwort einzugeben, um fortzufahren. Geben Sie in diesem Fall Ihr Benutzerpasswort ein und der Befehl wird ausgeführt.
Wenn Sie alle Schritte korrekt befolgt haben, sollten Sie eine Ausgabe ähnlich der folgenden auf Ihrem Bildschirm erwarten.
Wie Sie im Screenshot sehen können, läuft jetzt die Bash-Version 4.4 als Shell für unser Chroot-Gefängnis.
Jetzt ist unsere minimalistische virtuelle Linux-Umgebung erstellt und einsatzbereit. Wir können mit der virtuellen Umgebung interagieren, indem wir Bash wie ein normales Linux-System verwenden.
Schlussfolgerung
Der Chroot-Befehl in Linux ist ein einfacher, aber effektiver Befehl im Toolset eines Linux-Benutzers. Seine Fähigkeit, eine virtualisierte Umgebung zu erstellen, ohne dass Überwachungssoftware erforderlich ist, wie wir es bei virtuellen Maschinen sehen, macht es zu einer leichten Alternative für diese Verwendung.
Dieses Tutorial soll Ihnen helfen zu verstehen, was Chroot ist, und Ihnen dann zeigen, wie Sie ein einfaches Chroot-Gefängnis bauen. Wenn Sie Fragen, Feedback oder Vorschläge haben, können Sie sich gerne in den Kommentaren unten an uns wenden.