PHP Sicherheit · 3 min read · Oct 25, 2025
Wie man PHP5 mit Suhosin auf Fedora 7 absichert - Seite 2
4 Installation von Suhosin
Suhosin kann hier heruntergeladen werden: http://www.hardened-php.net/suhosin/download.html
Um den Suhosin-Patch zu installieren, müssen wir PHP5 aus den Quellen neu kompilieren, aber wir werden dafür das Fedora 7 PHP5.src.rpm-Paket verwenden (mit dem Befehl rpmbuild), damit wir neue PHP5.rpm-Pakete (mit Suhosin) erhalten, die wir installieren können. So müssen wir uns keine Gedanken über die richtigen PHP5-Konfigurationsoptionen machen, da rpmbuild sich darum kümmert.
Zuerst holen wir uns eine Kopie des Release-Signaturschlüssels des Hardened-PHP-Projekts und importieren ihn in unseren GNU Privacy Guard-Schlüsselbund:
wget http://www.hardened-php.net/hardened-php-signature-key.asc
gpg --import < hardened-php-signature-key.ascDann laden wir ein PHP5.src.rpm-Paket (das zu unserer derzeit installierten PHP-Version, 5.2.2 in diesem Beispiel, passt) von einem Fedora 7-Mirror nach /usr/src herunter und installieren es:
cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/releases/7/Fedora/source/SRPMS/php-5.2.2-3.src.rpm
rpm -ivh php-5.2.2-3.src.rpmWenn Sie Warnungen wie diese erhalten:
warnung: Gruppe kojibuilder existiert nicht - verwende rootkönnen Sie sie ignorieren.
Als nächstes laden wir den Suhosin-Patch, der zu unserer PHP-Version passt, nach /usr/src/redhat/SOURCES herunter (alle verfügbaren Patches finden Sie auf der Suhosin-Downloadseite):
cd /usr/src/redhat/SOURCES
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.2-0.9.6.2.patch.gzWir sollten jetzt überprüfen, ob die MD5-Prüfziffer des heruntergeladenen Patches identisch mit der auf der Suhosin-Downloadseite veröffentlichten ist:
md5sum suhosin-patch-5.2.2-0.9.6.2.patch.gzWenn die MD5-Prüfziffer in Ordnung ist, können wir die digitale Signatur wie folgt überprüfen:
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.2-0.9.6.2.patch.gz.sig
gpg suhosin-patch-5.2.2-0.9.6.2.patch.gz.sigWenn Sie diese Zeile in der Ausgabe sehen:
gpg: Gute Signatur von "Hardened-PHP-Signaturschlüssel"ist alles in Ordnung mit dem heruntergeladenen Patch, und wir können fortfahren.
Jetzt entpacken wir den Suhosin-Patch, benennen ihn um, damit er in das Namensschema von Fedora passt, und ändern die Datei /usr/src/redhat/SPECS/php.spec, damit der Befehl rpmbuild weiß, dass er den Suhosin-Patch einfügen muss, wenn er PHP5 neu aufbaut:
gunzip suhosin-patch-5.2.2-0.9.6.2.patch.gz
mv suhosin-patch-5.2.2-0.9.6.2.patch php-5.2.2-suhosin.patch
cd /usr/src/redhat/SPECS/
vi php.specFügen Sie Patch0: php-5.2.2-suhosin.patch zu dem Abschnitt hinzu, in dem alle Patches aufgelistet sind, und %patch0 -p1 -b .suhosin zum %setup -q Abschnitt:
| [...] Source3: macros.php Patch0: php-5.2.2-suhosin.patch Patch1: php-5.1.4-gnusrc.patch [...] %setup -q %patch0 -p1 -b .suhosin %patch1 -p1 -b .gnusrc [...] |
Jetzt bauen wir PHP5 neu:
rpmbuild -ba php.specJe nachdem, welche PHP5-Module Sie installiert haben, wird rpmbuild höchstwahrscheinlich über fehlende Pakete klagen, die es benötigt, um neue Pakete für die verschiedenen PHP5-Module zu erstellen:
[root@server1 SPECS]# rpmbuild -ba php.spec
cat: /usr/include/httpd/.mmn: Keine solche Datei oder Verzeichnis
Fehler: Fehlende Build-Abhängigkeiten:
aspell-devel >= 0.50.0 wird von php-5.2.2-3.i386 benötigt
httpd-devel >= 2.0.46-1 wird von php-5.2.2-3.i386 benötigt
pcre-devel >= 4.5 wird von php-5.2.2-3.i386 benötigt
uw-imap-devel wird von php-5.2.2-3.i386 benötigt
mysql-devel >= 4.1.0 wird von php-5.2.2-3.i386 benötigt
postgresql-devel wird von php-5.2.2-3.i386 benötigt
unixODBC-devel wird von php-5.2.2-3.i386 benötigt
net-snmp-devel wird von php-5.2.2-3.i386 benötigt
libxslt-devel >= 1.0.18-1 wird von php-5.2.2-3.i386 benötigt
[root@server1 SPECS]#Wenn Sie einen Fehler wie diesen sehen, installieren Sie die fehlenden Pakete, z.B. so:
yum install aspell-devel httpd-devel pcre-devel uw-imap-devel mysql-devel postgresql-devel unixODBC-devel net-snmp-devel libxslt-develDanach führen Sie rpmbuild erneut aus:
rpmbuild -ba php.specDies sollte jetzt PHP5 und alle installierten PHP5-Module erneut kompilieren und neue .rpm-Pakete im Verzeichnis /usr/src/redhat/RPMS/i386 erstellen. Dies kann einige Zeit in Anspruch nehmen, also bitte geduldig sein.
Anschließend können wir die neuen PHP5-Pakete wie folgt installieren:
cd /usr/src/redhat/RPMS/i386
rpm -Uvh --force php-*Das war’s für den Suhosin-Patch.
Jetzt werden wir die Suhosin-PHP-Erweiterung erstellen. Zuerst laden wir die Quellen nach /usr/src herunter (die Quellen der Suhosin-Erweiterung sind auf der Suhosin-Downloadseite verfügbar):
cd /usr/src
wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgzAls nächstes überprüfen wir erneut die MD5-Prüfziffer und die Signatur:
md5sum suhosin-0.9.20.tgzwget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgz.sig
gpg suhosin-0.9.20.tgz.sigDann entpacken wir die Quellen und bauen die Erweiterung wie folgt:
tar xvfz suhosin-0.9.20.tgz
cd suhosin-0.9.20
phpize
./configure
make
make installUm die Suhosin-Erweiterung zu aktivieren, erstellen wir die Datei /etc/php.d/suhosin.ini und fügen die Zeile extension=suhosin.so hinzu:
vi /etc/php.d/suhosin.ini| extension=suhosin.so |
Alles, was jetzt noch zu tun bleibt, ist Apache2 neu zu starten:
/etc/init.d/httpd restartJetzt rufen wir unsere info.php-Seite erneut in einem Browser auf (z.B. http://192.168.0.100/info.php). Wenn alles gut gelaufen ist, sollten Sie jetzt Suhosin an zwei Stellen auf der Seite sehen:


Das war’s. Wenn Sie möchten, können Sie Suhosin konfigurieren (siehe http://www.hardened-php.net/suhosin/configuration.html), obwohl Suhosin mit seiner Standardkonfiguration sofort einsatzbereit ist, also stellen Sie sicher, dass Sie wissen, was Sie tun.
5 Links
- Suhosin: http://www.hardened-php.net/suhosin/index.html
- PHP: http://www.php.net
- Fedora: http://fedoraproject.org
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.