5.10. Allgemeine chroot- und suid-Paranoia
chroot
ist eine der mchtigsten Mglichkeiten, einen Daemon oder einen Benutzer oder einen anderen Dienst zu beschrnken. Denken Sie einfach an ein Gefngnis um Ihr Ziel, welches das Ziel nicht verlassen kann (normalerweise, es gibt aber einige Bedingungen, die einem einen Ausbruch aus solch einem Gefngnis ermglichen). Wenn Sie einem Benutzer oder einem Dienst nicht trauen, knnen Sie eine modifizierte root-Umgebung fr ihn erzeugen. Dies kann einiges an Plattenplatz bentigen, da Sie alle bentigten Programme ebenso wie Bibliotheken in das Gefngnis kopieren mssen. Aber danach ist die Wirkung des Schadens, selbst wenn der Benutzer etwas bsartiges macht, auf das Gefngnis beschrnkt.
Viele Dienste, die als Daemonen laufen, knnen von dieser Vorgehensweise profitieren. Die Daemonen, die Sie mit Ihrer Debian-Distribution installieren, laufen jedoch nicht standardmig in einem chroot-Gefngnis.
Dies beinhaltet: Name-Server (wie
bind
), Web-Server (wie
apache
), Mail-Server (wie
sendmail
) und FTP-Server (wie
wu-ftpd
). Wahrscheinlich ist es nur fair zu sagen, dass die Komplexitt von BIND der Grund dafr ist, warum er in den letzten Jahren so oft fr Attacken verwundbar war (vergleiche
Abschnitt 5.7, „Absichern von BIND“).
Wenn Sie irgendwelche Dienste in Ihrem System laufen lassen, sollten Sie dies so sicher wie nur mglich tun. Dies beinhaltet: Entziehung von root-Privilegien, Starten in beschrnkten Umgebungen (wie ein chroot-Gefngnis) oder Ersetzen durch ein sichereres quivalent.
Seien Sie jedoch gewarnt, dass aus einem chroot
-Gefngnis ausgebrochen werden kann, wenn der Benutzer, der im Inneren luft, der Superuser ist. Sie mssen also sicherstellen, dass der Dienst als nicht privilegierter Benutzer luft. Durch Einschrnken seiner Umgebung schrnken Sie die welt-lesbaren/ausfhrbaren Dateien, auf die der Dienst zugreifen kann, ein. Auf diese Weise begrenzen Sie die Mglichkeiten einer Rechteerweiterung durch lokale Sicherheitsverwundbarkeiten des Systems. Selbst in dieser Situation knnen Sie nicht vllig sicher sein, dass es fr einen cleveren Angreifer keinen Weg gibt, irgendwie aus dem Gefngnis auszubrechen. Der ausschlieliche Einsatz sicherer Server-Programme, die einen guten Ruf bezglich Sicherheit haben, ist eine zustzliche gute Sicherheitsmanahme. Selbst kleinste Lcher wie offene Datei-Handle knnen von einem versierten Angreifer zum Einbruch in das System verwendet werden. Schlielich war chroot
nicht als Sicherheits-, sondern als ein Testwerkzeug gedacht.
5.10.1. Automatisches Erstellen von Chroot-Umgebungen
Es gibt verschiedene Programme, um Server und Dienste automatisch in ein Chroot-Gefngnis einzusperren. Debian bietet zurzeit (akzeptiert im Mai 2002) Wietse Venemas chrootuid
im Paket chrootuid, ebenso wie compartment und makejail an. Diese Programme knnen verwendet werden, um eine eingeschrnkte Umgebung zum Ausfhren beliebiger Programme aufzusetzen (chrootuid
erlaubt es Ihnen sogar, es unter einem eingeschrnkten Benutzer laufen zu lassen).
Einige dieser Werkzeuge knnen verwendet werden, um das Chroot-Gefngnis leicht aufzusetzen. Zum Beispiel kann das
makejail
-Programm ein chroot-Gefngnis mit kurzen Konfigurationsdateien erzeugen und aktualisieren. (Es bietet Beispielskonfigurationsdateien fr
bind
,
apache
,
postgresql
und
mysql
.) Es versucht alle Dateien, die vom Daemon bentigt werden, mittels
strace
,
stat
und Debians Paketabhngigkeiten zu bestimmen und in das Gefngnis zu installieren. Weitere Information gibt es unter
http://www.floc.net/makejail/.
Jailer
ist ein hnliches Werkzeug und kann von
http://www.balabit.hu/downloads/jailer/ heruntergeladen werden und ist auch als Debian-Paket verfgbar.