Ist es sicher, Apache-Benutzern das Eigentum an Verzeichnissen und Dateien für Wordpress zu gewähren?

7

Ich richte derzeit WordPress auf einem Ubuntu-Server 12 ein. Alles läuft einwandfrei, aber es gibt ein Problem beim automatischen Aktualisieren und Hochladen von Medien über WP, da der Apache-Benutzer "www-data" keine Berechtigung zum Schreiben in die Verzeichnisse hat. "user1" hat die volle Berechtigung

Alle meine Verzeichnisse haben Berechtigungen von 0755 und Dateien 644

Meine Verzeichnisse sind wie folgt eingerichtet:

/home/user1/public_html

Alle WP-Dateien und -Verzeichnisse befinden sich in "public_html".

Um das automatische Aktualisieren und Hochladen von Medien zu umgehen, habe ich den folgenden Verzeichnissen den Apache-Benutzerbesitz gewährt

sudo chown www-data:www-data wp-content -R
sudo chown www-data:www-data wp-includes -R
sudo chown www-data:www-data wp-admin -R

Ich würde gerne wissen, wie sicher dies ist und wenn es nicht sicher ist, was wäre die beste Lösung?

Dadurch kann ich alle Dateien und Verzeichnisse von Benutzer1 behalten und wp weiterhin in der Lage sein, Medien automatisch zu aktualisieren und hochzuladen

Oudin
quelle

Antworten:

3

Ob Sie dies als sicher (nicht sicher) betrachten können, hängt meiner Meinung nach stark von Ihrem Anwendungsfall, Ihren Benutzern und Ihrer Umgebung ab. Lassen Sie es mich so sagen: Wenn Sie planen, Webhosting für zahlende Kunden bereitzustellen und sich nicht zufällig in einer geschlossenen Infrastruktur oder hinter einem unglaublich hoch entwickelten WAF oder IPS befinden , würden Sie dies wahrscheinlich als unsicher betrachten. Hier beziehe ich mich nicht nur auf die beschreibbaren Verzeichnisse, sondern auf die Verwendung von mod_php, was Sie anscheinend tun. Wenn Sie jedoch nur ein kleines Webhosting für Ihre Freunde und Familie einrichten, mit zehn Treffern pro Woche rechnen und wirklich keine Zeit haben, wird es Ihnen wahrscheinlich gut gehen (ich würde jedoch empfehlen, in diesem Fall einen verfügbaren gemeinsam genutzten Hoster zu verwenden ).

Sicherere Alternativen führen die PHP-Ausführung jedes Benutzers unter seinen eigenen Benutzerrechten aus. Die häufigsten Beispiele wären:

  • suPHP , das ziemlich sicher ist, aber langsam wie Schneckenpost.
  • Apache + MPM ITK , das recht einfach einzurichten, aber nicht so häufig getestet ist (im Gegensatz zu MPM Worker oder MPM Prefork ). Persönlich würde ich dies nicht in einer Produktionsumgebung verwenden.
  • Eine FastCGI + PHP-Umgebung, entweder mit mod_fastcgi oder mod_fcgid .

Abhängig von Ihren Benutzern / Ihrer Umgebung / ... würde ich empfehlen, Ihre Box zu sperren . Im FastCGI-Szenario sollten Sie chroot verwenden und könnten Ihr System mithilfe von Linux-Sicherheitsverbesserungen (z. B. 1 , 2 , 3 ) weiter härten .

Aber noch einmal: Sie können wirklich viel Zeit damit verbringen. Erwägen Sie die Verwendung einer gemeinsam gehosteten Umgebung von einem guten Hoster, der dies für Sie erledigt, bevor Sie eine unsichere Box in freier Wildbahn platzieren.

ukautz
quelle
Vielen Dank für Ihre informative Antwort. Ich richte diesen Server auf Amazon EC2 so ein, dass ein dedizierter Server Kunden keinen gemeinsam genutzten Host anbietet. Meine Produktionsstätte befindet sich derzeit auf einem gemeinsam genutzten Host, aber aufgrund von Einschränkungen kann ich nicht skalieren, da ich zusätzliche Nachforschungen zu Ihren vorgeschlagenen Alternativen
Oudin,
Wenn Sie ein System mit einer Website / einem Benutzer einrichten, ist mod_php wahrscheinlich eine akzeptable Lösung (in Bezug auf Einfachheit vs. Leistung vs. Sicherheit). Abhängig von Ihren Linux-Kenntnissen wäre eine vollständig gesperrte Box (siehe oben) natürlich immer noch besser. Das Sichern einer einzelnen App ist jedoch möglicherweise einfacher. Mein Ansatz wäre (neben dem Patchen, Patchen, Patchen) eine robuste WAF. Wenn Sie einen Ausgangspunkt benötigen, versuchen Sie dies: blogsecurity.net/wordpress/…
ukautz
Ich habe nicht die rep , um kleinere Änderungen vornehmen, aber ich glaube , Sie mittlere Produktionsumgebung nicht produktiv ?
ein CVn
3

Ich bin mir fast sicher, dass ich dies bereits beantwortet habe, aber ich kann die Frage, auf die ich verlinken kann, nicht finden.

Sie sollten nicht fragen, ob es sicher ist, wenn Sie nnn tun. Sicherheit ist niemals ein Binärwert, und Sie müssen fast immer eine detailliertere Analyse durchführen. Die Frage, die Sie stellen sollten, ist nnn mehr oder weniger sicher als die Alternative.

Ja, das Ändern des Besitzes von Dateien, damit Apache darauf schreiben kann, erhöht das Potenzial für Probleme, aber das ist einfach nicht der einzige Faktor.

Ein viel größeres Problem, wenn Sie den Eigentümer nicht ändern, werden Sie bereit sein, sich zu bemühen, die Webanwendung auf dem neuesten Stand und gepatcht zu halten. Wenn Sie nicht über die Tools oder die Fähigkeit verfügen, es auf dem neuesten Stand zu halten und nur über die CLI zu patchen, ist dies ein potenziell viel größeres Sicherheitsproblem, als die Probleme, die Sie möglicherweise aufgrund der zulässigeren Dateisystemberechtigungen haben .

Ich habe keinen Link / Verweis, aber ich glaube, ich habe irgendwo gelesen, dass viele Dinge kompromittiert sind, weil Patches für bekannte Schwachstellen nicht rechtzeitig angewendet werden. OTOH, schwache Dateisystemberechtigungen kommen normalerweise nur aufgrund eines Fehlers / Problems in einer Webanwendung ins Spiel.

Wenn Sie eine extrem starke paranoide Sicherheit benötigen, haben Sie im Idealfall extrem gesperrte Berechtigungen und Anwendungen, die sehr aktuell sind. Wenn ich jedoch eine auswählen müsste, würde ich im Allgemeinen versuchen, alle Patches zu installieren.

Natürlich müssen Sie Ihre Entscheidung auf der Grundlage der potenziellen Risiken treffen und ein realistisches Verständnis dafür haben, wie Sie das System aktualisieren und warten werden.

Zoredache
quelle
Vielen Dank für Ihre Antwort. Ich bin mir bewusst, dass viele Systeme und Apps aufgrund ihrer Veraltetheit kompromittiert sind. Daher habe ich versucht, das automatische Update zum Laufen zu bringen, um sicherzustellen, dass die Zeit zum Anwenden dieser Patches / Updates verstrichen ist signifikant reduziert. Ich habe nicht gefragt, ob "nnn mehr oder weniger sicher ist als die Alternative", weil ich keine Alternativen zum Vergleich kenne. Die von mir vorgestellte Lösung kam nach Stunden und Tagen des Versuchs und Irrtums. Wenn Sie Alternativen kennen, teilen Sie diese bitte mit
Oudin
0

BEARBEITEN: Die entfernte Lösung, von der jeder sagt, sie sei "schlecht".

Lassen Sie diese an Ort und Stelle, die jeder ignorierte, weil er nicht über die ersten fünf Zeilen hinaus lesen konnte:

Hier ist die Alternative, mit der ich gerade experimentiere:

$ chown someuser:other-users somefolder
$ chmod 770 somefolder

Dies gibt dem Eigentümer (someuser) und allen Mitgliedern der Gruppe "andere Benutzer" (wer auch immer "someuser" entscheidet, Berechtigungen zu erteilen) Lese- / Schreib- / Ausführungsberechtigungen. Führen Sie chmod 660 für Dateien aus.

Buttle Butkus
quelle
1
Das OP ist besorgt darüber, Dateien für den Webserver gruppenbeschreibbar zu machen. Es ist definitiv nicht besser, diese Dateien weltweit beschreibbar zu machen, und ich würde tatsächlich argumentieren, dass es viel, viel schlimmer ist. In einigen Situationen sind die Befehle, die Sie dazu vorschlagen, selbst destruktiv (sie können Berechtigungen entfernen, insbesondere Berechtigungen zum Ausführen von Dateien).
Ein CVn
Erstens, warum sollten Sie dort überhaupt ausführbare Dateien haben? "Ja wirklich?" 2. siehe den 2. Teil meiner Antwort. Und ja, ich denke, die 777-Berechtigungen sind irgendwie schlecht, aber sie sind eine Lösung, die ich ständig sehe. Sehen Sie sich noch einmal meine 2. Lösung an.
Buttle Butkus
Nur weil es sich um eine "Lösung" handelt, die Sie ständig sehen, bedeutet dies nicht, dass sie die beste Vorgehensweise ist oder korrekt ist. Sie sollten niemals ausführbare Weltberechtigungen (oder andere Weltberechtigungen) erteilen, es sei denn, Sie müssen dies ausdrücklich tun. Dies öffnet das System für wichtige potenzielle Exploits.
Tacotuesday
Ich stimme dir zu nojak. Das habe ich in meinem Beitrag gesagt, es sei keine gute Praxis. Vielleicht bist du nicht so weit gekommen. Ich habe diese Lösung gelöscht, weil anscheinend niemand in der Lage war, an meiner zweiten Lösung vorbei zu lesen, was wahrscheinlich etwas besser ist. Nein?
Buttle Butkus
Anscheinend habe ich das vermisst. Ich bin froh, dass Sie es entfernt haben, damit zukünftige Leser diese Idee nicht einmal in den Kopf bekommen.
Tacotuesday
-2

Weil Sie die Konfiguration unter mod_php ausführen. Sie müssen den Benutzer alle 1 Minute per Cron chown.

Sie müssen jedoch die Konfiguration unter suphp für Ihr Problem ausführen

tquang
quelle