buecher.lingoworld.de
sascha kersken

buecher.lingoworld - Startseite

    buchinfo

    aktuelles

    newsletter

    inhalt

    leseprobe

    rezensionen

    direktiven

    module

    errata

    forum

    buchtipps

    links



    bestellen bei:

    Galileo Press
    amazon.de





Module
 
Galileo Computing 
Energy Brain Comics

mod_suexec

Mit Hilfe von SuEXEC haben Sie die Möglichkeit, CGI-Skripte und Server Side Includes unter einer anderen User- und Group-ID auszuführen als Apache selbst. Einem Angreifer, dem der Einbruch über ein schlecht abgesichertes Skript gelingt, wird auf diese Weise der Zugriff auf den eigentlichen Webserver erschwert. Apache ruft zu diesem Zweck das Hilfsprogramm suexec auf, das im Wesentlichen ein setuid- und setgid-Wrapper für eigene Skripte ist. Damit suexec benutzt werden kann, muss Apache 2 zunächst einmal mit den passenden Einstellungen kompiliert worden sein. Grundsätzlich werden configure-Optionen in Kapitel 4 des Buches »Apache 2«, Apache kompilieren und installieren, beschrieben. Hier die zuständigen SuEXEC-Einstellungen im Überblick:
--enable-suexec[=shared]
Damit wird das Modul mod_suexec grundsätzlich aktiviert; die Variante mit shared müssen Sie eingeben, um es als DSO-Modul zu kompilieren.
--with-suexec-bin=/Pfad/von/suexec
Aus Sicherheitsgründen muss der Pfad des Programms suexec fest einkompiliert werden. Die Voreinstellung variiert je nach Installationslayout.
--with-suexec-caller=UID
Dies ist die User-ID des Benutzers, der suexec aufrufen soll. Es handelt sich um die UID, unter der auch Apache selbst ausgeführt wird.
--with-suexec-userdir=Verzeichnis
Mit dieser Option wird der Name des Verzeichnisses unterhalb der Home-Verzeichnisse von Benutzern angegeben, in dem suexec-CGI-Skripte verwendet werden können. Der Standardwert ist public_html.
--with-suexec-docroot=Verzeichnis
Hier wird die DocumentRoot von Apache angegeben. Diese bildet das allgemeine Verzeichnis, in dem suexec-Skripte gestattet sind.
--with-suexec-uidmin=UID
Dies ist der niedrigste numerische Wert für die User-ID, unter der suexec-CGIs ausgeführt werden dürfen. Der Standardwert ist 100, was meist in Ordnung ist.
--with-suexec-gidmin=GID
Dieser Wert ist die niedrigste numerische Group-ID, der die Ausführung von suexec-Skripten erlaubt wird. Auch diese Option besitzt die Voreinstellung 100.
--with-suexec-logfile=/Pfad/zur/Datei
suexec führt eine eigene Logdatei, in der sämtliche Aktionen und Fehler protokolliert werden. Der Standardwert ist suexec_log im Standardverzeichnis für Logdateien (--logfiledir).
--with-suexec-safepath=Verzeichnis
Diese Option bestimmt den Inhalt der Umgebungsvariablen PATH, der an suexec-CGIs übermittelt wird.

Nachdem Sie suexec auf diese Weise eingerichtet haben, werden CGI-Skripte und Server Side Includes unter einer alternativen User- und Group-ID ausge-führt, wenn eine der beiden folgenden Voraussetzungen erfüllt ist:

  • Sie haben für den Server oder den jeweiligen virtuellen Host die Direktive SuexecUserGroup gesetzt.
  • Das Skript befindet sich in der Website unter einem mittels mod_userdir eingebundenen Home-Verzeichnis. In diesem Fall wird der Prozess unter der User- und Group-ID des jeweiligen Benutzers selbst ausgeführt.
suexec führt nacheinander folgende Sicherheitsüberprüfungen durch, bevor es ein Skript tatsächlich ausführt:
  1. User- und Group-ID müssen gültig sein.
  2. Das Wrapper-Programm suexec muss korrekt aufgerufen worden sein (darum kümmert sich Apache hinter den Kulissen; das Programm ist nicht für den Kommandozeilenaufruf gedacht ).
  3. Der User muss die Berechtigung besitzen, den SuEXEC-Wrapper aufzurufen; dies darf nur die User-ID, unter der Apache läuft (Option --with-suexec-caller).
  4. Der Pfad des auszuführenden Skript darf keine unsichere URL-Referenz sein, das heißt, sein Pfad darf nicht mit / oder ../ beginnen. Das Skript muss unterhalb der DocumentRoot oder in einem der festgelegten User-Verzeichnisse liegen.
  5. Der suexec-User muss existieren.
  6. Auch die suexec-Group muss vorhanden sein.
  7. Der suexec-User darf nicht root sein (dies würde das ganze Konzept ad absurdum führen).
  8. Die numerische User-ID muss über dem Limit (--with-suexec-uidmin) liegen.
  9. Auch die suexec-Group darf nicht root sein.
  10. Die numerische Group-ID muss oberhalb des Wertes liegen, der mit Hilfe der Option --with-suexec-gidmin konfiguriert wurde.
  11. Der Wechsel der User- und Group-ID für den suexec-Wrapper muss möglich sein.
  12. Das angegebene Verzeichnis, in dem sich das auszuführende Skript befindet, muss vorhanden sein.
  13. Das Verzeichnis des suexec-Skripts muss unter der Apache-DocumentRoot oder in einem gültigen Website-Verzeichnis unterhalb eines Home-Verzeichnisses liegen.
  14. Das User-Verzeichnis darf nur Schreibrechte für den Eigentümer besitzen.
  15. Das aufgerufene Skript selbst muss existieren.
  16. Nur der Eigentümer darf über Schreibrechte an dem CGI/SSI-Skript verfügen.
  17. Bei dem Skript selbst dürfen die setuid- beziehungsweise setgid-Bits nicht gesetzt sein.
  18. suexec-Benutzer und -Gruppe müssen Eigentümer des Skripts sein.
  19. PATH und andere Umgebungsvariablen müssen sich vor dem Start des Skripts auf sichere Werte setzen lassen (--with-suexec-safepath).
  20. Das Skript muss sich tatsächlich ausführen lassen.

Rechtlicher Hinweis

Dieser Text ist ein Auszug aus dem Buch "Apache 2" von Sascha Kersken (Bonn 2004, Galileo Computing). Ohne ausdrückliche Genehmigung von Autor und Verlag darf er weder insgesamt noch in Teilen auf anderen Websites oder in sonstigen Medien veröffentlicht werden. Links auf diese Seite sind dagegen gestattet und ausdrücklich erwünscht.


nach oben
Zur Übersicht
No Software Patents!

Ihre Werbung hier?
    
    www.lingoworld.de
    webmaster@lingoworld.de
    © Copyright 2004-2007 by Lingoworld IT Services, Köln
    designed by Tülay Kersken
    Impressum