Apache-Vhost-Berechtigungstrennung mit mod_selinux

Apache-Vhost-Berechtigungstrennung mit mod_selinux

ich habe 2Websites/Appsauf einem Server; eine proprietäre App und Nextcloud. Nextcloud wird das files_externalSpeicher-Plugin verwenden, das ermöglichtlokalHalterungen, aber ichNICHTmöchte, dass es den Quellcode der proprietären App durchsuchen und anzeigen kann … mod_selinuxund somit auch Sedomain-Kinder.

Ich verwende es mod_selinux, um Domänenuntergeordnete zu erstellen, und weise jeder Site eine untergeordnete ID zu und beschrifte ihre jeweiligen App- und Datenverzeichnisse entsprechend in ihren Vhost-Definitionen …

httpd.conf

selinuxServerDomain *:s0-s0:c0.c100

proprietär.vhost.conf

selinuxDomainVal *:s0:c10

nextcloud.vhost.conf

selinuxDomainVal *:s0:c20

Auf das App-Verzeichnis, in dem sich der Code befindet, werden die folgenden Berechtigungen und Kontexte angewendet ...

drwxr-x---.  4 apache apache unconfined_u:object_r:httpd_sys_content_t:s0:c10 4096 Jan 17 17:02 proprietary_app_dir
drwxr-x---. 15 apache apache unconfined_u:object_r:httpd_sys_content_t:s0:c20 4096 Jan 20 08:09 nextcloud

Das Problem... Alles läuft, aber das Problem ist, dass ich den proprietären App-Ordner immer noch mit Nextcloud durchsuchen kann, obwohl das Verzeichnis der proprietären App einen Domänenkontext hat, der auf beschränkt ist s0:c10, und soweit der virtuelle Host definiert ist, Nextcloudsollenausgeführt werden als s0:c20.

Ich weiß, dass SELinux seinen Job macht, weil ich Ordner wie /etc nicht anzeigen kann, obwohlandereBenutzer haben Leseberechtigung dafür, ich kann nur Ordner mit den entsprechenden Kontexten anzeigen, httpd_sys_(rw_)content_twie es sein sollte.

Ich hätte erwartet, dass ein untergeordneter Prozess von c20nicht in der Lage sein sollte, einen Ordner zu lesen, der nach anfordert c10. Das Einzige, was mir also einfällt, ist, dass die erzeugten untergeordneten Prozesse von httpd_t(über mod_selinux) nicht die Kontexte verwenden selinuxDomainVal, die ich in den vhost-Dateien definiert habe.

Ich bin mir nicht sicher, was ich falsch gemacht habe. Habe ich das irgendwie falsch konfiguriert oder habe ich einen Schritt vergessen? Ich wäre für jede Hilfe dankbar, die Sie mir anbieten können.

Zusatzinformation...

  • CentOS8
  • Apache 2.4.37
  • PHP 7.3 (über remi)
  • PHP-FPM
  • mod_selinux (neu gepacktes RPM von Fedora 31)

Antwort1

Nextcloud ist eine PHP-basierte Software. Ich bin mir nicht sicher, wie Ihre proprietäre Software funktioniert (vielleicht auch PHP?). Das eigentliche Durchsuchen der Verzeichnisse in Nextcloud erfolgt mit PHP, in Ihrem Fall mit PHP-FPM, soweit ich weiß. Ich würde davon ausgehen, dass Sie entweder denselben PHP-FPM-Pool für beide VHosts verwenden oder dass der PHP-FPM-SELinux-Kontext in beiden Pools derselbe ist. Auch wenn meine Annahme falsch sein könnte, sollten Sie hier auch Details zu Ihrer PHP-Konfiguration und dazu angeben, was Sie in Bezug auf SELinux getan (oder nicht getan) haben.

verwandte Informationen