Serverdienste via PHP Starten

Bash, Shell, PHP, Python, Perl, CGI
ccfirefox
Posts: 13
Joined: 2006-03-17 08:21

Serverdienste via PHP Starten

Post by ccfirefox » 2006-03-17 08:30

Als Newbe erlaube ich mir mal zu fragen wie aufwendig das wäre einzelne Server Dienste per Website zu starten.

Also Beispiel:

Auf meinem RootServer habe ich einen IRC Bouncer installiert. Nun muss ich um den Bouncer zu starten mich per Putty einloggen und das Programm starten.

So habe ich mehrere Dienste (GameServer, VPNServer, etc.)

Nun wäre es cool diese ganzen Dienste per Knopfdruck auf einer Website zu starten / zu beenden, damit kann auch ein 0815-User den Dienst starten.

Ist das kompliziert?

dnspyder
Posts: 111
Joined: 2006-03-10 07:13
Location: Dortmund

Re: Serverdienste via PHP Starten

Post by dnspyder » 2006-03-17 08:45

Nein.

Hier könnte das Posting auch aufhören, aber ich denke, du hättest schon ganz gerne einen Lösungsansatz, oder?

Wenn du deinem Apache die Rechte gibst, Prozesse zu starten bzw. zu beenden kannst du das realisieren.

PHP kennt für solche Zwecke exec(), system(), passthru() - Manuals lesen, verstehen.

