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.ascEnsuite, 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.rpmSi vous obtenez des avertissements comme celui-ci :
warning: group kojibuilder does not exist - using rootvous 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.gzNous 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.gzSi 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.sigSi 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.specAjoutez 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.specEn 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-develEnsuite, exécutez à nouveau rpmbuild :
rpmbuild -ba php.specCela 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.tgzEnsuite, nous vérifions à nouveau la somme MD5 et la signature :
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.sigPuis 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 installPour 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 restartMaintenant, 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
- Suhosin : http://www.hardened-php.net/suhosin/index.html
- PHP : http://www.php.net
- Fedora : http://fedoraproject.org
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.