Ich habe das bestimmt schon oft geschrieben, aber gerne nochmal... 
chroot für SSH-User nutzt schon dann nichts mehr, wenn der User eine PHP-Shell ausführt. Hierfür müsste dessen PHP-Instanz nämlich selber wiederum in einer chroot-Umgebung ausgeführt werden. Und das würde bedeuten, dass man nicht nur pro Vertrag mindestens einen FPM-Pool laufen lässt, sondern auch noch eine komplette PHP-Installation pflegt (in welcher Form auch immer: Symlinks, bind-mount, copy, ...).
Und das Ausbrechen aus einer chroot-Umgebung ist zwar nicht trivial, aber auch nicht unmöglich.
Viel wichtiger ist es daher, den Server insgesamt so sauber zu konfigurieren, dass ein User dort keine Informationen findet, mit denen er irgendwas anfangen kann.
LiveConfig konkret kümmert sich darum:
- erzeugte Konfigurationsdateien sind nur vom jeweiligen Dienst lesbar
- es gibt keine Datei und keine Verzeichnisse, aus denen die gehosteten Domains dieses Servers ausgelesen werden können
- Verzeichnisrechte der Verträge sind so gesetzt, dass ein Kunde niemals in Verzeichnisse anderer Kunden gelangen kann
Nach unserem Verständnis kann ein User maximal anhand der /etc/passwd herausfinden, welche Account-Namen auf dem Server vorhanden sind. Sofern die angemessen anonym sind ("web1", "web2", ...) ist das also auch wertlos.
Mit cgroups und bind-mounts gibt es interessantere/mächtigere Werkzeuge als chroot, um Informationen zusätzlich zu filtern. Sobald LiveConfig 3.0 fertig ist, werden wir in dem Bereich verstärkt etwas entwickeln.
Viele Grüße
-Klaus Keppler