Aber ACHTUNG: Wenn die PHP Scripte nicht vernünftigst (!) gesichert sind, schaffst du dir ein riesenhaftes Sicherheitsloch (was du dir aber schon allein dadurch schaffst, dass du den Apache-User überhaupt so etwas machen lässt.

Also bitte nur umsetzen falls du dir aller Risiken bewusst bist! Wenn es nur um ein bisschen Komfort geht lohnt sich der Aufwand eigentlich nicht.
Wenn es aber tatsächlich um Standard-User handelt, die eigentlich keinen SSH-Zugriff haben sollen... dann wäre das ein probates Mittelchen

ccfirefox
Posts: 13
Joined: 2006-03-17 08:21

Re: Serverdienste via PHP Starten

Post by ccfirefox » 2006-03-17 08:48

Naja, Plesk funktioniert ja im Grunde genauso.

Also wenn ich das PHP Script ausreichend mit einem Passwort schütze, dürfte das doch kein Problem sein oder?

dnspyder
Posts: 111
Joined: 2006-03-10 07:13
Location: Dortmund

Re: Serverdienste via PHP Starten

Post by dnspyder » 2006-03-17 08:50

Prinzipiell nicht. Nur bedenke, dass NIEMAND die Scripte ändern können sollte - außerdem solltest du sicherstellen, dass nur bestimmte Dienste gestartet/beendet/neu gestartet werden können!

ccfirefox
Posts: 13
Joined: 2006-03-17 08:21

Re: Serverdienste via PHP Starten

Post by ccfirefox » 2006-03-17 09:28

ja klar.

Wie das aber nun aber genau geht ist nicht in zwei drei Zeilen erklärt oder?

Also Turorial oder sowas.

dnspyder
Posts: 111
Joined: 2006-03-10 07:13
Location: Dortmund

Re: Serverdienste via PHP Starten

Post by dnspyder » 2006-03-17 09:29

Ähem... PHP Manual... exec(), system(), passthru()

Alles weitere solltest du da finden

thorsten
RSAC
Posts: 732
Joined: 2003-02-01 13:14
Location: Fuldatal

Re: Serverdienste via PHP Starten

Post by thorsten » 2006-03-17 09:43

Sowas würde ich nichtmal auf einem Intranetserver machen!
Richte auf deinem System einen unpreviligierten User ein, der als loginshell ein ncurses basierte Oberfläche hat. Darüber können dann die Dienste genauso gestartet und gestoppt werden. Per sudo kann er dann das Recht dazu erhalten. Oder noch besser es wird nur ein Statusfile erzeugt, welches minütlich geparst wird und dann die entsprechenden Dienste startet.

Ich sehe für den User keinen Unterschied im Starten von FF und ansurfen einer URL oder Starten von Putty und Doppelklicken einer gespeicherten session.
Bei der Sicherheit ist da aber ein enormer Unterschied.

ICH würde es nicht über PHP realisieren. Nur weil etwas möglich ist, ist es nicht gleichzeitig sinnvoll..

dnspyder
Posts: 111
Joined: 2006-03-10 07:13
Location: Dortmund

Re: Serverdienste via PHP Starten

Post by dnspyder » 2006-03-17 10:24

Darum habe ich ja auf die entsprechenden Sicherheitsüberlegungen hingewiesen.

ABER: Es gibt Umgebungen in denen man keine Fremdsoftware installieren kann/darf bzw. die entsprechenden Ports nicht zur Verfügung stehen usw. usf. In einem solchen Fall würde einem eine Browsersteuerung schon weiter helfen.

Und ich erinnere mich noch an ein Projekt in meiner Ausbildung, wo einem Ausbilder die Möglichkeit gegeben werden sollte bestimmte Serverdienste auf einem Linux-Server zu überwachen bzw. ggf. neu zu starten etc.
Da der Ausbilder aka. Lernprozessbegleiter wissenstechnisch nicht mal in der Lage gewesen wäre dies auf einem Windows-Server zu tun, er den Sinn einer SSH-Verbindung bis heute nicht begriffen hat, hat diese Person die Möglichkeit bekommen die relevanten Informationen über ein kleines Webinterface abzufragen.

So, muss jetzt aufhören sonst kommt mir bei der Erinnerung die Galle hoch :-(

lord_pinhead
RSAC
Posts: 830
Joined: 2004-04-26 15:57

Re: Serverdienste via PHP Starten

Post by lord_pinhead » 2006-03-17 11:07

Dem hätte ich einfach Webmin vor die Nase gesetzt und mir Gedanken über den Ausbilder gemacht. Wer sich Ausbilder schimpft sollte auch mehr Wissen als die Auszubildenden, aber egal. Ich persöhnlich würde mir einfach via Bash ein Script schreiben mit ncurses (was ja schon angesprochen wurde) und dem einfach eine verlinkung auf den Desktop machen von Putty, das ganze mit Preshared Keys (bitte mit Passwort) und dann soll er da drüber gehen, viel einfacher und sicherer zu handhaben, braucht man keine Umwege wegen der Sicherheit machen.

Alternativ: Wenn es den unbedingt PHP sein muss, bastel dir eine kleine Datenbank (oder eine Datei) mit den Diensten und lass einfach eine 0 bei nichts tun und eine 1 bei neustarten eintragen, wenn es sein muss noch die Pfad zum neustart Script. Ein Cronjob soll dann die Datenbank auslesen und die Dienste bei bedarf neustarten, das wäre auf jeden Fall viel sicherer als das was du so machen würdest. Du kannst kaum irgendwo ein exec("/etc/init.d/apache restart"); eintragen und beten das nichts passiert. Mit der Methode wo ich meine kannst du wenigstens die schwerwiegendsten Funktionen abschalten wie mail, exec, passthru, system, uvm. , mod_security oder safe_mode anschalten, PHP als (fast)CGI oder gar den ganzen Apachen chrooten ohne das du großartig an Sicherheit einbüßen musst (aber der Aufwand, ne, wäre mir zuviel arbeit)

Da das aber nicht reicht, schau das dein Anmelde Managment gut gefiltert ist und bau nicht sowas wie das hier ein:

Code: Select all

if(admin==1)
echo "eingeloggt";
else
echo "bitte einloggen";
oder irgendso ein schmarrn, davon gibts leider mehr als man denkt. Du solltest auf jeden Fall mal nach PHP Secure Programming oder sowas suchen, nicht das der Schuss nach hinten losgeht, gibt einfach zuviel fehler die einen passieren können. Überleg dir nochmal ob du es nicht anders lösen könntest.

Hoffe du bekommst das einigermassen sicher hin. Ich würde auf jeden Fall mit Händen und Füßen gegen so eine PHP Oberfläche arbeiten.

ccfirefox
Posts: 13
Joined: 2006-03-17 08:21

Re: Serverdienste via PHP Starten

Post by ccfirefox » 2006-03-17 11:17

was ist das mit den ncurses?

sorry, das sagt mir gar nichts.

dnspyder
Posts: 111
Joined: 2006-03-10 07:13
Location: Dortmund

Re: Serverdienste via PHP Starten

Post by dnspyder » 2006-03-17 11:19


ccfirefox
Posts: 13
Joined: 2006-03-17 08:21

Re: Serverdienste via PHP Starten

Post by ccfirefox » 2006-03-17 12:39

oh je, dafür fehlt mir die zeit. dann starte ich halt alle dienste beim server start.