Was nützt eine verschlüsselte Datenübertragung per SSH, wenn der Benutzer nur ein schwaches Zugangspasswort gewählt hat? Ohne weitere Absicherung wird ein Server so trotz Secure Shell leicht das Ziel von Brute-Force-Attacken. Nicht nur der Zugriff von außen ist gefährlich. Zwar können viele Dienste können über Proxys internen Nutzern zur Verfügung gestellt und deshalb die direkte Verbindung am entsprechenden Port gesperrt werden. Aber es gibt immer noch Ausnahmen, für die keine Proxy-Lösung existiert: SFTP, direkte Konsolenzugriffe (»ssh
«
, »telnet
«
) und so weiter. Die Lösung dafür lautet meistens NAT, das den direkten Zugriff der Nutzer auf die große weite Internet-Welt ermöglicht. Mehr Kontrolle bringt ein Gateway, das Zugriffe nur in einer Chroot-Umgebung zulässt.
Die Einrichtung einer Chroot-Umgebung für Serverdienste oder Zugriffe ist mit reichlich Aufwand verbunden. Hier hilft Jailkit, ein Open-Source-Projekt von Olivier Sessink, das eine intelligente Verknüpfung von Skripten zur Erstellung und für den Betrieb von Chroot-Umgebungen an die Hand gibt.
Für die Testumgebung kommt die aktuelle Version 2.7 zum Einsatz, die unter [1] zum Download bereit steht. Da Jailkit zum großen Teil in C und Python programmiert ist, benötigt es lediglich Libc, Libpthreads und Python – welche auf nahezu jedem Linuxsystem vorhanden sind – sowie einen C-Compiler. Entsprechend einfach gestaltet sich die Installation nach dem Entpacken des Tar-Files:
./configure make make install
Die im Paket enthaltene Datei »INSTALL.txt
«
gibt uns noch nützliche Informationen, wie wir Jailkit als Daemon betreiben können (siehe Kasten "Daemon").
Daemon
Die Init-Skripte sind im Paket enthalten. Sie müssen nur noch den richtigen Ort kopieren und die Rechte setzen:
cp extra/jailkit /etc/init.d/jailkit # Kopieren des init-Skriptes chmod a+x /etc/init.d/jailkit # Korrektur der Rechte update-rc.d jailkit defaults # Installation der init-Skripte # (unter Debian/Ubuntu)
Nach erfolgreicher Installation legen Sie nun den ersten Knast an. Jailkit ist modular aufgebaut, das heißt neben dem reinem Jail können Sie beliebige Programme hinzufügen – eine genauere Erklärung finden Sie im Artikel weiter unten. Dies ermöglicht es auch zu einem späteren Zeitpunkt weitere Programme zur Verfügung zu stellen, ohne daß ein neuer Jail erzeugt werden muss.
Um einen Jail einzurichten, verwenden Sie »jk_init
«
mit folgenden Parametern:
jk_init -v -j /srv/jail jk_lsh basicshell
Der Befehl »jk_init
«
erfährt über den Parameter »-j
«
den Standort des Jails, die Option »-v
«
lässt Jailkit alles anzeigen, was es so treibt. Anschließend folgen die Programme, welche innerhalb des Jails zur Verfügung stehen sollen. Das Programm »jk_lsh
«
stellt die zentrale Shell des Jails dar – ohne es ist kein Login auf dem Jail möglich. Hinter »basicshell
«
verbirgt sich eine abgespeckte Bash-Shell mit den nötigsten Programmen (»cd
«
, »mv
«
, »cp
«
, »pwd
«
und so weiter).
Falls das Verzeichnis nicht existiert, legt Jailkit es an. Anschließend erstellen Sie ein Temp-Verzeichnis für den Jail.
mkdir /srv/jail/tmp chmod a+rwx /srv/jail/tmp
Denken Sie daran: Ohne »jk_lsh
«
und einem Tmp-Verzeichnis im Chroot ist kein Login möglich!