Wie Du PHP5 mit Suhosin auf CentOS 5.0 sicherer machen kannst

Version 1.0
Author: Falko Timme


Diese Anleitung veranschaulicht, wie man PHP5 mit Suhosin auf einem CentOS 5.0 Server sicherer machen kann. Von der Suhosin Projekt Seite: "Suhosin is an advanced protection system for PHP installations that was designed to protect servers and users from known and unknown flaws in PHP applications and the PHP core. Suhosin comes in two independent parts, that can be used separately or in combination. The first part is a small patch against the PHP core, that implements a few low-level protections against bufferoverflows or format string vulnerabilities and the second part is a powerful PHP extension that implements all the other protections."
Diese Anleitung ist ohne jegliche Gewähr! Ich möchte darauf hinweisen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten dieses Ziel zu erreichen - dies ist der Weg, den ich gewählt habe. Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

Ich habe dies auf einem CentOS 5.0 Server mit der IP Adresse 192.168.0.100 getestet.

Ich werde in dieser Anleitung beide Suhosin Teile installieren, den Suhosin Patch (für den wir PHP5 rekompilieren müssen) und die Suhosin PHP Extension. Für nähere Informationen sieh Dir bitte http://www.hardened-php.net/suhosin/a_feature_list.html an. Die Funktionen des Suhosin Patchs sind unter Engine Protection (only with patch)aufgelistet; alle anderen Funktionen sind in der Suhosin Extension enthalten.

2 Installation von Apache2 und PHP5 (optional)

(Dieses Kapitel ist optional. Wenn Du Apache2 und PHP5 bereits installiert hast, fahre bitte mit dem nächsten Kapitel fort.)

Falls Du Apache2 und PHP5 auf Deinem Server noch nicht installiert haben solltest, dann installiere es jetzt:

yum install httpd php php-devel

Erstelle dann die System Startup Links für Apache2 und starte Apache2:

chkconfig --levels 235 httpd on
/etc/init.d/httpd start

Nun hast Du PHP5 mit einer Grundfunktionalität auf Deinem Server; falls Du besondere PHP5 Module benötigst, kannst Du diese wie folgt suchen:

yum search php

Wähle in der Ausgabe die Module, die Du benötigst, installiere sie wie folgt und starte Apache2 neu:

yum install php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc

/etc/init.d/httpd restart


3 Angaben über Deine PHP5 Installation beziehen

Sofern Du nicht bereits virtuelle Hosts in Deiner Apache Installation erstellt hast, ist der Dokumenten-Root der Standard Webseite /var/www/html. Nun erstellen wir eine kleine PHP Datei (info.php) in diesem Verzeichnis (falls Du virtuelle Hosts erstellt hast, setze es in irgendeinen Host, der PHP aktiviert hat) und rufen sie in einem Browser auf. Die Datei wird viele nützliche Informationen über unsere PHP Installation liefern, wie zum Beispiel die installiert PHP Version.

vi /var/www/html/info.php


<?php
phpinfo(); ?>
Nun rufen wir diese Datei in einem Browser auf (z.B. http://192.168.0.100/info.php):



Wie Du sehen kannst, haben wir die PHP Version 5.1.6. Suhosin wird auf der Seite nirgendwo erwähnt, was bedeutet, dass es nicht installiert ist.

4 Installation von Suhosin

Suhosin kann runter geladen von: http://www.hardened-php.net/suhosin/download.html
Um den Suhosin Patch installieren zu können, müssen wir PHP5 aus den Quellen rekompilieren, jedoch werden wir dafür das CentOS 5.0 PHP5 .src.rpm Paket verwenden (mittels des rpmbuild Befehls), so dass wir neue PHP5 .rpm Pakete (mit Suhosin) erhalten, die wir installieren können. Wir müssen uns daher keine Sorgen um die richtigen PHP5 Konfigurationsoptionen machen, da rpmbuild sich darum kümmern wird.

Aber zunächst besorgen wir uns eine Kopie des Hardened-PHP Project's Release Signaturekey und importieren ihn in unsere GNU Privacy Guard Keychain:

wget http://www.hardened-php.net/hardened-php-signature-key.asc
gpg --import < hardened-php-signature-key.asc

Dann laden wir ein PHP5 .src.rpm Paket (das zu unserer derzeitig installierten PHP Version, 5.1.6 in diesem Beispiel, passt) von einem CentOS 5.0 Spiegel nach /usr/src und installieren es:

cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.0/updates/SRPMS/php-5.1.6-12.el5.src.rpm

(Wie Du siehst, lade ich das neuste PHP5 .src.rpm aus dem updates/ Verzeichnis meines CentOS Spiegels; natürlich kannst Du auch das originale .src.rpm aus dem os/ Verzeichnis runter laden, z.B. http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.0/os/SRPMS/php-5.1.6-5.el5.src.rpm. Wenn Du das tust, musst Du die Dateinamen in den nachfolgenden Schritten dieser Anleitung anpassen.)

rpm -ivh php-5.1.6-12.el5.src.rpm

Falls Du eine Warnung wie die folgnde erhältst:

warning: user mockbuild does not exist - using root

kannst Du sie ignorieren.

Als Nächstes laden wir den Suhosin Patch, der zu unserer PHP Version passt, nach /usr/src/redhat/SOURCES (auf der Suhosin Downloads Seite findest Du alle verfügbaren Patches):

cd /usr/src/redhat/SOURCES
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.1.6-0.9.6.patch.gz

Nun sollten wir überprüfen, ob die MD5 Summe des runter geladenen Patches mit der übereinstimmt, die auf der Suhosin Downloads Seite veröffentlicht ist:

md5sum suhosin-patch-5.1.6-0.9.6.patch.gz

Wenn die MD5 Summe in Ordnung ist, können wir die digitale Unterschrift wie folgt überprüfen:

wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.1.6-0.9.6.patch.gz.sig
gpg suhosin-patch-5.1.6-0.9.6.patch.gz.sig

Falls Du diese Zeile in der Ausgabe sehen solltest:

gpg: Good signature from "Hardened-PHP Signature Key"

dann ist mit dem runter geladenen Patch alles in Ordnung und wir können weiter machen.

0 Kommentar(e)

Zum Posten von Kommentaren bitte