Root-Befehle von PHP ausführen ... Gibt es einen sicheren Weg?

8

Ich habe darüber nachgedacht, ein kleines webbasiertes Linux Control Panel zu erstellen (nur zum Spaß).

Das erste mögliche Problem, das mir in den Sinn kam, war, dass ich Apache-Benutzern root-level-Berechtigungen geben musste, um diese Befehle auszuführen, was die Sicherheit des gesamten Systems gefährden würde.

Die Installation eines dedizierten Webservers für das System ist nicht wirklich eine Option.

Vielleicht könnte ich eine zweite Apache-Instanz ausführen (die erste für normale Benutzer behalten), aber nicht sicher, wenn möglich.

Also, was denkt ihr? Was sind meine besten Optionen hier?

Vielen Dank im Voraus für eine Eingabe.

EDIT: Ok Leute danke für all die Vorschläge, ich werde sie im Hinterkopf behalten.

    
Crasher 05.05.2012, 21:47
quelle

3 Antworten

5

Schreiben Sie bestimmte Skripts, die als root ausgeführt werden können, und verwenden Sie dazu das setuid-Bit, damit Apache nur diese Skripts als root ausführen kann. IE

%Vor%

Stellen Sie dann sicher, dass das Skript von Ihrem Benutzer root und group'd gehört, unter dem Apache läuft:

%Vor%

Dann lass es als Besitzer laufen:

%Vor%

Und stellen Sie sicher, dass Apache es ausführen kann:

%Vor%     
Paulpro 05.05.2012 21:54
quelle
3

Das Ausführen von root-Befehlen über den Webserver scheint mir eine wahnsinnige Idee zu sein, aber trotzdem.

Sie könnten sudo verwenden, um sicherzustellen, dass Sie keine unerwünschten Befehle ausführen.

Kleines Beispiel aus hier , sudo config:

%Vor%

Und in php:

%Vor%

Stellen Sie sicher, dass alle Argumente korrekt sind und so weiter.

Oder Sie könnten db-Tabelle wie folgt erstellen:

%Vor%

Verwenden Sie PHP, um Befehle zu dieser Tabelle und dem anderen Skript einzufügen, das von einem anderen Benutzer in Cron ausgeführt wird. Sie werden keine Echtzeitergebnisse haben (aber Sie können sie 30 Sekunden alt haben), aber Apache-Benutzer können keinen Befehl direkt benutzen (natürlich können Sie Aktionen beim Lesen von Datensätzen leicht einschränken).

    
Vyktor 05.05.2012 21:59
quelle
1

Ich habe kürzlich ein Projekt veröffentlicht, das es PHP ermöglicht, eine echte Bash-Shell zu erhalten und mit dieser zu interagieren (als root, falls gewünscht), es löst die Einschränkungen von exec () und shell_exec (). Holen Sie es hier: Ссылка

Nach dem Herunterladen würden Sie einfach den folgenden Code verwenden:

%Vor%

Im Hinblick auf die Sicherheit ist es weit besser als Apache als root auszuführen. Aber PHP irgendwo in der Nähe von Root ist immer schwierig.

Das von mir erstellte Projekt erreicht eine Root-Bash-Shell auf zwei Arten:

1) Sie erlauben Apache das Recht, python sudo.

ODER

2) Sie übergeben root-Anmeldedaten an das Objekt jedes Mal, wenn Sie eine Shell mit Root-Setup benötigen.

Wähle dein Gift aus. :) Lesen Sie die Dokumentation.

    
MerlinTheMagic 20.05.2016 10:01
quelle

Tags und Links