EDIT # 2 23. Juli 2015: Auf der Suche nach einer neuen Antwort, die ein wichtiges Sicherheitselement identifiziert, das in der folgenden Konfiguration übersehen wurde, oder Grund zur Annahme geben kann, dass alles abgedeckt ist.
EDIT # 3 29. Juli 2015: Ich bin besonders auf der Suche nach einer möglichen Fehlkonfiguration, z. B. weil ich versehentlich etwas zulasse, das ausgenutzt werden könnte, um Sicherheitsbeschränkungen zu umgehen, oder schlimmer noch, etwas offen lässt.
Dies ist ein Setup für mehrere Sites / gemeinsam genutztes Hosting. Wir möchten eine gemeinsam genutzte Apache-Instanz verwenden (dh unter einem Benutzerkonto ausführen), wobei jedoch PHP / CGI als Benutzer jeder Website ausgeführt wird, um sicherzustellen, dass keine Site auf die Dateien einer anderen Site zugreifen kann Stellen Sie sicher, dass nichts übersehen wird (z. B. wenn wir nichts über die Verhinderung von Symlink-Angriffen wissen).
Folgendes habe ich bisher:
- Stellen Sie sicher, dass PHP-Skripte als Linux-Benutzerkonto und -Gruppe der Website ausgeführt werden und entweder inhaftiert sind (z. B. mithilfe von CageFS) oder zumindest mithilfe von Linux-Dateisystemberechtigungen ordnungsgemäß eingeschränkt sind.
- Verwenden Sie suexec, um sicherzustellen, dass CGI-Skripte nicht als Apache-Benutzer ausgeführt werden können.
- Wenn Sie serverseitige Include-Unterstützung benötigen (z. B. in HTML-Dateien), verwenden
Options IncludesNOEXEC
Sie diese Option, um zu verhindern, dass CGI ausgeführt werden kann, wenn Sie dies nicht erwarten (obwohl dies bei Verwendung von suexec nicht so wichtig sein sollte). - Haben Sie einen Symlink-Angriffsschutz, damit ein Hacker Apache nicht dazu verleiten kann, die Dateien einer anderen Website als Klartext bereitzustellen und ausnutzbare Informationen wie DB-Passwörter offenzulegen.
- Konfigurieren Sie
AllowOverride
/,AllowOverrideList
um nur Anweisungen zuzulassen, die ein Hacker nicht ausnutzen konnte. Ich denke, dies ist weniger besorgniserregend, wenn die oben genannten Punkte ordnungsgemäß ausgeführt werden.
Ich würde mich für MPM ITK entscheiden, wenn es nicht so langsam wäre und nicht als Root ausgeführt würde, aber wir möchten speziell einen gemeinsam genutzten Apache verwenden und dennoch sicherstellen, dass dies sicher durchgeführt wird.
Ich habe http://httpd.apache.org/docs/2.4/misc/security_tips.html gefunden , aber es war zu diesem Thema nicht umfassend.
Wenn es hilfreich ist zu wissen, planen wir die Verwendung von CloudLinux mit CageFS und mod_lsapi.
Gibt es noch etwas zu tun oder zu wissen?
BEARBEITEN 20. Juli 2015: Die Leute haben einige gute alternative Lösungen eingereicht, die im Allgemeinen wertvoll sind. Bitte beachten Sie jedoch, dass diese Frage nur die Sicherheit eines gemeinsam genutzten Apache-Setups betrifft. Konkret gibt es etwas, das oben nicht behandelt wurde und das es einer Site ermöglichen könnte, auf die Dateien einer anderen Site zuzugreifen oder andere Sites irgendwie zu gefährden?
Vielen Dank!