2017-07-27 4 views
0

Je cours un serveur CentOS 7, et je veux pouvoir Ban ou Unban certain IP avec Fail2ban.PHP exec() à un et Unbain IP avec fail2ban

Cependant il ne fonctionne pas quand je lance le code ci-dessous:

$exec = exec('sudo fail2ban-client set apache banip 0.0.0.0', $output, $return); 

var_dump($exec);  
var_dump($output); 
var_dump($return); 

Ai-je besoin des autorisations spéciales pour PHP est que la raison pour laquelle il ne fonctionnera pas?

La variable $return crache 1 lorsque je l'exécute. Je sais que c'est Successful

Alors que $output ne renvoie rien.

+0

Avez-vous vérifier ce fil: https://serverfault.com/questions/285256/how-to-unban- an-ip-correctement-avec-fail2ban/475117? –

+0

Les commandes fonctionnent dans SSH en tant que sudo. Ils ne font pas à travers exec ... Je devine que c'est un problème de sudo – Borsn

Répondre

1

Je suppose que vous avez besoin d'un mot de passe pour sudo. Si vous avez un utilisateur root et cela est bien le cas, vous devez le faire comme ça:

$command = 'sudo -u root -S fail2ban-client set apache banip 0.0.0.0 < yourpass.key'; 

$exec = exec($command, $output, $return); 

var_dump($exec);  
var_dump($output); 
var_dump($return); 


yourpass.key est un fichier contenant le mot de passe root. Comme je l'ai fait ci-dessus, le fichier de mot de passe doit être dans le même répertoire que le script PHP. Cependant, vous pouvez changer ce chemin.

Par exemple, si vous voulez stocker le fichier dans /home il suffit d'écrire

$command = 'sudo -u root -S fail2ban-client set apache banip 0.0.0.0 < /home/yourpass.key'; 
+0

Puis-je juste ajouter le mot de passe comme texte? Comme ceci: '' sudo -u root -S fail2ban-client set apache banip 0.0.0.0 Borsn

+0

La connexion de l'utilisateur 'root' est désactivée. Un autre utilisateur doit être connecté, puis 'su'. Cependant php fonctionne en interne donc il devrait le laisser root. – Borsn

+0

@Borsn Oui cela fonctionne, mais je ne le recommanderais pas comme un problème de sécurité. Si vous voulez toujours, faites-le comme ceci: ''sudo -u root -S fail2ban-client set Apache banip 0.0.0.0 << password123'' Aussi, je suis sûr que vous ne pourrez pas utiliser l'utilisateur root dans PHP si c'est désactivé. Rappelez-vous: Exec appelle toujours un shell normal. – NullDev