WEB-d Développement Web

PHP, SQL, HTML5, CSS3, Javascript, Mootools, Référencement, SEO, CMS, e-commerce, Apache, Linux, Ubuntu, ...

Protéger un serveur PHP avec Suhosin

Suhosin est une extension de PHP qui permet de protéger un serveur contre une série de failles et d'attaques. Il ne protège naturellement pas contre toutes les attaques, et le développeur web devra donc toujours veiller à créer une application sécurisée, mais suhosin permet:

Suhosin

L'installation sur Ubuntu est comme toujours extrêmement simple:

apt-get install php5-suhosin

Le fichier de configuration de suhosin se trouve dans /etc/php5/apache2/conf.d/suhosin.ini, et la liste complète des options est clairement expliquée sur le site du projet Suhosin.

Une des options par défaut (suhosin.get.max_name_length=64) limite la longueur du nom des paramètres GET passés au script. Il est très facile de tester ce paramètre avec le code suivant:


<?php
var_dump($_GET);
?>

<a href="suhosin_test.php?abcd=1&azertyuiopqsdfghjklmwxcvbnazertyazertyuiopqsdfghjklmwxcvbnazertyazer=2">
    Test...
</a>
 

Comme on peut le voir sur le screenshot ci-dessous, lorsqu'on utilise ce lien le deuxième paramètre (azert...) n'est pas transmis au script.

Tester Suhosin

D'autres options intéressantes sont malheureusement désactivées par défaut, et il faudra donc les configurer manuellement:

Par défaut les alertes générées par Suhosin sont enregistrées dans /var/log/syslog. Ce n'est pas très pratique et je préfère donc utiliser un fichier séparé. Pour ce faire il suffit de créer un fichier /etc/rsyslog.d/30-suhosin.conf contenant les lignes suivantes:


:programname,contains,"suhosin" /var/log/suhosin.log
& ~

Puis de redémarrer rsyslog:

sudo restart rsyslog

Les alertes Suhosin seront désormais enregistrées dans /var/log/suhosin.log. Ce fichier est important car Suhosin pourrait malheureusement aussi empêcher certains scripts PHP de fonctionner correctement, mais c'est la contrepartie d'une plus grande sécurité...

Articles similaires