Назад | Перейти на главную страницу

Разделение привилегий Apache vhost с помощью mod_selinux

у меня есть 2 сайты / приложения на сервере; проприетарное приложение и Nextcloud. Nextcloud будет использовать files_external плагин хранения, который позволяет местный монтирует, но я НЕ хотите, чтобы он мог просматривать и просматривать исходный код проприетарного приложения ... таким образом mod_selinux и детей-седименов.

я использую mod_selinux для создания дочерних доменов, и я назначаю дочерний идентификатор каждому из сайтов и помечаю соответствующие каталоги приложений и данных соответственно в их определениях vhost ...

httpd.conf

selinuxServerDomain *:s0-s0:c0.c100

proprietary.vhost.conf

selinuxDomainVal *:s0:c10

nextcloud.vhost.conf

selinuxDomainVal *:s0:c20

Каталог приложения, в котором находится код, имеет следующие разрешения и контексты ...

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

Эта проблема... Все работает, но проблема в том, что я все еще могу просматривать папку проприетарного приложения с помощью nextcloud, даже если в каталоге проприетарного приложения есть контекст домена, ограниченный s0:c10, а поскольку виртуальный хост определен, Nextcloud должен работать как s0:c20.

Я знаю, что SELinux выполняет свою работу, потому что я не могу просматривать такие папки, как / etc, хотя Другой у пользователей есть права на чтение, я могу просматривать только папки с контекстами httpd_sys_(rw_)content_t как этому следовало быть.

Я ожидал, что дочерний процесс c20 не должен иметь возможность читать папку, запрашивающую c10. Итак, единственное, о чем я могу думать, это то, что порожденные дети httpd_t (через mod_selinux) не используют selinuxDomainVal контексты, которые я определил в файлах vhost.

Я не уверен, что я сделал не так, я как-то неправильно это сконфигурировал или забыл шаг? Буду признателен за любую помощь, которую вы можете предложить.

Дополнительная информация ...

Nextcloud - это программное обеспечение на основе PHP, не знаю, как работает ваша проприетарная программа (может быть, также и PHP?). Фактический просмотр каталогов в Nextcloud происходит с использованием PHP, в вашем случае с использованием PHP-FPM из того, что я получил. Я предполагаю, что вы либо используете один и тот же пул PHP-FPM для обоих VHosts, либо контекст SELinux PHP-FPM одинаков для обоих пулов. Даже мое предположение может быть неверным, вы должны предоставить здесь также подробную информацию о вашей конфигурации PHP и о том, что вы сделали (или не сделали) в отношении SELinux.