Über Webserver Shell Scripte mit Root Rechten aufrufen

Bash, Shell, PHP, Python, Perl, CGI
casper99
Posts: 18
Joined: 2006-05-04 07:56

Über Webserver Shell Scripte mit Root Rechten aufrufen

Post by casper99 »

Hallo Leute,

ich weiss, daß vielen von Euch schon sie Überschrift die Schweissperlen auf die Stirn treibt. Ich habe jedoch mal ne Idee und würde gern Eure Meinung dazu hören.

Ich lasse meinen Webserver mit unterschiedlichen Usern laufen (per suexec).
Gehen wir nun mal davon aus, der Server einer Seite xxx.de läuft mit dem user web100. Nun möchte ich daß nur 1 einziges PHP Script eine administrative Aufgabe auf meinem Rootserver ausführt, das Root Rechte benötigt.

Ich habe mir da so gedacht:

1. PHP Script (Aufruf durch web100) ruft per system("scriptx"); auf
2. Die Datei "scriptx" ist eine Binärdatei (in ANSI-C) geschriben
und gehört Root, mit gesetztem SUID-Bit, sodaß sie mit Root-Rechten läuft.
3. Diese Datei führt nun eine Systemoperation durch, dessen Parameter sie sich aus einer MYSQL Datenbank holt.

Eigentlich sollte doch diese Lösung kein Einfallstor bieten, da ich ja die Funktion aufrufe, ohne irgendwelche Parameter mitzuliefern, die eventuell durch Usereingaben manipuliert worden sein könnte. Oder?

Eigentlich ist das doch ne ganz sichere Angelegenheit, oder was meint Ihr dazu?? Sicherheit sollte nämlich neben dem Konfort weit oben stehen!!!
User avatar
Joe User
Project Manager
Project Manager
Posts: 11174
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Über Webserver Shell Scripte mit Root Rechten aufrufen

Post by Joe User »

Mache aus Deinem C-Programm ein C-CGI und lege dieses in ein per Auth (.htpasswd) geschütztes Verzeichnis auf dem HTTPSd. Und selbst dann sollten noch weitere Sicherheitsmassnamen ergriffen werden...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
casper99
Posts: 18
Joined: 2006-05-04 07:56

Re: Über Webserver Shell Scripte mit Root Rechten aufrufen

Post by casper99 »

Naja, es ist ja u.a. dafür gedacht, daß sich z.b. normale User Ihre Systempasswörter also z.B. für FTP Login verändern dürfen.
Da sollte das Script automatisiert ablaufen, ohne weitere Passworteingaben seitens des Users. Man kommt sowieso erst nach Passworteingabe in das PHP-Menüprogramm um diese Seite aufrufen zu können.

Die Seite ist nur über HTTPS zu erreichen, was mir aber doch aber auch nur insofern hilft, daß niemand die Logins mitlesen kann.?!

Welche zusätzlichen Maßnahmen meinst Du?

Meinst Du es wäre sicherer und wenn, warum, wenn lieber ein Cronscript ab und zu läuft und die Aufgaben aus der Datenbank liest?

PS: SETUID funktioniert doch nur mit Binär-Kompilierten Programmen???!
Habe das mit nem Shellscript probiert, und das ging nicht!!!
User avatar
daemotron
Administrator
Administrator
Posts: 2639
Joined: 2004-01-21 17:44

Re: Über Webserver Shell Scripte mit Root Rechten aufrufen

Post by daemotron »

IMHO bietet die Lösung mit dem Cron-Job die größte Sicherheit - das PHP-Skript spricht nur mit MySQL und bleibt schön vom System weg. Das würde z. B. auch mit einer chrooted-Umgebung für den httpd funktionieren. Unschön daran ist nur, dass das Konstrukt nicht online arbeitet - der Cronjob müsste also recht häufig angestoßen werden.

Etwas eleganter, aber weniger strikt in der Trennung von root und dem "Rest der Welt" wäre die Nutzung von sudo - wenn Du für die Ausführung des PHP-Skripts (oder CGIs) einen separaten Nutzer verwendest, kannst Du diesem so die Ausführung bestimmter Befehle erlauben. Dadurch wird nicht der User root selbst bemüht, und der eingesetzte User kann über die erlaubten Befehle hinaus keinen weiteren Schaden anrichten, den sonst nur root hinbekommt.
knifegunaxe
Posts: 61
Joined: 2006-09-05 08:47

Re: Über Webserver Shell Scripte mit Root Rechten aufrufen

Post by knifegunaxe »

Mach doch die User für den FTP in eine MySQL Datenbank, dann kannst du über php Queries laufen lassen. Stichwort virtuelle User
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Über Webserver Shell Scripte mit Root Rechten aufrufen

Post by oxygen »

sudo statt suid wäre wohl die einfachere Lösung. btw: suid funktioniert nicht mit Scripts das stimmt schon. Man kann aber auch ein kompiliertes Programm per CGI benutzten.