Php + apache + lancemement de scripts (gestion des droits)

Bonjour à tous,

Pour m’amuser, j’aimerais créer moi-même une petite interface web pour gérer netfilter. Je n’en suis encore qu’au début, et j’ai une première galère.

J’arrive à exécuter un script. Mon script arrive à réaliser des trucs à la con (genre echo $MaCommande >> /var/www/truc.log). Si j’exécute la commande qui est dans ce fichier truc.log, la commande netfilter se passe correctement.

Seulement voilà, quand c’est ma page php qui appelle le script, aucune règle n’est ajoutée à Netfilter.

Je suppose que c’est au niveau des droits que ça coince. Apache n’a probablement pas le droit d’exécuter ce genre de commande. Ma question est donc : “Comment faire en sorte que qu’apache ait certains droits sur le système, sans avoir une passoire niveau sécurité?”

ps : je ne suis pas contre un peu de lecture.

Tu dis “…sans passoire au niveau sécu” et tu veux faire ça sur une page web qui, en principe, est faite pour circuler dans le monde entier :017 :017 :017
Un parefeu est fait pour être protégé au maximum.

[quote=“ricardo”]Tu dis “…sans passoire au niveau sécu” et tu veux faire ça sur une page web qui, en principe, est faite pour circuler dans le monde entier :017 :017 :017
Un parefeu est fait pour être protégé au maximum.[/quote]

C’est un peu le principe de webmin. S’ils le font bien, pourquoi pas moi?

Le but de cette application est, pour m’amuser (je le répète), de permettre à un faux admin d’autoriser un user à accéder au net.
Maintenant, j’aimerais être certain qu’il soit impossible de shutdown le routeur, d’ajouter des règles en input,…

On a eu une petite discussion là dessus, il n’y a pas longtemps :
creer-un-utilisateur-via-une-page-web-t41698.html#p420991

En clair tu as sudo pour ça. Tu bordes bein un scriot effectuant ce que tu veux faire, et tu autorises via sudo l’exécution de ce script en tant que root. Mais attention à ne pas pouvoir détourner ton script, imagines ce qu’il se passerait si tu exécutes en root un truc genre banIP.sh:

#!/bin/sh iptables -A INPUT -s $1 -j DROP
Tu te dis c’est OK, sauf que si tu l’appelles via

Tu auras une très mauvaise surprise à l’arrivée. C’est ce que je veux dire par border tes scripts.

[quote=“MisterFreez”]On a eu une petite discussion là dessus, il n’y a pas longtemps :
debian-fr.org/creer-un-util … ml#p420991[/quote]
Thx pour ce lien, je l’ai déjà lu 2 fois, j’ai pas encore tout compris. Et on est en plein dans un genre de débat que je n’aime pas. “Gnagnagna, j’ai lu qu’il y avait des failles dans le C, donc c’est pas à utiliser, oui mais gnagnagna, sudo s’pas secure non plus”. Bref, il y a très certainement du bon, et je vais passer du temps à tout comprendre, suivre…

[quote=“fran.b”]En clair tu as sudo pour ça. Tu bordes bein un scriot effectuant ce que tu veux faire, et tu autorises via sudo l’exécution de ce script en tant que root. Mais attention à ne pas pouvoir détourner ton script, imagines ce qu’il se passerait si tu exécutes en root un truc genre banIP.sh:

#!/bin/sh iptables -A INPUT -s $1 -j DROP
Tu te dis c’est OK, sauf que si tu l’appelles via

Tu auras une très mauvaise surprise à l’arrivée. C’est ce que je veux dire par border tes scripts.[/quote]

Merci pour l’info, j’avais pas imaginé ce risque là. A moi de comprendre comment gérer les “débordements”.

[quote=“patxy”][quote=“ricardo”]Tu dis “…sans passoire au niveau sécu” et tu veux faire ça sur une page web qui, en principe, est faite pour circuler dans le monde entier :017 :017 :017
Un parefeu est fait pour être protégé au maximum.[/quote]

C’est un peu le principe de webmin. S’ils le font bien, pourquoi pas moi?[/quote]
C’est ptet aussi pour ça que Debian ne le fournit plus.

[quote=“patxy”][quote=“MisterFreez”]On a eu une petite discussion là dessus, il n’y a pas longtemps :
creer-un-utilisateur-via-une-page-web-t41698.html#p420991[/quote]
Thx pour ce lien, je l’ai déjà lu 2 fois, j’ai pas encore tout compris. Et on est en plein dans un genre de débat que je n’aime pas. “Gnagnagna, j’ai lu qu’il y avait des failles dans le C, donc c’est pas à utiliser, oui mais gnagnagna, sudo s’pas secure non plus”. Bref, il y a très certainement du bon, et je vais passer du temps à tout comprendre, suivre…[/quote]
C’est une discussion, c’est pour ça. :slightly_smiling:

[quote=“patxy”][quote=“fran.b”]En clair tu as sudo pour ça. Tu bordes bein un scriot effectuant ce que tu veux faire, et tu autorises via sudo l’exécution de ce script en tant que root. Mais attention à ne pas pouvoir détourner ton script, imagines ce qu’il se passerait si tu exécutes en root un truc genre banIP.sh:

#!/bin/sh iptables -A INPUT -s $1 -j DROP
Tu te dis c’est OK, sauf que si tu l’appelles via

Tu auras une très mauvaise surprise à l’arrivée. C’est ce que je veux dire par border tes scripts.[/quote]

Merci pour l’info, j’avais pas imaginé ce risque là. A moi de comprendre comment gérer les “débordements”.[/quote]
Le principe de base c’est de protéger toutes les entrées, par exemple pour le script de françois :

#!/bin/sh iptables -A INPUT -s "$1" -j DROP
Ça protège de l’injection de code.