Nach einem Serverumzug auf einen Apache2 und PHP via mod_fcgi Server endete ein WordPress MU Update in einem Apache Internal Server Error 500.
Andere Scripte mit längere Ausführungszeit endeten ebenfalls mit einem Internal Server Error 500.

Der Apache2 Error Log brachte folgendes Ergebnis (/var/log/apache2/error.log):

[warn] mod_fcgid: read data timeout in 40 seconds
[error] [client XXX.XXX.XXX.XXX] Premature end of script headers: index.php, referer: www.example.com/dir

Die Lösung war das anpassen der maximalen Wartezeit in Sekunden bis das Apache Modul Daten vom FastCGI Programm abgfrägt. Die alte Optionsbezeichnung war / ist IPCCommTimeout. Aktuell ist der Options Name FcgidIOTimeout. Je nach Installationsdatum beide Versionen funktional oder nur eine von beiden.
Das kann in der Datei /etc/apache2/mods-enabled/fcgid.conf erledigt werden:

<IfModule mod_fcgid.c>
   FcgidIOTimeout  7200
</IfModule>

In diesem Fall ist das Timeout sehr hoch eingestellt. Der oben verwendete Wert 7200 sind 120 Minuten. So hohe Einstellungen sind für den regulären Webseiten Betrieb nicht benötigt. Mehr über diese Option hier.

Anschließend den Apache neu starten.

/etc/init.d/apache2 restart

Das wars. Was auch immer vorher versucht hattet an länger laufenden Scripten auszuführen sollte nun funktionieren.

Keine Kommentare »
 

Vielen unter euch ist sicher der Mulit Datei Upload mit Flash ein Begriff. Diese Methode ermöglicht es mehrere Dateien auf einmal auszuwählen und diese automatisch nacheinander hochladen zu lassen. Unter anderem wird diese Methode für den Dateiupload bei xt:commerce Veyton eingesetzt. Bei der Arbeit mit diesem Shopsystem ist ein Problem mit dem Flash Uploader aufgetreten. Der Apache2 Webserver meldete den Fehler 403 (Error 403). Der Fehler wurde durch den aktivierten POST Filter der Apache2 Erweiterung mod_security ausgelöst. Die einfachste Lösungsmöglichkeit war das Deaktivieren von mod_security. Hierzu wurde in die .htaccess Datei folgendes eingetragen:

<IfModule mod_security.c>
SecFilterEngine Off
</IfModule>

Mit diesen 3 Zeilen Code wird geprüft ob mod_security vorhanden ist und mod_security deaktiviert. Dadurch funktioniert der Flash Uploader wieder.

Keine Kommentare »
 

Durch das Verstecken von Informationen macht man es Angreifern schwieriger etwas über das System herauszufinden. Der Apache2 zeigt dem Angreifer beim Aufruf einer nicht vorhandenen Datei vom Server welche Apache2 Server Version installiert ist, welche Patches verwendet werden und welche Interpreter auf dem Server installiert sind. Diese Informationen reichen aus um in Exploit Datenbanken nach passenden Exploits zu suchen. Das ausblenden dieser Information geht leicht von der Hand. Es gibt also keine Grund diese nicht zu verstecken.

Meine Wahl fällt dabei auf das erstellen einer weiteren Konfigurationsdatei in /etc/apache2/conf.d. Dateien in diesem Verzeichnis werden automatisiert eingelesen und für die Apache2 Einstellungen verwendet. In der Datei wird die Option ServerSignature verwendet um, wie schon am Optionsname zu erkennen, die Server Signatur auszublenden. Der Inhalt der Datei, benannt server_signature, gestaltet sich beim mir so:

ServerSignature Off
ServerTokens Prod

Es kann auch die Datei /etc/apache2/httpd.conf um diesen Eintrag zu erweitert werden anstatt eine separate Konfigurationsdatei anzulegen. Ebenfalls ist es möglich nur Teile der Server Signatur auszublenden. Mehr dazu findest du hier. Interessant ist, das die Server Variable $_SERVER[‚SERVER_SIGNATURE‘] in PHP sich mit der Änderung der ServerSignature ändert. In den gängigen Webapplikationen wird diese Variable nicht verwendet. Ich wüsste auch keinen Einsatzbereich für diese.

ServerTokens setzt die Signatur des Servers im HTTP Response Header auf ein Minimum. Die Ausgabe beim Parameter „Prod“ ist lediglich „Apache“. Ein entfernen aller Informationen zum Server ist nur mit dem editieren des Apache2 Quellcodes oder über die Erweiterung mod_security möglich. Jedoch bin nichtmal ich so paranoid diese Möglichkeit zu nutzen.

ein Kommentar »