Webserver und Jails, wie umsetzen?

Rund um die Sicherheit des Systems und die Applikationen
Post Reply
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Webserver und Jails, wie umsetzen?

Post by Joe User »

Moin,

folgende Situation:

Die User sind ge'jail'ed (/chroot/users/$user) und der Webserver befindet sich ausserhalb der Jails (/usr/sbin/$httpd). Innerhalb der Jails existiert jeweils eine minimalistische Umgebung (Shell und Editor) und die User besitzen innerhalb ihres jeweiligen Jails normale Userreechte.

Nun sollen die User die Möglichkeit bekommen, in ihrem [/chroot/users/$user]/home/$user/htdocs nicht nur, wie bisher, statische Webseiten zu hinterlegen, sondern auch CGI-Scripte (Perl und PHP) inklusive Datenbankzugriff via Socket. Da die User nicht als ausreichend vertrauenswürdig einzustufen sind, stellt sich natürlich die Frage nach einer möglichst sicheren Umsetzung der gewünschten Konfiguration. Hierzu gibt es aktuell zwei Überlegungen:

1) Die Jails werden jeweils um eigene Webserver, Perl und PHP-CGI erweitert und via mod_proxy angebunden.
2) Der Webserver (ausserhalb der Jails) greift wie bisher direkt auf die Webseiten in den Jails zu.

Um den Verwaltungsaufwand (Setup, Updates) möglichst gering zu halten würden wir die zweite Lösung natürlich gerne vorziehen, sind uns aber über die potentiellen Sicherheitsrisiken des Setups nicht einig. Während meine Kollegen glauben, dass ein Angreifer nur innerhalb des jeweiligen Jails agieren könnte, sehe ich das komplette System gefährdet und würde daher die aufwendigere erste Lösung bevorzugen.


Welche potentiellen Sicherheitsrisiken seht Ihr bei den jeweiligen Lösungen und wie würdet Ihr diese minimieren?

Gruss,
Joe User
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: Webserver und Jails, wie umsetzen?

Post by captaincrunch »

Gegenfrage: reden wir von "echten " Jails oder chroot()?
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: Webserver und Jails, wie umsetzen?

Post by Joe User »

PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: Webserver und Jails, wie umsetzen?

Post by dodolin »

Welche potentiellen Sicherheitsrisiken seht Ihr bei den jeweiligen Lösungen und wie würdet Ihr diese minimieren?
Bei Variante 2 ist natürlich alles (insbesondere die Jails) nur so sicher, wie der verwendete Webserver. Bei Variante 1 würden auch die Webserver nur mit Userrechten laufen können und daher im Jail eingesperrt sein - insofern sehe ich das als so sicher an, wie die Jails selbst eben sind.
aldee
Posts: 93
Joined: 2002-10-03 16:45
 

Re: Webserver und Jails, wie umsetzen?

Post by aldee »

Ich würde aus Geiz nicht jedem Benutzer einen eigenen Apache spendieren, sondern Apache und SuExec so patchen respektive konfigurieren, dass Folgendes geht:

Alle Benutzer sowie der Apache sind im selben chroot eingesperrt (evtl. nicht nur zum Testen wäre die Einrichtung eines quasi-autonomen OS im chroot nicht abwegig, unter Debian etwa per debootstrap). Benutzer-Verzeichnisrechte sind passend gesetzt, bspw. 1705, wenn alle Benutzer derselben Gruppe angehören.

Der Apache lädt seine Vhost-Konfiguration bei einer großen Anzahl zu verwaltender Domains eleganterweise aus einem dbm-File, siehe dazu etwa http://httpd.apache.org/docs/1.3/vhosts/mass.html (mit entsprechender Abwandlung für dbm). Sofern mod_vhost_alias das nicht kann, auf mod_rewrite ausweichen und u. a. sicherstellen, dass etwa trotz bei PHP aktiviertem --enable-force-redirect keine Unwägbarkeiten mit einem mod_rewrite-bedingt gesetzten REDIRECT_STATUS o. ä. auftreten (je nach Realisierung). Der Apache ist so hingebügelt, dass er seine Konfiguration von außerhalb des chroots lädt, aber danach mit einer Restrikton auf dasselbe seinen Dienst verrichtet. Last but not least: SuExec läuft natürlich für alle Vhosts und ist so zurechtgebogen, dass es nicht für jeden Benutzer eigene Interpreter benötigt.

Dieses Jail-Dings das du erwähnst ist mir suspekt; soweit ich auf Anhieb sehe, ist das nur ein Shell-Ersatz. Das würde ich per pam_chroot machen.
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: Webserver und Jails, wie umsetzen?

