Ubuntu + PHP Suhosin + VirtualHost...

Que faire avec tout ça ?

jeudi 24 mars 2011, par Minimalteck

Sous Ubuntu, PHP est livré en standard avec le patch Suhosin.
Voici un exemple concret d’exploitation des fonctionnalités supplémentaires que permet l’utilisation du patch et de l’extension Suhosin pour PHP : la gestion par VirtualHost des fonctions désactivées définies dans la configuration php par la directive "disable_functions"

De base sous Ubuntu l’extension php5-suhosin ne s’intalle pas par défaut avec PHP. Une vérification s’impose donc :

root@machine:~# dpkg -l | grep php
ii  libapache2-mod-php5                        5.2.4-2ubuntu5.14                         server-side, HTML-embedded scripting languag
ii  php-pear                                   5.2.4-2ubuntu5.14                         PEAR - PHP Extension and Application Reposit
ii  php5                                       5.2.4-2ubuntu5.14                         server-side, HTML-embedded scripting languag
ii  php5-cli                                   5.2.4-2ubuntu5.14                         command-line interpreter for the php5 script
ii  php5-common                                5.2.4-2ubuntu5.14                         Common files for packages built from the php
ii  php5-curl                                  5.2.4-2ubuntu5.14                         CURL module for php5
ii  php5-gd                                    5.2.4-2ubuntu5.14                         GD module for php5
ii  php5-imagick                               2.0.1-1ubuntu0.1                          ImageMagick module for php5
ii  php5-mcrypt                                5.2.3-0ubuntu1                            MCrypt module for php5
ii  php5-mysql                                 5.2.4-2ubuntu5.14                         MySQL module for php5
ii  phpmyadmin                                 4:2.11.3-1ubuntu1.3                       Administrate MySQL over the WWW

On installe donc l’extension

root@machine:~# apt-get install php5-suhosin

Avait-on spécifié une valeur à la directive "disable_functions" dans la configuration php :

root@machine:~# grep disable_fu /etc/php5/apache2/php.ini
disable_functions = show_source,system,dl,shell_exec,exec,passthru,popen,proc_open,chroot,pfsockopen,socket_connect,socket_create_listen,socket_accept,socket_listen,syslog,openlog,closelog,symlink,mysql_list_dbs

Ah vi…
Alors il faut la désactiver (commenter) :

sed -i 's/^disable_function/;disable_function/g'  /etc/php5/apache2/php.ini

On configure ensuite l’extension Suhosin en affectant à l’option d’excécution "suhosin.executor.func.blacklist" l’ancienne valeur de la directive disable_function du php.ini

sed -i "s/^;suhosin.executor.func.blacklist\( \)\?=\( \)\?/suhosin.executor.func.blacklist = `grep disable_function /etc/php5/apache2/php.ini | cut -d = -f2`/g" /etc/php5/conf.d/suhosin.ini

en une ligne de commande pour le fun ;)

il ne reste plus qu’a surcharger cette option de l’extension suhosin au cas par cas au sein des différents VirtualHost via la directive de configuration php_admin_value

Exemple :


<VirtualHost *:80>
       ServerAdmin mapomme@superdomaine.tld
       ServerName www.superdomaine.tld
        ServerAlias superdomaine.tld
       DocumentRoot /var/www/superdomaine/
       <Directory /var/www/superdomaine/>
               Options FollowSymLinks
               AllowOverride All
               Order allow,deny
               allow from all
               php_admin_value open_basedir  "/tmp/:/var/www/superdomaine/"
                php_admin_value suhosin.executor.func.blacklist  "show_source,system,dl,shell_exec,passthru,popen,proc_open,chroot,pfsockopen,socket_connect,
socket_create_listen,socket_accept,socket_listen,syslog,openlog,closelog,symlink,mysql_list_dbs"
       </Directory>
       ErrorLog /var/log/apache2/superdomaine-error.log
       CustomLog /var/log/apache2/superdomaine-access.log combined
</VirtualHost>

Pour superdomaine.tld la fonction exec() est autorisée ;)

P.-S.

À consulter sans plus attendre : Hardened-PHP Project : http://www.hardened-php.net/suhosin…

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0