Previous: , Up: Настройка демона   [Contents][Index]


2.4.3 Поддержка SELinux

Guix включает файл политик SELinnux etc/guix-daemon.cil, который может устанавливаться в систему, в которой включен SELinux, тогда файлы Guix будут помечены и настроены для соответствующего поведения демона. Так как система Guix не предоставляет политику SELinux, политика демона не может использоваться в системе Guix.

2.4.3.1 Установка политики SELinux

Чтобы установить политику, запустите следующую команду от root:

semodule -i etc/guix-daemon.cil

Затем измените метку файловой системы с restorecon или другим механизмом, поставляемым вашей системой.

Когда политика установлена, изменена метка файловой системы и демон перезапущен, она должна работать в контексте guix_daemon_t. Можно проверить это следующей командой:

ps -Zax | grep guix-daemon

Наблюдайте файлы логов SELinux во время работы команды guix build hello, чтобы удостовериться, что SELinux позволяет выполнение необходимых операций.

2.4.3.2 Ограничения

Эта политика не совершенна. Тут есть ряд ограничений или причуд, который нужно учитывать при разворачивании политики SELinux для демона Guix.

  1. guix_daemon_socket_t isn’t actually used. None of the socket operations involve contexts that have anything to do with guix_daemon_socket_t. It doesn’t hurt to have this unused label, but it would be preferable to define socket rules for only this label.
  2. guix gc не может получить доступ к обычным ссылкам профилей. По задумке метка файла назначения символической ссылки не зависит от метки файла самой ссылки. Хотя все профили под $localstatedir помечены, ссылки на эти профили не наследуют метку директории, в которой они находятся. Для ссылок на домашние директории пользователей это будет user_home_t. Но для ссылок из домашней директории root, а также /tmp или рабочей директории HTTP-сервера и т.п., это не работает. guix gc не будет допускаться к чтению и следованию по этим ссылкам.
  3. Функция демона прослушивать соединения TCP может более не работать. Это может потребовать дополнительных правил, потому что SELinux относится к сетевым сокетам иначе, чем к файлам.
  4. В настоящее время всем файлам с именами, соответствующими регулярному выражению /gnu/store/.+-(guix-.+|profile)/bin/guix-daemon, присвоена метка guix_daemon_exec_t; это означает, что любому файлу с таким именем в любом профиле разрешён запуск в домене guix_daemon_t. Это не идеально. Атакующий может собрать пакет, который содержит исполняемый файл и убеить пользователя установить и запустить его, и таким образом он получит доступ к домену guix_daemon_t. В этой связи SELinux мог бы не давать ему доступ к файлам, которые разрешены для процессов в этом домене.

    Вам нужно будет изменить метку (label) каталога хранилища после всех обновлений до guix-daemon, например, после запуска guix pull. Предполагая, что хранилище в /gnu, вы можете это сделать с restorecon -vR /gnu, или другими способами, предусмотренными вашей операционной системой.

    Мы можем создать политику с большими ограничениями во время установки, так чтобы только точное имя исполняемого файла установленного в данный момент guix-daemon было помечено меткой guix_daemon_exec_t вместо того, чтобы использовать регулярное выражение, выбирающее большой ряд файлов. Проблемой в данном случае будет то, что root потребуется устанавливать или обновлять политику во время любой установки в случае, если обновлён исполняемый файл guix-daemon.


Previous: , Up: Настройка демона   [Contents][Index]