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 weder sehen noch darauf zugreifen.
Beispielsweise können Sie ein Programm ausführen und sein Stammverzeichnis als /home/oracle/jail angeben. In diesem Fall ist das Stammverzeichnis des Programms eigentlich /home/oracle/jail. Das Programm würde keine Dateien oberhalb dieses Verzeichnisses in der Hierarchie erkennen oder darauf zugreifen können. Dieses künstliche Root-Verzeichnis wird als Chroot-Gefängnis bezeichnet. Sein Zweck besteht darin, den Verzeichniszugriff eines potenziellen Angreifers einzuschränken. Das Chroot-Gefängnis sperrt einen bestimmten 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.
DNS- und FTP-Dienste in einem Chroot-Gefängnis ausführen
Zwei Dienste werden eingerichtet, um Chroot-Jails zu nutzen. Sie können DNS so einrichten, dass Named in einem Gefängnis läuft. Der vsftpd-FTP-Server kann automatisch Chroot-Jails für Clients starten.
DNS im Chroot-Gefängnis
Das bind-chroot-Paket ermöglicht es Ihnen, named so einzurichten, dass es in einem Chroot-Gefängnis läuft. Wenn Sie dieses Paket installieren, wird die Datei /var/named/chroot Verzeichnis erstellt und wird zum Chroot-Gefängnisverzeichnis für alle BIND-Dateien.
- Das Verzeichnis /var/named wird zu /var/named/chroot/var/named.
- /etc/named*-Dateien werden zu /var/named/chroot/etc/named*-Dateien.
Durch die Installation dieses Pakets wird auch die Shell-Variable ROOTDIR in der Datei /etc/sysconfig/named auf /var/named/chroot gesetzt. Der Vorteil, named in einem Chroot-Gefängnis auszuführen, besteht darin, dass, wenn ein Hacker über einen BIND-Exploit in Ihr System eindringt, der Zugriff des Hackers auf den Rest Ihres Systems auf die Dateien im Chroot-Gefängnisverzeichnis beschränkt ist.
FTP-Clients im Chroot-Gefängnis
Standardmäßig werden anonyme Benutzer in einem Chroot-Gefängnis platziert. Wenn sich ein anonymer Benutzer bei einem vsftpd-Server anmeldet, ist das Home-Verzeichnis des Benutzers /var/ftp. Der Benutzer sieht jedoch nur /.
Beispiel:Ein Verzeichnis mit dem Namen /var/ftp/upload wird einem anonymen Benutzer als /upload angezeigt. Dies verhindert, dass anonyme Benutzer auf Dateien oberhalb von /var/ftp in der Verzeichnishierarchie zugreifen können.
Lokale Benutzer, die auf einen vsftpd-Server zugreifen, werden in ihrem Home-Verzeichnis platziert. Sie können Optionen in der Datei /etc/vsftpd/vsftpd.conf aktivieren, um lokale Benutzer in ein Chroot-Gefängnis zu stecken, wo das künstliche Stammverzeichnis das Home-Verzeichnis des Benutzers ist. Die folgenden Optionen existieren in der vsftpd-Konfigurationsdatei, um ein Chroot-Gefängnis für lokale Benutzer zu implementieren:
- chroot_list_enable
- chroot_local_user
- chroot_list_file
Wenn sich ein lokaler Benutzer beim vsftpd-Server anmeldet, wird die Direktive chroot_list_enable überprüft. Wenn diese Direktive auf YES gesetzt ist, prüft der Dienst die /etc/vsftpd/chroot_list Datei (standardmäßig) oder eine andere Datei, die von chroot_list_file angegeben wird Richtlinie.
Dann wird eine andere Direktive überprüft, chroot_local_user . Wenn diese Direktive auf YES gesetzt ist, dann wird die chroot_list wird zu einer Liste von Benutzern, die NICHT chrooten sollen. Wenn diese Direktive auf NO gesetzt ist, wird der Benutzer in ein Chroot-Gefängnis in seinem Home-Verzeichnis gesteckt.