Post by Joe User »

Wir haben uns heute auf die erste Variante geeinigt und werden in den nächsten Tagen/Wochen ein kleines Bash-Script zum Initialisieren der Jails schreiben. Da dieses Setup nicht nur für unser Intranet interessant sein dürfte, wird das Script später unter einer freien Lizenz veröffentlicht.

BTW: Zur Minimierung der benötigten Ressourcen werden wir auf Lighty und PHP-FCGI setzen und vorläufig auf die Perl-Unterstützung verzichten.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
aldee
Posts: 93
Joined: 2002-10-03 16:45
 

Re: Webserver und Jails, wie umsetzen?

Post by aldee »

Blöde Frage: Wenn der Apache selbst nicht in einem chroot läuft aber Skriptausführung erlaubt ist, kann man sich einen chroot für die Benutzer-Shells doch auch gleich sparen, oder verstehe ich etwas miss?
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: Webserver und Jails, wie umsetzen?

Post by Joe User »

Richtig, daher auch die aufwendigere Erweiterung unseres derzeitigen Setups.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
aldee
Posts: 93
Joined: 2002-10-03 16:45
 

Re: Webserver und Jails, wie umsetzen?

Post by aldee »

Hatte eure erste und zweite Variante verwechselt *schäm*. Könnt ihr nicht anstatt dem Webserver-Overkill einen schicken Apache-Patch basteln? Es ist ja nun nicht so, dass dies ein allzu exotisches Szenario ist; bei diversen Massenhostern wird das, soweit man das ohne tiefere Systemkenntnis als normaler Benutzer beurteilen kann, anscheinend auch in dieser Form (mit gepatchtem, gechrooteten Apache, der seine Konfiguration von außerhalb des chroots bezieht und ansonsten gemeinsam mit allen Benutzer im selben chroot läuft) eingesetzt.
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: Webserver und Jails, wie umsetzen?

Post by Joe User »

Nun, da wir für dieses Setup einmal mehr Lighty (http://www.lighttpd.net/) statt Apache2 einsetzen werden, erübrigt sich ein entsprechender Patch. Zudem müsste der Patch gepflegt werden, wofür uns langfristig nicht nur die Zeit, sondern auch die nötige Manpower fehlt. Desweiteren lässt sich ein Bash-Script erheblich einfacher verstehen und somit auch die eigenen Bedürfnisse anpassen.

Sobald wir eine erste Alpha fertig haben, werde ich hier einen Antrag zur Aufnahme als Userprojekt stellen...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
aldee
Posts: 93
Joined: 2002-10-03 16:45
 

Re: Webserver und Jails, wie umsetzen?

Post by aldee »

Falls es doch für Jemanden interessant ist: Google sagt zu dem Thema http://www.devet.org/apache/chroot/. Das sieht auf den ersten Blick ganz vernünftig und auch nicht wirklich kryptisch aus. Offensichtliche Nachteile habe ich auf Anhieb keine gesehen; Ausprobieren steht noch aus.
User avatar
daemotron
Administrator
Administrator
Posts: 2641
Joined: 2004-01-21 17:44
Contact:
 

Re: Webserver und Jails, wie umsetzen?

Post by daemotron »

Ich bastele auch gerade an sowas herum... Wobei ich folgende Überlegung angestellt habe:
  • Ich lasse Lighttpd als Webserver laufen
  • PHP ist über FastCGI angebunden (selbstredend)
  • Die FastCGI-Prozesse werden nicht von Lighty gespawned, sondern von einem Shellskript
  • Pro User exitiert ein Jail mit eigener php.ini
  • Die FastCGI-Prozesse werden mit dem jeweiligen Jail-User gestartet
Die PHP-Skripte werden also mit den Rechten der (jailed) User ausgeführt. Ein solcher Prozess sollte doch eigentlich nicht aus dem Jail ausbrechen und den Rest des Servers gefährden können - oder hab ich da was übersehen? Als einziges Risiko würde ich einen Implementierungsfehler in chroot oder Lighty sehen. Ersteres würde meinen Server auch dann gefährden, wenn ich für jeden User eine eigene Lighty-Instanz im Jail des Users laufen lassen würde. Letzteres dann eher nicht...

Wie schätzt ihr die Risiken dabei ein? Lieber doch eine Instanz pro User (und damit mehr Ressourcenverbrauch in Kauf nehmen)?

@Joe User:
Wie weit sind denn Deine Erfahrungen mit dem Thema gediehen?

P. S. die Jails habe ich so aufgesetzt: http://gentoo-wiki.com/HOWTO_Jail
Hat jemand schon Erfahrungen mit Jailkit gesammelt?
Post Reply