Как разрешить “guix-daemon” выполнять “remount” в SELinux?

Вопрос или проблема

Я установил Guix и вручную установил встроенную политику SELinux. Но согласно Рикардо Вурмусу, по состоянию на 30 июня 2021 года:

На самом деле есть всего два способа: либо 1) отключить SELinux (или установить его в режим допуска) либо 2) установить/отладить/переустановить политику демона SELinux, которая входит в комплект Guix.

Политика демона не устанавливается методом бинарной установки, так как известно, что она неполная. Вам потребуется получить копию исходников Guix и настроить их. Файл, который вам нужен, называется “etc/guix-daemon.cil”. Чтобы отладить его, вам нужно установить его, установить SELinux в режим допуска, запустить демон, а затем проверить журнал аудита на наличие ошибок.

Существует открытая проблема для файла SElinux guix-daemon.cil, который предлагает патч, который, кажется, уже включен в файл, входящий в мою установку.

Я установил setroubleshoot и продолжал перезапускать guix-daemon.service, следуя советам, появляющимся в уведомлениях. Демон наконец запустился после:

$ sudo chcon -R -t guix_daemon.guix_daemon_conf_t /var/guix/
$ sudo chcon -R -t guix_daemon.guix_profiles_t /var/guix/profiles/per-user/root/current-guix
$ sudo chcon -R -t guix_daemon.guix_profiles_t /var/guix/profiles/per-user/root/current-guix-1-link

Но я все еще не могу приступить к установке glibc-locales:

$ guix install glibc-locales
hint: Рассмотрите возможность установки пакета `glibc-utf8-locales` или `glibc-locales` и определения `GUIX_LOCPATH`, примерно так:

     guix install glibc-utf8-locales
     export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"

Смотрите раздел "Настройка приложений" в руководстве для получения дополнительной информации.

guix install: ошибка: remounting /gnu/store writable: доступ запрещен

Инструмент диагностики SELinux сообщает, что “guix-daemon” не имеет доступа “remount” к “filesystem” и предлагает:

# ausearch -c 'guix-daemon' --raw | audit2allow -M my-guixdaemon
# semodule -X 300 -i my-guixdaemon.pp

Но ausearch выдает ошибку на этом:

$ sudo ausearch -c '(x-daemon)' --raw | audit2allow -M my-xdaemon
компиляция не удалась:
libsepol.hierarchy_add_type_callback: guix_daemon не существует, guix_daemon.guix_daemon_conf_t - сирота
libsepol.hierarchy_add_bounds: 1 ошибка найдена при добавлении иерархий

Как я могу разрешить guix-daemon произвести remount файловой системы в SELinux?

Я включил режим допуска и использовал Guix в течение некоторого времени. Поддержка SELinux, по-видимому, все еще находится в разработке. setroubleshoot регулярно уведомляет о различных проблемах. Запуск Guix с SELinux в режиме допуска кажется единственным практическим решением в данный момент.

(Чтобы включить режим допуска постоянно, отредактируйте /etc/selinux/config и перезагрузите.)

Смотрев на вывод команды

# ausearch -c 'guix-daemon' --raw | audit2allow 
#============= guix_daemon.guix_daemon_t ==============
allow guix_daemon.guix_daemon_t fs_t:filesystem remount;
#

Я перевел это в нечто для политики и добавил следующее в файл guix-daemon.cil.

(allow guix_daemon_t
      fs_t (filesystem 
      (remount)))

Затем я перезагрузил файл политики, и это, похоже, сработало для меня.

Ответ или решение

Чтобы разрешить guix-daemon выполнять операцию "remount" в SELinux, необходимо внести изменения в политику SELinux, так как по умолчанию данная операция может быть ограничена.

Шаги для решения проблемы:

  1. Проверка режима SELinux:
    Убедитесь, что SELinux включен (используйте sestatus для проверки текущего состояния). В случае временных тестов можно перевести SELinux в режим permissive, но рекомендуется создать соответствующие политики.

  2. Проверка журналов SELinux:
    Используйте команду ausearch для поиска нарушений, связанных с guix-daemon. Это поможет понять, какие разрешения необходимо добавить:

    sudo ausearch -c 'guix-daemon'
  3. Генерация файла политики:
    Чтобы сгенерировать файл политики на основании обнаруженных нарушений, используйте следующую команду:

    sudo ausearch -c 'guix-daemon' --raw | audit2allow -M my-guixdaemon
  4. Внесение изменений в файл политики:
    Изучите сгенерированный файл my-guixdaemon.te, чтобы понять, какие разрешения он добавляет. В вашем случае вы можете добавить разрешение вручную. Откройте файл etc/guix-daemon.cil, расположенный в источниках Guix, и добавьте следующий код:

    (allow guix_daemon_t
         fs_t (filesystem
         (remount)))
  5. Применение новой политики:
    После внесения изменений загрузите новую политику с помощью команды:

    sudo semodule -X 300 -i my-guixdaemon.pp
  6. Перезапуск сервиса:
    Перезапустите guix-daemon.service, чтобы изменения вступили в силу:

    sudo systemctl restart guix-daemon.service
  7. Тестирование:
    Теперь выполните команду установки пакета ещё раз (например, guix install glibc-locales), чтобы проверить, решена ли проблема с разрешениями.

Замечания:

  • Регулярно проверяйте логи SELinux на предмет других нарушений, которые могут возникнуть. Это оптимизирует вашу конфигурацию безопасности.
  • Если вы продолжаете сталкиваться с проблемами, подумайте о модификации других политик или добавлении дополнительных разрешений на основании логов.

Заключение:

Подходя к процессу с пониманием и методическим анализом, можно успешно настроить guix-daemon для работы в окружении SELinux. QT управления SELinux требует знания, но в конечном итоге это значительно увеличивает уровень безопасности вашей системы. Регулярно обновляйте и проверяйте ваши политики, чтобы предотвратить возможные сбои в работе системы.

Оцените материал
Добавить комментарий

Капча загружается...