Möchte man anderen Benutzern Zugriff auf seinen Server geben, ist es durchaus sinnvoll, diese über einen sogenannten chroot auf einen bestimmten Bereich einzuschränken. Dies dient der Sicherheit des Servers, da sie ansonsten viele Konfigurationsdateien anschauen könnten und so genau wüssten, wo es noch ein Schlupfloch gäbe, sollte eines vorhanden sein.
Über einen chroot dagegen sind diese Benutzer auf ein bestimmtes Verzeichnis beschränkt und können sich nur dort mehr oder weniger frei bewegen. Das hängt auch von der jeweiligen Konfiguration des chroots ab.
Jailkit ist ein Programm, welches unter Debian einen chroot auf relativ einfache Weise zulässt.
Vorbereitung
Zuerst einmal muss ein Benutzer angelegt werden:adduser test
Dann muss das Verzeichnis angegeben werden, unter welchem der „Jail“ eingerichtet werden soll, z. B.:mkdir /var/jail
Installation von Jailkit
Zuerst einmal muss man Jailkit herunterladen. Da es leider nicht über einen Paketserver möglich ist, muss das manuell von der Hersteller-Webseite geschehen:
olivier.sessink.nl/jailkit/
Danach muss es natürlich entpackt werden und man muss in das erstellte Verzeichnis wechseln, was zusammen folgendermaßen aussehen kann:
wget https://olivier.sessink.nl/jailkit/jailkit-2.23.tar.gz
tar xf jailkit-2.23.tar.gz
cd jailkit-2.23
Code-Sprache: JavaScript (javascript)
Nun geht es an’s installieren. Hierfür lohnt es sich, checkinstall
zu nutzen, damit man das Paket später wieder normal über die Paketverwaltung entfernen kann:
./configure
make
checkinstall
Code-Sprache: Bash (bash)
Konfiguration von Jailkit
Nun geht es an die Konfiguration. Hierzu muss man praktisch die grundlegenden Programme in das Jail-Verzeichnis kopieren:
jk_init -v /var/jail basicshell
jk_init -v /var/jail editors
jk_init -v /var/jail extendedshell
jk_init -v /var/jail netutils
jk_init -v /var/jail ssh
jk_init -v /var/jail sftp
jk_init -v /var/jail jk_lsh
Code-Sprache: JavaScript (javascript)
Dann kann man dem im Voraus erstellten Benutzer diesen chroot zuweisen:jk_jailuser -m -j /var/jail test
Hierbei sollte auch das originale Home-Verzeichnis des Benutzers erfolgreich kopiert worden sein. Falls dem nicht der Fall ist, muss man das noch manuell nachholen:mv /home/test /var/jail/home/
In der Datei /etc/passwd
sollte nun die Zeile für den Benutzer „test“ folgendermaßen aussehen:test:x:1001:1001::/var/jail/./home/test:/usr/sbin/jk_chrootsh
Nun sollte sich der Benutzer auch schon anmelden und die chrooted-Shell nutzen können. Eventuelle Berechtigungsprobleme werden in der Datei /var/log/auth.log
festgehalten.
Es kann durchaus sein, dass der Benutzer zwar grundsätzlich eine Verbindung öffnen kann, allerdings keine Konsole sieht. Dann muss man die Datei /var/jail/etc/passwd
anpassen.
Hierbei muss dann die Zeile test:x:1001:1001::/home/test:/bin/jk_lsh
in test:x:1001:1001::/home/test:/bin/bash
geändert werden.