Apache SuExec Tweaking

Hallo Leuet!

Aus gegebenen anlass Schreibe ich auch zum Thema SuExec mal ein paar zeilen.

SuExec dient dazu auf, z.B. einem Shared Hosting Webserver, CGI-Skripte unter dem Benutzer und der Gruppe des Kunden auszuführen. Dazu muss beim Installieren des Apache Webservers SuExec natürlich erstmal aktiviert werden.
Später dann in der Konfiguration der VirtualHosts muss dann zusätzlich noch User/Group-Einträge getätigt werden. Natürlich müssen die hier angegebenen Benutzer und Gruppen im System vorhanden sein.

Um nun so ein CGI ausführen zu können, muss das CGI die gleichen Besitzer-Rechte haben wie im VirtualHost angegeben und zusätzlich das Execute-Bit (Ausführen) gesetzt bekommen.
Sollte davon irgendwas nicht passen, gibt es eine irreführende Fehlermeldung die besagt das das Skript unerwartete Header ausgegeben hat. Wer aber etwas fuchsiger ist, schaut in das suexec.log – dort steht dann das genaue Problem.

Nun zum Tweak:

Unter bestimmten gegebenheiten kann es von nöten sein entweder den Check auf den Benutzer oder die Gruppe zu deaktivieren. Da dies bei SuExec nicht vorgesehen ist aus Sicherheitsrelevanten gründen, gibt es dafür keinen direkten Schalter.
Man muss sich dafür in den Code von SuExec begeben und dort etwas Code manipulieren.

Wer vor dem Coding zurückschreckt, dem sei gesagt das sich die Code-Arbeiten nur auf “/*” und “*/” beschränken.
Wer aufgrund der daraus resultierenden Sicherheitslücke zurückschreckt, dem sei gesagt – Richtig, das stellt ein sicherheitsrisiko dar, deswegen muss auch Sichergestellt werden das bei dieser ganzen Aktion der im Virtualhost angegebenen Nutzer nicht aus seinem Document-Root ausbrechen kann. Also immer schön auf die Rechte der Verzeichnisse achten!

An Zeile 543 der Datei “src/helpers/suexec.c” steht der folgende Code:

if ((uid != dir_info.st_uid) ||
    (gid != dir_info.st_gid) ||
    (uid != prg_info.st_uid) ||
    (gid != prg_info.st_gid)) {

An dieser Stelle werden die Eigentümer der Datei und dem Ordner, in dem die Datei liegt, mit dem im Virtualhost angegebenen Benutzer/Gruppen Wert verglichen. Diesen Block kann man nun mit “/*” und “*/” auskommentieren und seinen Wünschen entsprechend anpassen.

Dies ist ein, in meinen Augen, sehr böser Tweak um mit SuExec Programme auch ausführen zu können, wenn diese nicht dem im Virtualhost angegebenen Benutzer oder Gruppe gehören.

Demnächst mehr zum Thema Webserver

Hinterlasse einen Kommentar