Bonjour,
J'aimerais arrêter mon service httpd via un script qui est executer via du PHP sur une page web (qui est héberger en local)
Je tiens à préciser, avant d'étaler mes procédures, que je suis sous CentOS 7.
Après m'être documenter à droite et à gauche sur le fichier /etc/sudoers, j'ai essayé de l'adapter pour mon projet personnel mais cela ne fonctionne pas.
Mon user httpd ci-dessous:
Ma config sudoers avec visudo:
Le soucis est que lorsque je veux exécuter la commande:
/bin/systemctl stop httpd.service via un exec('/bin/systemctl stop httpd.service') en PHP, cela ne fonctionne pas.
Par conséquent, j'ai essayé avec l'utilisateur "apache" directement via SSH.
sudo -u apache /bin/systemctl stop httpd.service
A ce moment là, j’apprends que la commande est bien effectuer mais il attend le mot de passe root or j'ai configurer le fichier sudoers pour qu'il ne me demande pas de passwd lors de l’exécution de cette commande.
Un indice ?
Merci d'avance !
# si c'était bien configuré
Posté par nono14 (site web personnel) . Évalué à 2.
alors la mot de passe ne serait pas demandé
su - apache
puis ta commande,
ça doit fonctionner sans mot de passe en ligne de commande avant de vouloir le faire en php via apache.
Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités
[^] # Re: si c'était bien configuré
Posté par Finn . Évalué à 1.
Merci de m'avoir répondu ! :)
Quand j'exécute su - apache /bin/systemctl stop httpd.service, on me dit que ce compte n'est pas valide.
Je tiens à préciser qu'Apache fonctionne bel et bien ^
[^] # Re: si c'était bien configuré
Posté par nono14 (site web personnel) . Évalué à 2. Dernière modification le 28 novembre 2016 à 18:08.
C'est certain que c'est apache l'utilisateur des pages web ?
Pas de shell ? ou /bin/false ?
( www-data chez Debian )
C'etait ça qu'il fallait tester:
su - apache
puis
sudo /bin/systemctl stop apache.service
```
Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités
# SeLinux
Posté par bzubzu . Évalué à 2.
Tu n'aurais pas selinux activé ?
httpd n'a pas a démarrer/arreter des service.
autre point :
sudo -u apache /bin/systemctl stop httpd.service
tu va executer /bin/systemctl stop httpd.service en utilisateur apache, pas en root.
Ce que tu veux c'est passer root sans mot de passe avec l'utilisateur apache pour executer ta commande.
Donc en root tu passe en user apache :
su - apache -s /bin/bash
Puis tu teste ton sudo :
sudo /bin/systemctl stop httpd.service
Sinon c'est quoi l’intérêt ?
[^] # Re: SeLinux
Posté par Finn . Évalué à 1.
Alors oui, le selinux était activé, je l'ai désactiver suite à la lecture de votre répondre :)
Merci ! ça a fonctionner ! Le service httpd s’arrête bel et bien :)
Il me reste plus qu'a trouver la solution pour l’exécuter via un script avec PHP :)
[^] # Re: SeLinux
Posté par bzubzu . Évalué à 1.
A mon avis tu devrais le réactiver et comprendre comment le régler il y a pas mal de ressources sur le web qui explique comment ajouter des droits selinux a httpd pour faire ce que tu veux tout en gardant la sécurité apporté par SeLinux ;)
par exemple, en anglais : https://wiki.centos.org/HowTos/SELinux
Tu peux trouver d'autre ressource sur google en cherchant 'configurer selinux'
PS : Personnellement pendant des année je l'ai désactivé parce que c'était chiant et que je savait pas comment ça marchait, mon boulot m'a forcé a apprendre, c'était pas si insurmontable et maintenant je le règle comme il faut pour faire ce que je veux.
Après tu peux aussi mettre un cronjob qui vérifie l’existence d'un fichier sur ton serveur toute les minutes et ferme le service, ça sera plus sécurisé qu'autoriser apache a faire des choses en root.
Ou bien si le but est de te prémunir d'attaque, utiliser du port knocking.
Bon courage.
[^] # Re: SeLinux
Posté par Finn . Évalué à 1.
Merci beaucoup, je vais étudier toute les possibilités de sécurité lié à mon système.
Merci pour la doc sur SeLinux !
# Une piste peut-être
Posté par Marotte ⛧ . Évalué à 2.
Ça n’aurait pas un rapport avec :
https://bugzilla.redhat.com/show_bug.cgi?id=1020147
?
Est-ce que tu as la même chose si tu fais :
ssh -l apache -t host 'sudo -n /bin/systemctl stop httpd.service'
C’est juste une idée…
[^] # Re: Une piste peut-être
Posté par Finn . Évalué à 1. Dernière modification le 29 novembre 2016 à 09:58.
Il me demande toujours le passwd d'apache :/
[^] # Re: Une piste peut-être
Posté par nono14 (site web personnel) . Évalué à 2.
que disent les logs ? ( apache ( access.log et error.log et système )
En cgi sous un autre uid ce sera moins pire que l'uid sur server web.
Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités
# Faille de sécurité !
Posté par Quentin Bihet . Évalué à 2.
Attention, si tu veux déployer ton script PHP ailleurs qu'en local je te recommande fortement de supprimer cette possibilité !!
En effet, tu veux utiliser la commande
exec()
`qui présente une énorme faille de sécurité sur un serveur !Après si c'est effectivement uniquement en local, c'est à tes risques et périls.
[^] # Re: Faille de sécurité !
Posté par Finn . Évalué à 1.
Il y aurait-il des documentations concernant l'exécution de script via PHP de manière sécurisé ?
Merci ! :)
[^] # Re: Faille de sécurité !
Posté par Quentin Bihet . Évalué à 1.
Bonjour,
De manière générale il n'est pas bon de lancer l'exécution de script via PHP, cela présente de multiples failles et présente donc un risque pour le serveur.
Après je n'ai pas de documentation la dessus, je le sais par ma formation et mon expérience professionnelle.
[^] # Re: Faille de sécurité !
Posté par Finn . Évalué à 1.
Bien, je vous remercie pour ces informations.
Je vais essayer de trouver des solutions sécurisé à l'exécution des scripts.
# je vais dire une betise mais...
Posté par NeoX . Évalué à 2.
à moins d'avoir monter ton PHP dans un autre service, je ne vois comment,
si tu arretes ton serveur apache, avec ton script PHP,
comment tu vas demarrer apache, vu que le PHP est generalement executé par apache ?
[^] # Re: je vais dire une betise mais...
Posté par Finn . Évalué à 1.
Le but étant de down le service httpd :)
C'est volontaire et voulu ! :p
[^] # Re: je vais dire une betise mais...
Posté par NeoX . Évalué à 3.
oui, ca j'ai bien compris
mais si tu le down, tu perds tout controle sur la machine
comment tu le demarres alors à distance ?
parce que si tu as une autre methode pour le demarrer à distance, autant utiliser la meme methode pour faire le stop.
# Merci!
Posté par Finn . Évalué à 2.
Merci à tous !
J'ai réussi grâce à vous et en plus j'ai eu de la documentation sur la sécurité !
Vous êtes géniaux !
Merci infiniment !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.