PHP Security · 3 min read · Oct 25, 2025

Comment durcir PHP5 avec Suhosin sur Fedora 7 - Page 2

4 Installation de Suhosin

Suhosin peut être téléchargé ici : http://www.hardened-php.net/suhosin/download.html

Pour installer le patch Suhosin, nous devons recompiler PHP5 à partir des sources, mais nous utiliserons le package Fedora 7 PHP5.src.rpm pour cela (en utilisant la commande rpmbuild), afin d’obtenir de nouveaux packages PHP5.rpm (avec Suhosin) que nous pouvons installer. De cette façon, nous n’avons pas à nous soucier des bonnes options de configuration PHP5 car rpmbuild s’en occupera.

Mais d’abord, nous récupérons une copie de la clé de signature de la version du projet Hardened-PHP et l’importons dans notre trousseau de clés GNU Privacy Guard :

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

Ensuite, nous téléchargeons un package PHP5.src.rpm (qui convient à notre version PHP installée, 5.2.2 dans cet exemple) depuis un miroir Fedora 7 vers /usr/src et l’installons :

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.rpm

Si vous obtenez des avertissements comme celui-ci :

warning: group kojibuilder does not exist - using root

vous pouvez l’ignorer.

Ensuite, nous téléchargeons le patch Suhosin qui convient à notre version PHP vers /usr/src/redhat/SOURCES (vous pouvez trouver tous les patches disponibles sur la page de téléchargement de Suhosin) :

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

Nous devrions maintenant vérifier que la somme MD5 du patch téléchargé est identique à celle publiée sur la page de téléchargement de Suhosin :

md5sum suhosin-patch-5.2.2-0.9.6.2.patch.gz

Si la somme MD5 est correcte, nous pouvons vérifier la signature numérique comme ceci :

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.sig

Si vous voyez cette ligne dans la sortie :

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

tout est ok avec le patch téléchargé, et nous pouvons continuer.

Maintenant, nous décompressons le patch Suhosin, le renommons pour qu’il s’intègre dans le schéma de nommage de Fedora, et modifions le fichier /usr/src/redhat/SPECS/php.spec afin que la commande rpmbuild sache qu’elle doit inclure le patch Suhosin lors de la reconstruction de PHP5 :

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.spec

Ajoutez Patch0: php-5.2.2-suhosin.patch à la strophe où tous les patches sont listés, et %patch0 -p1 -b .suhosin à la strophe %setup -q :

| [...] 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 [...] |

Maintenant, nous reconstruisons PHP5 :

rpmbuild -ba php.spec

En fonction des modules PHP5 que vous avez installés, rpmbuild se plaindra très probablement des packages manquants dont il a besoin pour construire de nouveaux packages pour les différents modules PHP5 :

[root@server1 SPECS]# rpmbuild -ba php.spec  
cat: /usr/include/httpd/.mmn: No such file or directory  
error: Failed build dependencies:  
        aspell-devel >= 0.50.0 is needed by php-5.2.2-3.i386  
        httpd-devel >= 2.0.46-1 is needed by php-5.2.2-3.i386  
        pcre-devel >= 4.5 is needed by php-5.2.2-3.i386  
        uw-imap-devel is needed by php-5.2.2-3.i386  
        mysql-devel >= 4.1.0 is needed by php-5.2.2-3.i386  
        postgresql-devel is needed by php-5.2.2-3.i386  
        unixODBC-devel is needed by php-5.2.2-3.i386  
        net-snmp-devel is needed by php-5.2.2-3.i386  
        libxslt-devel >= 1.0.18-1 is needed by php-5.2.2-3.i386  
[root@server1 SPECS]#

Si vous voyez une erreur comme celle-ci, installez les packages manquants, par exemple comme ceci :

yum install aspell-devel httpd-devel pcre-devel uw-imap-devel mysql-devel postgresql-devel unixODBC-devel net-snmp-devel libxslt-devel

Ensuite, exécutez à nouveau rpmbuild :

rpmbuild -ba php.spec

Cela devrait maintenant compiler PHP5 et tous les modules PHP5 installés à nouveau et créer de nouveaux packages .rpm dans le répertoire /usr/src/redhat/RPMS/i386. Cela peut prendre un certain temps, alors soyez patient.

Ensuite, nous pouvons installer les nouveaux packages PHP5 comme ceci :

cd /usr/src/redhat/RPMS/i386  
rpm -Uvh --force php-*

C’est tout pour le patch Suhosin.

Maintenant, nous allons construire l’extension PHP Suhosin. Tout d’abord, nous téléchargeons ses sources dans le répertoire /usr/src (les sources de l’extension Suhosin sont disponibles sur la page de téléchargement de Suhosin) :

cd /usr/src  
wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgz

Ensuite, nous vérifions à nouveau la somme MD5 et la signature :

md5sum suhosin-0.9.20.tgz
wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgz.sig  
gpg suhosin-0.9.20.tgz.sig

Puis nous décompressons les sources et construisons l’extension comme ceci :

tar xvfz suhosin-0.9.20.tgz  
cd suhosin-0.9.20  
phpize  
./configure  
make  
make install

Pour activer l’extension Suhosin, nous créons le fichier /etc/php.d/suhosin.ini et y mettons la ligne extension=suhosin.so :

vi /etc/php.d/suhosin.ini

| extension=suhosin.so |

Tout ce qu’il reste à faire maintenant est de redémarrer Apache2 :

/etc/init.d/httpd restart

Maintenant, appelons à nouveau notre page info.php dans un navigateur (par exemple, http://192.168.0.100/info.php). Si tout s’est bien passé, vous devriez maintenant voir Suhosin mentionné à deux endroits sur la page :

C’est tout. Si vous le souhaitez, vous pouvez configurer Suhosin (voir http://www.hardened-php.net/suhosin/configuration.html), bien que Suhosin fonctionne dès la sortie de la boîte avec sa configuration par défaut, alors assurez-vous de savoir ce que vous faites.

5 Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.