Anzeige:
Ergebnis 1 bis 8 von 8

Thema: eigenes Serverconfig Script via PHP

  1. #1
    Registrierter Benutzer
    Registriert seit
    07.01.2011
    Beiträge
    3

    eigenes Serverconfig Script via PHP

    Hallo,

    ich möchte gerne einige Dinge eines Servers per PHP-Web-Frontend administrieren.
    In meinem Fall möchte ich vor allem erstmal Virtual-Hosts einrichten/löschen/ändern. Dazu wären Änderungsrechte in apache2/sites-available/ und Ausführungsrechte für a2ensite, a2dissite und apache reload nötig.

    Ich wüsste gerne von euch, welche Sicherheitskonzepte in so einem Fall sinnvoll wären... Port, HTTPS, root-Rechte?!
    Es gibt ja bereits Lösungen wie Webmin bzw. die "professionellen": Confixx, Paralles Confixx und weiß der Geier noch was alles... aber ich hätte nur einige wenige Funktionen davon. Später sollte es dann halt mit einem eigenen Kundenverwaltungstool vereint werden.

    Vielen Dank!

    Ahso... fast vergessen in /var/www/.... sollten dann noch entsprechende Verzeichnisse (htdocs, logs, cgi-bin usw.) angelegt werden können.
    Geändert von nepda (29-01-2011 um 16:19 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Ziemlich umfangreich Deine Frage, die wir Dir so garantiert leider nicht beantworten können.
    Nur soweit von mir:
    - Du solltest spezielle Benutzer dafür anlegen.
    - Dann Skripte erstellen die die gesammte Arbeit vollrichten und diese mit speziellen Rechten ausstatten z.B: Benutzer www x-Rechte, aber keine r,w Rechte. So hast Du eine bessere Kontrolle darüber. Gefährlich bleibt es aber trotzdem!
    - Passwörter nie in Reinschrift abspeichern.
    - Nicht mit Dateien arbeiten die von anderen auch gebraucht werden, z.B.: /etc/apache/*", sondern darin auf andere verlinken. Oder am besten für jeden gleich ein eigenen Apache.
    - Und eine ordentliche Firewall dabei nicht vergessen! Sie wird auch nicht all Deine Probleme lösen können, sondern nur mildern.

    Du benötigst dabei eine Menge Erfahrung in der Administration von Servern!
    Geändert von dml (31-01-2011 um 13:56 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    18.04.2008
    Beiträge
    59
    Rein theoretisch könnte man in einem passwortgeschützten Bereich
    (bspw. .htaccess oder cookies) sämtliche erwähnten Befehle über php's shell exec funktionen wie "system" absetzen,
    praktisch läuft dein WebServer nicht mit Adminrechten, folglich auch das php skript nicht,
    da würde ich die erste Hürde sehen (unabhängig von den erforderlichen admin skills, wie schon von dml beschrieben).
    Das Webinterface ist eben meist nur ein Teil der Aufgabe,
    z.B. könnte man über php und webserver nur eine Datenbank füttern
    und diese Datenbank wird von einem berechtigten Programm oder Daemon (kann auch in php sein, muss aber mit entsprechenden Rechten ausgeführt werden) genutzt um entsprechende Tasks auszuführen (Beispiel: http://www.openvcp.org/ ).
    Geändert von zenobic (01-02-2011 um 14:05 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Ups! Ich sehe gerade, das Du php als Skriptsprache anwenden möchtest, das würde ich lieber nicht machen. PHP kann zum Beispiel von Apache interpretiert werden und so sind die Skripte viel zu leicht aus dem Internet aufzurufen. Das finde ich zu gefährlich. Schaue lieber ob du Shell-Skripte schreiben kannst, und diese via php aufrufen.
    Ansonsten, jeder hat einmal angefangen und eine Fehlerquote beim Lernen ist völlig normal. Jeder Systemadministrator musste auch vorher testen und probieren bis er es richtig konnte, wobei sein Theorieanteil aber wahrscheinlich höher war. Doch das ist nicht so schlimm, wenn man dabei etwas lernt.
    Geändert von dml (01-02-2011 um 14:04 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    07.01.2011
    Beiträge
    3
    Vielen Dank dml und zenobic!

    - ich erstelle vermutlich Shell-Skripte, die ich dann "per PHP-exec" mit entsprechenden Parametern aufrufe.
    - Passwörter nie in Reinschrift abspeichern -> ist eine selbstverständlichkeit , Tokens, Salts und User-Input-Validation...
    - das mit den symbolischen Links ist noch nicht konkret in meiner Planung gewesen, hört sich aber gut an. Warum ich gleich einen eigenen Apache-Prozess laufen lassen sollte, versteh ich nicht, darfst du mich natürlich gern aufklären.
    - Firewall ist installiert, noch nicht richtig konfiguriert, wird aber bisdahin passiert sein. Bzw. bisdahin werde ich mich damit etwas besser auskennen.

    Die Erfahrung hoffe ich, dass ich die dabei bekomme. Ein ganz bisschen habe ich schon.

    Das openVCP werde ich mir mal genauer ansehen und evtl. die Sourcen durchsehen, ob sich da übernehmbare Sicherheitskonzepte erkennen lassen.

  6. #6
    Registrierter Benutzer
    Registriert seit
    18.04.2008
    Beiträge
    59
    Zitat Zitat von nepda Beitrag anzeigen
    Vielen Dank dml und zenobic!
    - ich erstelle vermutlich Shell-Skripte, die ich dann "per PHP-exec" mit entsprechenden Parametern aufrufe.
    Also im Gegensatz zu dml bin ich der Meinung, dass man auch diese Skripte in PHP verfassen kann. Ob aus dem Docuemt Root ein Shell- oder PHP Skript aufgerufen wird, Inputvalidierung ist dann sowieso ein Muss. Diese Skripte sollten nicht im DocumentRoot liegen, aber selbst wenn, wenn das Verzeichniss .htaccess oder mit einer kurzen Authentifizierungs Kontrolle geschützt ist, können diese Skripte auch nicht einfach ausgeführt werden .

    Man kann auch mit PHP-Skripten "Shellskriptartig" arbeiten, s. https://github.com/rlerdorf/WePloy/blob/master/ploy.php

    Zitat Zitat von nepda Beitrag anzeigen
    Das openVCP werde ich mir mal genauer ansehen und evtl. die Sourcen durchsehen, ob sich da übernehmbare Sicherheitskonzepte erkennen lassen.
    Habe ich nur wegem dem erwähnten Konzept als Anregung gepostet, da du vermutlich nicht genug Rechte hast um die Tasks direkt von php-skripten auszuführen, auch die aufgerufen Shellskripte erben idR. die Rechte des Webservers.
    Geändert von zenobic (01-02-2011 um 23:15 Uhr)

  7. #7
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    - ein eigener Apache-Prozess ist deshalb sinvoll, da wenn der Prozess von einem Angreifer übernommen wird, dieser nur Zugriff auf die Daten dieses Prozesses hat, endlich also nur auf die Domain des Prozesses. So kannst Du ihn zum Beispiel auch bei einem Angriff deaktvieren (kill) und die anderen laufen weiter....
    - Bei den php-Skripten bleib ich hart. Tut mir Leid zenobic, nichts was auserhalb des Benutzers www, zu dem auch Apache gehört, ist, darf von diesem aufgerufen werden, dafür ist er zu mächtig. Wenn Du ein Skript erstellst, das die Systemarbeit vollrichtet, und dieses von dem Benutzer www nur aufrufen läßt, kannst du sehr gut in das Skript Sicherheitsroutinen einbauen die von www nur eingesehen nicht aber abgeändert werden können. Persöhnlich verwende ich lieber c\c++ Programme dafür, zum einen finde ich bei Skriptspachen die Syntax schlecht und es wird bei einem Programm kein Leserecht benötigt.

    Ansonst viel Erfolg nepda und nicht sauer bei Deinem Versuch einen Server aufzubauen sein, wenn dein Server immer und immer wieder übernommen wird. Bei Jedem Angriff kannst Du auch daraus lernen bzw. erkennen wo der Fehler lag und daraus lernen, und wenn es das Backup'en war.
    Geändert von dml (02-02-2011 um 12:26 Uhr)

  8. #8
    Registrierter Benutzer
    Registriert seit
    18.04.2008
    Beiträge
    59
    Zitat Zitat von dml Beitrag anzeigen
    - Bei den php-Skripten bleib ich hart. Tut mir Leid zenobic, nichts was auserhalb des Benutzers www, zu dem auch Apache gehört, ist, darf von diesem aufgerufen werden, dafür ist er zu mächtig.
    Ich habe mir auf der fosdem 2011 ein Vortrag über secure webinterfaces angehört und er berichtete von dem einbetten des webinterfaces in die Anwendung,
    also auch in den selben Prozess der Hauptanwendung. Das ist überaschenderweise auch nicht der einzige Vortrag mit dieser Idee gewesen.
    Es gibt auch ein anderes Projekt das sogar auf dem eigenen Protokollport der Hauptanwendung (also nicht Port 80/443) mit HTTP arbeitet, aber dies wird jetzt schon etwas offtopic in diesem PHP Subforum.

    @nepda
    Aber auch wenn man Apache oder seinem Webserver vertraut,
    gehe am Besten mit deinen PHP Skripten immer auf HTTPS, also nutze SSL/TLS, jeden Versuch auf deine PHP Skripte über HTTP(Port 80) zuzugreifen, kannst du mit einem redirect auf HTTPS (PORT 443, bzw. _https://_ URL), also auf eine gesicherte Verbindung, mit einem "Location header" umleiten.
    Geändert von zenobic (10-02-2011 um 00:17 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •