Ich möchte verschiedene PHP-Anwendungen auf meinem SL6.4-Webserver (RHEL 6.4-Neuerstellung) unterteilen, damit sie nicht auf die Daten der anderen zugreifen können. Es scheint, dass SELinux dazu in der Lage sein könnte, aber ich bin mir bei den Details nicht sicher. Meine Frage besteht aus zwei Teilen:
- Wie verwaltet SElinux PHP-Skripte, die im Apache-Prozess mit mod_php ausgeführt werden? Tritt der Prozess beim Ausführen des PHP-Skripts irgendwie in den Skriptkontext ein oder funktioniert dies nur, wenn Skripte über CGI oder FastCGI außer Betrieb ausgeführt werden? Wenn es zum Ausführen des PHP-Skripts in einen Skriptkontext übergeht, was verhindert, dass ein PHP-Fehler einen Übergang zurück zum Haupt-httpd-Kontext auslöst? Wenn ich eine alternative PHP-Bereitstellungsmethode benötige, wäre das gut zu wissen.
- Wie kann ich Skripte / Anwendungen trennen, damit TinyTinyRSS nicht auf Dinge zugreifen kann, die OpenCloud gehören? Es sieht so aus, als ob ich dazu in der Lage sein sollte, indem ich deaktiviere
httpd_unified
und separate Kontextehttpd_ttrss_*
undhttpd_opencloud_*
Sätze von Kontexten parallel zuhttpd_user_foo
und bereitstellehttpd_sys_foo
. Angesichts der Anzahl der Apps, die ich verwenden kann, kann es sogar ausreichen, die Unterscheidung zwischen System und Benutzer ohne neue Kontexte zu verwenden. Ich habe jedoch nicht viel Dokumentation darüber gefunden, welche Auswirkungen das Ausschalten genauhttpd_unified
hat oder wie verschiedene HTTP-Kontexte eingerichtet werden. Besonders bei PHP-Skripten läuft viamod_php
.
Ich kann problemlos neue SELinux-Richtlinienmodule erstellen, möchte jedoch eine Dokumentation, die darauf hinweist, was die neue Richtlinie bewirken muss und wie sie sich gut in die SELinux-Richtlinie integrieren lässt.
Wenn es ein verlorener Grund ist, diese Trennung nur mit SELinux zu versuchen, und ich separate httpds in verschiedenen Kontexten oder möglicherweise sogar LXC-Containern hochfahren muss, wäre dies ebenfalls eine nützliche Antwort.