Roebert Stump: keine Befehle ohne Shell!

Hallo,

ich musste eine Webanwendung(Apache, PHP, Mysql) auf einen anderen Server(Linux) umziehen.
Dort sind die Berechtigungen aber etwas anders und jetzt funktioniert hier nix mehr.
Im Log konnte ich sehen, dass er Probleme hat exec aus dem PHP raus auszuführen - die Befehle selber konnte ich an der Shell aber ohne Probleme ausführen (als root) ... nunja es läuft darauf hinaus dass der Nutzer unter dem der Apache läuft(wwwrun) keine Shell hat(aus Sicherheitsgründen, sagte man mir) und dies also nicht ausführen kann. Apache unter root ausführen ist genauso ein Sicherheitsrisiko...

wie komme ich also aus diesem Dilemma raus?

mfg, roebert

--
Please do not confuse what we say with what we think we are saying.
(^_^)
Eternity is a very long time, especially towards the end.
  1. Im Log konnte ich sehen, dass er Probleme hat exec aus dem PHP raus auszuführen - die Befehle selber konnte ich an der Shell aber ohne Probleme ausführen (als root) ... nunja es läuft darauf hinaus dass der Nutzer unter dem der Apache läuft(wwwrun) keine Shell hat(aus Sicherheitsgründen, sagte man mir) und dies also nicht ausführen kann. Apache unter root ausführen ist genauso ein Sicherheitsrisiko...

    wie komme ich also aus diesem Dilemma raus?

    normalerweise sollte apache mit dem benutzer www-data arbeiten und in der gruppe www-data sein

    apache einfach in eine gruppe hängen, in der er shell-zugriff hat (das muss nicht root sein) und die nötigen rechte für das was er tun muss hat

    aus sicherheitsgründen keinen shellzugriff erscheint mir aber etwas fadenscheinig - wenn die rechte entsprechend gesetzt sind, kann der apache-benutzer shell-zugriff haben soviel er will, er darf nur das tun wofür er die rechte auch hat

    leider sieht man viel zu oft diese 777 root/root webserver und leider auch das krasse gegenteil - ein sinnvoller mittelweg ist da viel besser

    1. Tach,

      normalerweise sollte apache mit dem benutzer www-data arbeiten und in der gruppe www-data sein

      nein, der Name des Apache-Users ist frei wählbar und hängt üblicherweise von der verwendeten Distribution ab, www-data ist die standardmäßige Wahl bei Debian, bei Gentoo wäre es apache; weitere übliche Namen sind httpd, http oder auch das vom OP erwähnte wwwrun.

      mfg
      Woodfighter

      1. www-data ist die standardmäßige Wahl bei Debian

        da sieht man mal wieder, wie wenig ich mit nicht-debian zu tun habe - danke für die aufklärung

    2. Mahlzeit,

      apache einfach in eine gruppe hängen, in der er shell-zugriff hat (das muss nicht root sein) und die nötigen rechte für das was er tun muss hat

      Dann kanst du gleich ein Schild aufhängen "Hier ist ein offener Server, bitte hacken".

      aus sicherheitsgründen keinen shellzugriff erscheint mir aber etwas fadenscheinig

      Nein, das ist logisch

      wenn die rechte entsprechend gesetzt sind, kann der apache-benutzer shell-zugriff haben soviel er will, er darf nur das tun wofür er die rechte auch hat

      Auch der Apache hat Bugs

      leider sieht man viel zu oft diese 777 root/root webserver und leider auch das krasse gegenteil - ein sinnvoller mittelweg ist da viel besser

      Am sinnvollsten ist, nur die Rechte zu vergeben die auch gebraucht werden, nicht ein Stück mehr.

      Wenn also ein bestimmtes Programm per exec() aufgerufen werden soll, gehört das in ein chroot, dessen Verzeichnis über open_basedir eingeschränkt ist.

      Allerdings ist es meist so, dass eine Lösung ohne exec() möglich ist und dann sollte diese bevorzugt werden.

      1. Tach,

        Wenn also ein bestimmtes Programm per exec() aufgerufen werden soll, gehört das in ein chroot, dessen Verzeichnis über open_basedir eingeschränkt ist.

        chroot unter Linux ist _kein_ Sicherheitsmerkmal.

        mfg
        Woodfighter

        1. Mahlzeit,

          chroot unter Linux ist _kein_ Sicherheitsmerkmal.

          Ja, das weiss ich. Hab ich das irgendwie behauptet oder suggeriert?

          1. Tach,

            chroot unter Linux ist _kein_ Sicherheitsmerkmal.

            Ja, das weiss ich. Hab ich das irgendwie behauptet oder suggeriert?

            ich denke ja, in einem Thread zu Sicherheitsfragen, erwähnst du chroot als Maßnahme um einen Prozeß einzusperren, erwähnst allerdings nicht, dass der Mehraufwand dafür letztlich keinen Sicherheitsvorteil bietet.

            mfg
            Woodfighter

            1. Mahlzeit,

              ich denke ja, in einem Thread zu Sicherheitsfragen, erwähnst du chroot als Maßnahme um einen Prozeß einzusperren, erwähnst allerdings nicht, dass der Mehraufwand dafür letztlich keinen Sicherheitsvorteil bietet.

              Ja, beim Nachlesen muss ich dir Recht geben. Hab mich da missverständlich ausgedrückt.

      2. Hello,

        ich weiß nicht, was Du da zu bemängeln hast am Apachen.
        Millionen Apache-Server sind aktiv und die laufen üblicherweise mit root-Rechten.
        Ihre Kinder laufen dann allerdings tunlichst unter einen eingeschränkten User.

        Wenn der Apache also so gewichtige Bugs hätte, würde es vermutlich kei Internet per HTTP (oder keinen Apachen) mehr geben, weil sie alle hehackt wären...

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Mahlzeit,

          Millionen Apache-Server sind aktiv und die laufen üblicherweise mit root-Rechten.

          Wo ist das denn üblich?
          Bitte um Angabe der Distribution und der Anbieter die den Apache als Root betreiben.

          Wenn der Apache also so gewichtige Bugs hätte, würde es vermutlich kei Internet per HTTP (oder keinen Apachen) mehr geben, weil sie alle hehackt wären...

          Die letzten Worte eines Admins, bevor eine neue Sicherheitslücke aufgetaucht ist ...

          1. Tach,

            Millionen Apache-Server sind aktiv und die laufen üblicherweise mit root-Rechten.

            Wo ist das denn üblich?
            Bitte um Angabe der Distribution und der Anbieter die den Apache als Root betreiben.

            unter allen Linuxen, wenn ein Port unter 1024 genutzt wird: http://httpd.apache.org/docs/2.0/de/invoking.html#startup.

            mfg
            Woodfighter

    3. Hallo.

      leider sieht man viel zu oft diese 777 root/root webserve

      Wenn du dich so schön wiederholst, mach ich das eben auch.
      MfG, at

  2. Mahlzeit,

    wie komme ich also aus diesem Dilemma raus?

    Ich rate jetzt mal, Confixx oder Plesk.
    Da existiert ein Verzeichnis, indem du einen Link ablegen kannst zu dem Programm, das du ausführen willst.
    Dieses Verzeichnis wird per open_basedir() beschränkt und daher ist dieses für den Webserver praktisch das Root.
    Genaueres sagt die phpinfo()

  3. Hello,

    Im Log konnte ich sehen, dass er Probleme hat exec aus dem PHP raus auszuführen - die Befehle selber konnte ich an der Shell aber ohne Probleme ausführen (als root) ... nunja es läuft darauf hinaus dass der Nutzer unter dem der Apache läuft(wwwrun) keine Shell hat(aus Sicherheitsgründen, sagte man mir) und dies also nicht ausführen kann. Apache unter root ausführen ist genauso ein Sicherheitsrisiko...

    Das sind lauter verschiedene Schuhe.
    Linux oder elches OS sonst darunter liegt, stellt eine API für den Programmierer zur Verfügung. mit der dann alle Betriebssystembefehle benutzt werden können in einem Programm, was dieser zu erstellen hat.

    Das kann entweder eine Shell oder ein Interpreter mit integrierter Möglichkeit für Systemaufrufe oder auch ein kompiliertes Programm sein.

    Wenn der User des Apachen keine Shell hat, hat das also nichts damit zu tun, ob die im Programm (Apchen oder hier PHP-Modul) benutzen Systemaufrufe funktionieren oder nicht. Das regelt das Programm typischerweise selber. Entweder die Aufrufe sind überhaupt nicht vorgesehen, oder sie sind disabled, was hier am wahrscheinslichsten erscheint.

    Mit _zusätzlichen_ Maßnahmen kann man heute auch noch an anderer Stelle verhindern, dass ein Programm Systemaufrufe vornimmt. Da fällt mir das Schutzprogramm apparmor ein...

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de