[Protection PHP Suhosin - Partie 1] Présentation et installation

Par Xavier Poli, secuobs.com
Le 19/03/2007


Résumé : Suhosin est un système de protection avancée pour PHP ; ils fonctionnent autant au niveau du moteur que des scripts eux-mêmes ; retrouvez ici l'installation du patch et de l'extension pour Suhosin.



Le système de protection avancée, de PHP, Suhosin se présente en 2 parties distinctes ; la première ( suhosin-patch-4.4.6-0.9.6.patch ) est une mise à jour pour le moteur afin de contrecarrer les buffer overflows ; la seconde ( suhosin-0.9.18 ) est livrée comme une extension PHP et cela dans le but de faire front aux risques liés aux failles d'inclusions de fichiers ou aux vols de sessions par exemple. Le patch et l'extension peuvent être installés et utilisés de manière séparée selon vos convenances.

Suhosin propose en outres de nombreuses fonctionnalités ( lien ) afin de sécuriser PHP ; on notera l'utilisation de [white|black]lists, des mesures contre les boucles infinies ainsi que des protections en temps réel contre les attaques de type HTTP Response Splitting and Smuggling ( lien ).

Télécharger le patch Suhosin ( lien ) correspondant à votre version de PHP, ici le patch pour PHP 4.4.6 ( lien ) dans notre cas.

root@tuktuk:/home# mkdir suhosin
root@tuktuk:/home# cd suhosin


Récupérer la version 4.4.6 de PHP :

root@tuktuk:/home/suhosin# wget fr.php.net/get/php-4.4.6.tar.gz/from/this/mirror
17:26:08 (430.39 KB/s) - « php-4.4.6.tar.gz » sauvegardé [5626738/5626738]

root@tuktuk:/home/suhosin# tar -zxvf php-4.4.6.tar.gz

root@tuktuk:/home/suhosin# gunzip suhosin-patch-4.4.6-0.9.6.patch.gz

root@tuktuk:/home/suhosin# cd php-4.4.6


Appliquer le patch :

root@tuktuk:/home/suhosin/php-4.4.6# patch -p 1 -i ../suhosin-patch-4.4.6-0.9.6.patch

root@tuktuk:/home/suhosin/php-4.4.6# ./configure --enable-suhosin --with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs
...
Thank you for using PHP.

root@tuktuk:/home/suhosin/php-4.4.6# make
root@tuktuk:/home/suhosin/php-4.4.6# make test


Installer PHP patché :

root@tuktuk:/home/suhosin/php-4.4.6# make install

root@tuktuk:/home/suhosin/php-4.4.6 # cp php.ini-dist /usr/local/lib/php/

root@tuktuk:/home/suhosin/php-4.4.6 # /usr/local/apache/bin/apachectl stop
/usr/local/apache/bin/apachectl stop: httpd stopped

root@tuktuk:/home/suhosin/php-4.4.6 # /usr/local/apache/bin/apachectl start
/usr/local/apache/bin/apachectl start: httpd started


Ouvrez dans un navigateur le fichier « test.php » suivant que vous aurez placé sous un site configuré dans votre httpd.conf afin qu'il soit accessible depuis cette machine :

<?php phpinfo(); ?>

On retrouve :

This server is protected with the Suhosin Patch 0.9.6
Copyright (c) 2006 Hardened-PHP Project


L'installation du patch est effective.

Récupérer l'extension Suhosin ( lien ).

root@tuktuk:/home/suhosin/php-4.4.6 # cd ..
root@tuktuk:/home/suhosin# tar -zxvf suhosin-0.9.18.tgz
root@tuktuk:/home/suhosin# cd suhosin-0.9.18
root@tuktuk:/home/suhosin/suhosin-0.9.18 # ./configure
root@tuktuk:/home/suhosin/suhosin-0.9.18 # make


Installer l'extension :

root@tuktuk:/home/suhosin/suhosin-0.9.18 # make install
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20020429/


Ajouter « extension=suhosin.so » dans le fichier « /usr/local/lib/php.ini »

En accédant de nouveau à « test.php », le phpinfo() contient :

This server is protected with the Suhosin Extension 0.9.18

Copyright (c) 2006 Hardened-PHP Project


L'extension est installée ; on vérifie qu'elle est bien chargée :

root@tuktuk:/home/suhosin/suhosin-0.9.18 # php -m

[PHP Modules]
ctype
mysql
overload
pcre
posix
session
standard
suhosin
tokenizer
xml

[Zend Modules]
Suhosin


Tout semble fonctionnel


Autre ressource disponible dans ce dossier :

[Protection PHP Suhosin - Partie 2] Test d'attaque et configuration - lien