Il est impossible d'assurer la sécurité d'un serveur dédié ou virtuel utilisé en hosting mutualisé si on ne bloque pas certaines fonctions PHP. Ces fonctions permettent à n'importe quel hacker en herbe de pirater totalement votre serveur et même effacer et changer vos données. Nous constatons tous les 3 mois un incident avec ces fonctions PHP avec des clients à qui nous fournissons des serveurs dédiés.
Si vous laissez ces fonctions en ligne, n'importe quelle erreur ou faille sur un des sites hébergés peut être
facilement exploitée pour hacker tout votre serveur
quelques soient les protections que vous auriez par ailleurs mis en place.
Linux n'est pas plus sûr que Windows. Il ne se passe pas un jour sans que ne sortent des failles de Kernel ou d'autres software. De phpmyadmin, à Apache, en passant par mySQL, il y a toutes les semaines des alertes de divers niveaux. Les serveurs de hosting sont particulièrement vulnérables parce qu'ils ont un nombre important de programmes et de sites qui tournent dessus. N'importe quel serveur d'hébegement chez n'importe quel hébergeur a une douzaine de failles dans le meilleur des cas. Pour assurer une sécurité complète, il faut passer toute la journée à suivre les alertes et mettre à jour son serveur si toutefois un correctif adapté est disponible et compatible au moment où tombe l'alerte.
La seule solution pour éviter que ces failles
que vous avez ne soient exploitées, c'est de limiter le pouvoir des scripts PHP. Certaines fonctions sont trop puissantes et jamais utilisées par les programmes PHP légitimes que vous connaissez. Il n'y a que des applications très spéciales ou des scripts malicieux qui en ont besoin.
Voici la liste de ces fonctions:
exec
passthru
proc_open
proc_close
shell_exec
system
popen
Vous pouvez vous renseigner sur chaque fonction en tappant:
http://www.php.net/nom_de_la_fonctionPar exemple:
http://www.php.net/shell_execVoici quelques exemples de scripts PHP qui permettent d'obtenir un accès root à un serveur étant donné que l'on a un compte utilisateur sur ce serveur ou que l'on arrive à hacker un forum, un portail ou tout autre site hébergé sur le serveur:
partie d'un exploit mySQL / root
Autre exploit mySQL / root
Exploit Kernel pour avoir l'accès root
Exploit Kernel pour avoir l'accès root
Exploit Kernel actuel
Exploit Kernel Ces fonctions sont donc très dangereuses et ne doivent être débloquées que sur des serveurs dédiés applicatifs quand il y a de bonnes raisons de le faire.
Comment les bloquer ?Il faut aller dans ce fichier:
/usr/local/lib/php.ini
Trouver cette ligne:
disable_functions =La remplacer par:
disable_functions = exec,passthru,proc_open,proc_close,shell_exec,system,popenRelancez Apache. Bravo, vous avez multiplié par 1000 la sécurité de votre serveur. Cette action isolée ne vous protège pas encore à 100%, mais 95% des attaques ne seront plus fonctionnelles sur votre serveur.
La réaction de vos clients99.9% de vos clients ne verront pas de différence avec ou sans ces fonctions. Exceptionnellement, un ou deux clients peuvent vous contacter pour vous dire que leur site ou partie de celui-ci ne fonctionne plus avec ces fonctions bloquées. Dans ce cas, il faut leur dire de modifier leur site, voir trouver un autre hébergeur. Vous ne pouvez pas avoir de politique de sécurité, si vous ne pouvez pas accepter de perdre quelques clients suite à une mesure de sécurité.
Nouvelle Liste 2011:exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice, proc_terminate, proc_get_status, proc_close, pfsockopen, leak, apache_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid,dl,symlink