nginx / Allgemeine Webserver Fragen

biosphere

New Member
Guten Tag,

nach stundenlangen "Google-durchwühlens" bin ich doch wieder hier gelandet und hätte ein paar Fragen an euch.

Auf meinem VServer (Debian 5) habe ich eine eher kleine Anzahl an verfügbarem Ram, somit bin ich auf die Idee gekommen, den Apachen aussen vor zu lassen und einen schlanken Webserver (namentlich nginx) zu installieren.
Sicherheit ist mir sehr wichtig, darum habe ich die letzten Tage auch damit verbracht mich in die Materie einzulesen und die für mich nötigen Schritte umzusetzen. (Die genauen Schritte zähl ich mal nicht auf, sind sowieso die Standardpunkte.. SSH-Sicherheit, Usersystem, denyhosts, minimale Dienstanzahl etc.)

Nur ein paar Fragen hätte ich bezgl. Webserver noch:
- Wenn ich nginx per Source installiere und mit einem von mir erstellten webserver User laufen lassen möchte, was für Vorraussetzungen muss dieser User haben? (Login per SSH ist nur mehr auf einen anderen, minderprivilegierten User möglich. Ich hätte bei dem besagten User nur noch eingestellt, dass dieser keine Shell hat)
- Um wirklich sicher unterwegs zu sein, lohnt sich sicher auch eine chroot Umgebung für den Webserver. Da ich diesen sowieso schon selbst zusammensetze (die apt-get Version ist mir zu alt), dürfte das doch irgendwie mitgehen... Am Abend werde ich noch ein paar manpages durchblättern, aber könntet ihr mir schon einmal einen generellen Denkanstoß geben?
- Dieser Schritt / Frage wäre optional, aber ich will sie euch mal nicht vorenthalten :). PHP scheint ja eine sehr üble Sache zu sein (im Sinne von allgemeiner Sicherheit und weiters von Skriptsicherheit), darum wollte ich das gleich komplett auslassen und mir lediglich selbst mit statischen Seiten bzw. einer CGI / FastCGI Einbindung mit einer Skriptsprache dynamische Seiten generieren (Frei nach dem Motto, what you see is what you get, halt selbstgemacht :) ) und somit selbst was zusammenbasteln. Haltet ihr das für klug, oder sollte ich doch dem PHP Massendruck nachgeben und versuchen, das sicher zu machen?

Ich hoffe jem. kann mir darauf Antworten geben.

Somit, danke im Vorraus und

Freundliche Grüße
biosphere

PS:
Ich Dümmling aber auch, ich war jetzt schon ziemlich lange nicht mehr hier und habe glatt übersehen, dass es ja auch ein Webserver Subforum gibt, ich bitte um Entschuldigung.
 
Last edited by a moderator:
Ich lass mal die anderen Fragen ausser Acht und spring gleich zu PHP:

Wieso sollte PHP per se unsicherer sein als eine andere Skriptingsprache wie Perl, Python, Ruby, ... ?
Dass so viele Webseiten ueber Exploits infiziert werden liegt nicht an PHP selbst -auch wenn es im Unterbau werkelt- sondern an Designfehler im Sicherheitskonzept der Anwendung selbst. PHP kann man hoechstens zu laxe Sicherheitseinschraenkungen vorwerfen sowie Ideen wie register_globals welche einem Angreifer bei nicht oder initalisierten Variablen das Scheunentor oeffnen.
Die Sprache selbst hingegen hat nicht mehr als durchschnittlich Fehler im Programmcode, und liefert einige sehr leistungsfaehige Einstellungsmoeglichkeiten wie open_basedir und disable_functions mit.
Das ganze gekoppelt mit suexec und restriktiven Benutzer sollte die Umgebung sicherer machen.
 
Danke für die schnelle Antwort!

Die anderen Fragen kann mir sicher noch jem. Anders beantworten :)

Zu deinem Argument:
Ja, das stimmt schon so, wollte auch nicht PHP selbst verteufeln (eher die breitgefächterten Einstellmöglichkeiten und somit die Sicherheitsrisiken), nur hab ich dann plötzlich kein gutes Gefühl mehr beim Benutzen von Skripts Dritter. Ist es wirklich möglich PHP soweit sicher zu machen, dass ein Einbruch nur mehr über einen Fehler im Skript möglich ist? Dann könnte ich wohl auch PHP lernen und verwenden. Das von dir angesprochene suexec, ist das nicht Apache-only? Im Bezug zu sicherem PHP habe ich mal was von suhosin und config Änderungen gelesen.
(Ich konnte schon spüren, dass die letzte Frage im ersten Post die größte Aufmerksam bekommen würde :) )

Danke nocheinmal für die Antwort,

Freundliche Grüße
biosphere
 
Ist es wirklich möglich PHP soweit sicher zu machen, dass ein Einbruch nur mehr über einen Fehler im Skript möglich ist?
Mal doof gefragt: Über was denn sonst? Wenn kein PHP-Skript ausgeführt wird, läuft auch der PHP-Interpreter nicht aktiv. Und er wird sich sicherlich nicht plötzlich entscheiden, etwas völlig anderes zu tun.

Das von dir angesprochene suexec, ist das nicht Apache-only?
Ja, aber ähnliche Mechanismen gibt es für viele Webserver.
 
Hallo,

Oh, das stimmt natürlich :X
Tut mir Leid auf das hätte ich selbst auch kommen können :)

Bzgl. suexec, dann durchforste ich mal die nginx Dokumentation, wird wohl sicher was geben, danke für den Denkanstoß.

Weiters noch zu chroot:

Genügt es tatsächlich den Server in ein eigenes Verzeichniss (mit Struktur etc. natürlich) zu schieben und dort dann mit chroot zu starten?
Oder sollte ich einen gesamten User chrooten, dort den Server installieren (mit Source) und ihn mit diesem User starten.

Und eine Frage ist noch aufgetaucht:
Ich habe jetzt nginx plus Module komplett im Ordner eines Users kompiliert. Mit chown -R hab ich die Rechte auf den entsprechenden User übertragen. Doch nun scheint es so, dass der "Masterprozess" von nginx immer als Root laufen muss und nur die Worker-Threads als webuser laufen (In der Serverconfig eingestellt). Ist das so richtig? :O

Freundliche Grüße
 
Last edited by a moderator:
Back
Top