GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Chroot Jail verstehen

Wie der Name schon sagt, ändert eine Chroot-Operation das scheinbare Root-Verzeichnis für einen laufenden Prozess und seine Kinder. Es erlaubt Ihnen, ein Programm (Prozess) mit einem anderen Root-Verzeichnis als / auszuführen. Das Programm kann Dateien außerhalb des angegebenen Verzeichnisbaums nicht sehen oder darauf zugreifen.

Beispielsweise können Sie ein Programm ausführen und sein Stammverzeichnis als /home/user/jail angeben. In diesem Fall ist das Stammverzeichnis des Programms eigentlich /home/user/jail. Das Programm würde keine Dateien oberhalb dieses Verzeichnisses in der Hierarchie erkennen oder darauf zugreifen können.

Dieses künstliche Stammverzeichnis wird als Chroot-Gefängnis bezeichnet . Sein Zweck besteht darin, den Verzeichniszugriff eines potenziellen Angreifers einzuschränken. Das Chroot-Gefängnis sperrt einen gegebenen Prozess und jede Benutzer-ID, die er verwendet, so dass der Benutzer nur das Verzeichnis sieht, in dem der Prozess läuft. Für den Prozess scheint es, dass er im Stammverzeichnis läuft.

Ein Chroot-Gefängnis soll nicht:
– vorsätzlicher Manipulation durch privilegierte (Root-)Benutzer schützen.
– verwendet werden, um den Low-Level-Zugriff auf Systemgeräte durch privilegierte Benutzer zu blockieren. Ein Chroot-Root-Benutzer kann immer noch Geräteknoten erstellen und die Dateisysteme darauf mounten.

Damit ein Chroot-Prozess erfolgreich gestartet werden kann, muss das Chroot-Verzeichnis mit allen erforderlichen Programmdateien, Konfigurationsdateien, Geräteknoten und gemeinsam genutzten Bibliotheken an ihren erwarteten Speicherorten gefüllt werden.

Chroot-Dienstprogramm verwenden

1. Um ein Chroot-Gefängnis zu verwenden, verwenden Sie den folgenden Befehl (new_root muss ein vorhandenes Verzeichnis sein):

# chroot new_root [command]

2. Das Verzeichnis new_root wird zum künstlichen Root-Verzeichnis. chroot wechselt zu new_root und führt den optionalen Befehl aus. Ohne einen Befehl als Argument anzugeben, wechselt chroot zu new_root und führt den Wert der Umgebungsvariable SHELL oder /bin/sh aus, wenn SHELL nicht gesetzt ist.

3. Angenommen, SHELL ist beispielsweise auf /bin/bash eingestellt und das Verzeichnis /home/user/jail existiert, führt die Ausführung des Chroot-Befehls zu folgendem Ergebnis:

# chroot /home/user/jail
chroot: failed to run command ‘/bin/bash’: No such file or directory

4. Das Verzeichnis /home/user/jail nimmt den Namen / an. chroot kann /bin/bash in diesem Chroot-Gefängnis nicht finden und gibt die Fehlermeldung zurück. Um ein Chroot-Gefängnis zu implementieren, erstellen Sie die neue Root-Verzeichnisstruktur und kopieren Sie alle notwendigen Dateien in dieses neue Root-Verzeichnis, bevor Sie den Chroot-Befehl ausführen.

Chroot Jail konfigurieren

1. Um ein Chroot-Gefängnis zu implementieren und /bin/bash auszuführen, erstellen Sie das Verzeichnis bin im künstlichen Stammverzeichnis (in diesem Beispiel /home/oracle/jail) und kopieren Sie /bin/bash in dieses Verzeichnis:

$ mkdir /home/oracle/jail/bin
$ cp /bin/bash /home/oracle/jail/bin

2. Der Befehl /bin/bash ist dynamisch mit gemeinsam genutzten Bibliotheken verknüpft. Diese Bibliotheken müssen auch in das Chroot-Gefängnis kopiert werden. Verwenden Sie den Befehl ldd, um festzustellen, welche Bibliotheken für den Befehl /bin/bash erforderlich sind:

# ldd /bin/bash
	linux-vdso.so.1 =>  (0x00007fff11bff000)
	libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003728800000)
	libdl.so.2 => /lib64/libdl.so.2 (0x0000003d56400000)
	libc.so.6 => /lib64/libc.so.6 (0x0000003d56800000)
	/lib64/ld-linux-x86-64.so.2 (0x0000003d56000000)

3. Kopieren Sie jede dieser Dateien in ein lib64-Verzeichnis im künstlichen Stammverzeichnis. Erstellen Sie das Verzeichnis lib64 und kopieren Sie die gemeinsam genutzten Bibliotheken in dieses Verzeichnis:

$ mkdir /home/oracle/jail/lib64
$ cp /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/oracle/jail/lib64

4. Nachdem sich nun alle erforderlichen Dateien an ihren erwarteten Orten befinden, führt die Ausführung des Chroot-Befehls (als root) zu folgendem Ergebnis:

# chroot /home/oracle/jail

5. Der Befehl war dieses Mal erfolgreich und das Programm /bin/bash wurde ausgeführt. Die Eingabe von pwd zum Drucken des aktuellen Verzeichnisses zeigt / an, obwohl das eigentliche Verzeichnis /home/oracle/jail:

ist
# pwd
/

Der Befehl pwd wird ausgeführt, da es sich um einen in die Shell integrierten Befehl handelt. Das Ausführen eines anderen Befehls schlägt fehl, da bash den Befehl nicht finden kann. Der Prozess geht davon aus, dass er sich im Stammverzeichnis befindet und keine Sichtbarkeit oder Kenntnis von Dateien oberhalb dieses Verzeichnisses in der Hierarchie hat. Beispielsweise schlägt die Ausführung des Befehls ls fehl:

# ls
bash: ls: command not found

6. Verwenden Sie den Befehl exit, um das Chroot-Gefängnis zu verlassen.

# exit
exit
#
CentOS / RHEL :Chroot Jail SFTP einrichten
CentOS / RHEL :Chroot Jail für vsftp für alle Benutzer einrichten
CentOS / RHEL :Chroot Jail für vsftp nur für bestimmte Benutzer einrichten
CentOS / RHEL :So richten Sie SFTP zu Chroot Jail nur für bestimmte Gruppen ein


Cent OS
  1. Chroot „Gefängnis“ – Was ist das und wie benutzt man es?

  2. Chroot Jail verstehen

  3. Verstehen der Linux-SCSI-Reservierung

  4. CentOS / RHEL :So legen Sie das Chroot-Gefängnis für vsftp nur für bestimmte Benutzer fest

  5. CentOS / RHEL :So legen Sie das Chroot-Gefängnis für vsftp für alle Benutzer fest

Was ist ein Chroot-Gefängnis und wie wird es verwendet?

So installieren Sie Go unter CentOS 7

Du-Befehl unter Linux

mv-Befehl unter Linux

Boolesche Werte von SELinux verstehen

Chroot SFTP - Es ist möglich, dem Benutzer zu erlauben, in das aktuelle (Chroot-) Verzeichnis zu schreiben