Le 28 juil. 2014 à 10:47, Alexandre Legrix a écrit :
Le fait de maintenir des scripts php opensource a jour que tu ne déploies pas toi même a toujours été le gros soucis de notre métier.
L'adminsys doit s'assurer que le serveur ne peut pas se faire trouer.
(je prends wordpress en exemple, mais vous pouvez remplacer ca par n'importe quel projet opensource, ca peut être phpmyadmin, qui a la palme d'or du trouage)
Les développeurs déploient un wordpress d'il y a 4 ans, (modifié par leurs petites mains) et donc ce wordpress n'est plus "mainline". On ne peut plus mettre ce wordpress a jour en suivant la méthode proposée par les développeurs du logiciel.
Et la il va en résulter une bataille des responsabilités entre dev et sysadmin.
J'ai eu le cas d'un wordpress troué également. Pour la bonne raison qu'il n'était pas à jour. L'attaquant a commencé à uploader de quoi exécuter de manière arbitraire ses scripts, puis il a uploadé un shell codé en php capable de récupérer tout ce qui peut être intéressant sur le système (passwd, conf, logiciels installés, etc), puis il a mis en place ses petites pages de pub pour produits pharmaceutiques revigorants. L'une des choses qui avait aidé à l'époque était le fait que les droits des fichiers et dossiers étaient très permissifs. J'enfonce des portes ouvertes mais la première vérification à faire est de s'assurer que les droits sont en r--r----- ou r--r--r-- par défaut (hormis sur des dossiers particuliers comme l'upload). Cela peut ralentir considérablement une attaque.
Pour se prémunir de soucis plus grand et gros qu'un script php opensource hack via une requête POST a la con, nous avons en tant qu'adminsys une potion magique. Ca s'appelle chroot() + php-fpm + nginx. Le script php ne sera executé qu'avec les droits de l'utilisateur spécifique de ce vhost, et ne pourra pas sortir de sa prison.
Je ne peux que plussoyer php-fpm. Très pratique pour isoler les applications, et performant. Éventuellement lxc pour parfaire l'isolation (en s'assurant de dropper toutes les capabilities inutiles). Si tu as le temps, tu peux aussi jouer avec suhosin ou disabled_functions.
Cordialement Emmanuel Thierry