[quote=“agentsteel”]encore faut-il le faire correctement
blog.khemael.net/2010/08/26/de-l … -en-php/2/[/quote]
Qu’est ce que j’aime les donneurs de leçon du web… Le C pour de la sécurité sécurité, il faut avoir un niveau sacrément couillu pour rester sécurisé… Le C (comme le C++ entre autre) c’est un nid à faille. Les buffers overflow et autres sont facile à créer. Bien sûr le monsieur parle de la pire façon d’utiliser sudo. Dans les commentaires quelqu’un le reprend sur ce point (j’ai pas à le faire c’est cool). Il nous explique que sudo a eu des failles de sécurité, en regardant le BTS debian j’ai pas trouvé grand chose mis à part des failles en 2002… Bien sûr aucune faille de sécurité n’a jamais était trouvée dans ses wrappers.
À vouloir joué les malins en sécurité, on commence par écouter ce qui se fait puis on prèche la bonne parole. En l’occurence il faudrait utiliser la séparation des privilèges, mais rien oblige à utiliser du C pour faire ça (le perl ou le python c’est très bien).
Je ne dis pas que sa solution est nulle, juste qu’elle n’est pas la seule et qu’il jette l’oprobe un peu facilement sur une solution qui ne pose pas autant de problème que ce qu’il dit (enfin il est tellement évasif dans ce qu’il dit…).
Après avoir étudié ce sujet, j’ai retenu les points suivants :
pleins de personnes donnent tous les droits à www-data via sudoers
il n’y a (malheureusement) pas de solution parfaite, chacun y va de son expérience et de sa préférence
il ne faut pas avoir peur d’utiliser sudoers à condition de le configurer au juste besoin
peu de développeurs communiquent à ce sujet (ce que je regrette). Beaucoup de sysadmin aiment partager leurs astuces mais je n’ai pas l’impression que ce soit pareil chez les dev (ce n’est qu’une impression…)
La solution technique que j’ai retenu est la suivante :
Utiliser la bibliothèque php “libssh2” (ou php fonction exec, l’avantage du libssh2 est que tu pourra administrer un serveur local ou des serveurs distants !) afin de se connecter en ssh sur le serveur Linux et d’utiliser un compte Linux aux droits limités (idéalement chrooté) autorisé à utiliser certaines commande via sudoers. Toujours vérifier que les données introduites dans les formulaires correspondent à ce que l’on attends (pour éviter d’avoir des exécutions de code arbitraire à la suite du pseudo désiré par le visiteur).
C’est simple, rapide à mettre en oeuvre et tu peux exécuter ainsi des scripts bash récupérant les variables PHP (correspondantes au champ du formulaire).
Je ne connais pas l’utilisation de CGI et ne peux donc comparer ma solution avec celle déjà présentée cependant je ne sais pas si Apache peut tourner en mode CGI et serveur ?
bon après les httpd tournent sous l’utilisateur root (en tout cas sur ipcop, j’ai pas de pfsense qui tourne sous la main) donc c’est réglé pour les droits (du coup ça fait pas trop avancer le schmilblick)