Jailkit: Rechte für SSH- und SFTP-Benutzer einschränken.
Eingesperrt
Benutzer
Falls noch nicht vorhanden, richten Sie nun die Benutzer ein, die sich im Jail anmelden dürfen. Im Beispielfall die Benutzer »max«
und »moritz«
. Die Benutzer müssen über ein Passwort verfügen:
useradd -m max useradd -m moritz passwd max passwd moritz
Bevor Sie die Benutzer hinter Gitter bringen, sei angemerkt, dass nicht nur die Anmeldung in den Jail verschoben wird, sondern ebenso das Home-Verzeichnis. Abschließend passt Jailkit noch die Rechte an, damit die Benutzer ihre Dateien auch bearbeiten dürfen.
jk_jailuser -m -j /srv/jail max jk_jailuser -m -j /srv/jail moritz
Der Befehl »jk_jailuser«
verschiebt wegen »-m«
die Home-Verzeichnisse, »-j«
zeigt wieder auf den Jail und zu guter letzt folgt der entsprechende Benutzer.
Ein Blick in die lokale Passwort-Datei »/etc/passwd«
zeigt die Änderungen, die Jailkit durchgeführt hat:
max:x:1016:1016::/srv/jail/./home/max:↩ /usr/sbin/jk_chrootsh moritz:x:1017:1017::/srv/jail/./home/moritz:↩ /usr/sbin/jk_chrootsh
Hier wird deutlich, daß die Benutzer direkt in die Chroot-Umgebung umgeleitet werden. In der Passwort-Datei innerhalb des Jails sieht das ganze dann wie folgt aus:
max:x:1003:1003::/home/max:/usr/sbin/jk_lsh moritz:x:1004:1004::/home/moritz:/usr/sbin/↩ jk_lsh
Damit sich der Benutzer »max«
auch in der Chroot-Umgebung via SSH anmelden kann, muss die Shell geändert werden, zum Beispiel »/bin/bash«
. Bei der standardmäßig gesetzten »jk_lsh«
handelt es sich um eine nicht interaktive Shell, welche lediglich zu Protokollzwecken und als Sprungbrett dient. Falls gewünscht, können Sie in der »/srv/jail/etc/jailkit/jk_lsh.ini«
entsprechend Nutzern oder Gruppen Freigaben einrichten. Soll zum Beispiel der »moritz«
den Jail nur als SFTP-Gateway benutzen dürfen, so würde die »jk_lsh.ini«
innerhalb des Jails wie folgt aussehen:
[moritz] paths= /usr/bin/ executables= /usr/bin/sftp
Nun kann der Nutzer »moritz«
lediglich über ein Terminal den Befehl »sftp«
starten:
ssh -t moritz@sftp-gateway.example.com ↩ sftp secure.example.com
Selbstverständlich landen alle Login-Versuche in der lokalen Log-Datei »auth.log«
, ebenfalls die Sprungbetter – »jk_lsh«
sei Dank.
Modifikationen, Updates und Prüfungen
Wie bereits erwähnt, können Sie prinzipiell alle Programme des lokalen Systems in die Jails installieren. Jailkit sieht hierfür »jk_init«
vor, das die Informationen der Programme (Pfade, Abhängigkeiten und so weiter) aus der Konfigurationsdatei »/etc/jailkit/jk_init.ini«
bezieht und entsprechend installiert. Selbstverständlich sind nicht alle Programme hinterlegt. Wenn Sie zum Beispiel einen SFTP-client im Jail zur Verfügung stellen wollen, müssen Sie die jk_init.ini entsprechend erweitern (siehe Kasten "Erweiterungen").
Erweiterungen
Um weitere Programme für unsere Jails zur Verfügung stellen zu können, müssen diese über die »/etc/jailkit/jk_init.ini«
bekannt gemacht werden. Hier ein Beispiel für einen SFTP-Client:
[sftp-client] comment = sftp-client paths = /usr/bin/sftp includesections = netbasics, uidbasics devices = /dev/urandom, /dev/null
Nun kann mittels »jk_init -j /srv/jail sftp-client«
das Programm jedem Jail hinzufügt werden.
Um Updates, die eventuell zwischenzeitlich auf dem Host-System eingespielt wurden, auch innerhalb des Jails anzuwenden, stellt Jailkit das Skript »jk_update«
zur Verfügung. Dieses prüft auf Neuerungen und spielt sie gegebenenfalls ein, sodass der Jail mit dem lokalen System auf dem gleichen Stand bleibt. Mittels »jk_check«
stößt der Administrator eine Prüfung aller angelegten Jails an. Alle Unstimmigkeiten werden gnadenlos protokolliert.
Auf der Internetseite des Programmierers stehen noch vielen weitere Anwendungsmöglichkeiten und -beispiele zur Verfügung. Jailkit stellt eine solide Struktur zur Absicherung unserer Systeme da – selbst Ede kann sich nur noch die Zähne ausbeißen.
Infos
- Jailkit: http://olivier.sessink.nl/jailkit