CentOS Linux 8 зависает при изменении логических значений SELinux (setsebool)
Проблема
Различные серверы CentOS Linux 8 зависают/зависают при изменении логических значений SELinux.
Подробности и исследования
Мы управляем сотнями серверов CentOS Linux. В последнее время мы наблюдаем отклоняющееся поведение на некоторых (но не на всех) серверах при изменении логических значений SELinux. Сразу после команды изменения сервер полностью зависает, и ICMP/SSH/TTY вообще невозможны. Только простой цикл включения и выключения восстановит функциональность.
Объем:
- Различные установки CentOS Linux 8 (8.1–8.3).
- SELinux включен в принудительном режиме на всех серверах.
- Не обнаружено согласованности, на каких серверах возникает эта проблема.
- Проблема существует второстепенная версия для разных ОС.
- Проблема существует в кросс-ядерных выпусках.
Что я пробовал
Изменение логических значений SELinux с помощью этой команды или их изменение путем изменения псевдо-FS приводит к одним и тем же воспроизводимым ошибкам.
Последовательности, которые я пробовал (см. ниже), имеют в качестве примера логическое значение zabbix_run_sudo, но такое поведение применимо и к другим логическим значениям.
Использование setsebool
Выполнятьsetsebool zabbix_run_sudo on
сразу зависает сервер. Ожидаемое поведение заключается в том, что команда выполняется максимум несколько секунд, а затем возвращается в оболочку. С использованиемstrace
в этой команде показано, что этот инструмент изменяет псевдо-FS SELinux (/sys/fs/selinux
) и на втором этапе сервер зависает.
Изменение псевдо-FS SELinux
При изменении псевдо-FS SELinux вручную, отображая 1 в некоторых путях, я могу имитировать использование предыдущего протестированногоsetsebool
инструмент. Эти шаги также описаны на веб-сайте «Дневник компьютерщика»: https://www.thegeekdiary.com/understanding-selinux-booleans/.
Проверенные шаги:
-
echo 1 > /sys/fs/selinux/booleans/zabbix_run_sudo
(без проблем) -
echo 1 > /sys/fs/selinux/commit_pending_bools
(зависает сервер)
Теперь у меня немного нет вариантов, потому что мне очень нравится, когда SELinux находится в принудительном режиме, но мне также нужно настроить различные логические значения SELinux. Я не могу последовательно воссоздать работу неисправного сервера. Из-за некоторых различий, о которых я в настоящее время не знаю, разные развертывания серверов оказываются в разных состояниях.
Любая помощь по отладке и устранению этой проблемы приветствуется!