Как отключить SELinux в РЕД ОС (RED OS)

Отключить SELinux в РЕД ОС чаще всего требуется, когда служба или приложение отказывается запускаться, а в журнале аудита появляются записи об отказах вида «avc: denied» — это типичный признак того, что принудительный контроль доступа блокирует легитимные операции. Прежде чем полностью выключать механизм защиты, стоит убедиться, что проблема действительно связана с SELinux, а не с правами файловой системы или настройками самого приложения.

В этой статье разберём, как проверить текущее состояние SELinux в РЕД ОС, как временно перевести его в разрешительный режим и как отключить полностью через конфигурационный файл. Также рассмотрим, чем грозит отключение с точки зрения безопасности и какие есть альтернативы.

Что такое SELinux и зачем он нужен в РЕД ОС

SELinux (Security-Enhanced Linux) — это модуль ядра Linux, реализующий принудительный контроль доступа (Mandatory Access Control). В отличие от стандартной дискреционной модели прав «пользователь-группа-остальные», SELinux проверяет каждое обращение процесса к файлам, портам и ресурсам на соответствие политикам безопасности.

РЕД ОС — российский дистрибутив, ориентированный в том числе на корпоративный и государственный сектор, поэтому механизмы защиты в нём занимают важное место. В зависимости от версии и редакции системы SELinux может быть включён по умолчанию или отсутствовать — это нужно проверить на конкретной установке, а не предполагать заранее.

Каждый объект системы (файл, процесс, сокет) получает контекст безопасности, и политика определяет, какие взаимодействия между контекстами разрешены. Если приложение установлено нестандартным способом или работает с нестандартными путями, политика может блокировать его действия — отсюда и большинство обращений с запросом «redos disable selinux».

Проверка текущего состояния SELinux

Первый шаг — узнать, установлен ли SELinux вообще и в каком режиме он работает. Для этого выполните в терминале:

getenforce

Команда вернёт одно из трёх значений: Enforcing (принудительный режим, блокировки активны), Permissive (нарушения только логируются) или Disabled (механизм выключен). Если утилита не найдена, вероятно, пакеты SELinux в системе не установлены.

Более подробную информацию даёт команда sestatus — она покажет режим, точку монтирования SELinuxfs и используемую политику. Дополнительно можно проверить наличие записей об отказах в журнале аудита:

sudo ausearch -m avc -ts recent
  • 🔍 getenforce — быстрый ответ о текущем режиме
  • 📋 sestatus — расширенная информация о конфигурации
  • 📄 ausearch -m avc — поиск записей об отказах доступа
  • 🗂️ /var/log/audit/audit.log — файл журнала аудита, если служба auditd активна
📊 В каком режиме SELinux работает на вашей системе?
Enforcing
Permissive
Disabled
SELinux не установлен

Временное отключение: перевод в режим Permissive

Самый безопасный способ проверить гипотезу о блокировке — временно перевести SELinux в разрешительный режим без перезагрузки. Для этого выполните:

sudo setenforce 0

После этого SELinux перестанет блокировать действия, но продолжит записывать нарушения в журнал. Запустите проблемное приложение и проверьте его работу. Если ошибка исчезла — причина действительно в политиках SELinux, и можно решать её точечно, а не выключать защиту целиком.

Вернуть принудительный режим можно командой sudo setenforce 1. Учтите, что изменение действует только до перезагрузки: после рестарта система вернётся к режиму, указанному в конфигурационном файле.

Постоянное отключение SELinux в РЕД ОС

Если решение об отключении принято осознанно (например, на изолированной тестовой машине или по требованию вендора ПО), настройка выполняется через конфигурационный файл. Откройте его в текстовом редакторе с правами администратора:

sudo nano /etc/selinux/config

Найдите строку SELINUX= и установите нужное значение. Вариант permissive оставит логирование без блокировок, disabled — полностью выключит механизм. Сохраните файл и перезагрузите систему: изменение этого параметра применяется только при загрузке.

☑️ Порядок постоянного отключения SELinux

Выполнено: 0 / 5
⚠️ Внимание: отключение SELinux снижает уровень защиты системы. На серверах, обрабатывающих персональные данные или работающих в контурах с требованиями регуляторов, отключение может нарушить условия аттестации. Перед изменением согласуйте действие с ответственным за информационную безопасность.

Сравнение режимов работы SELinux

Чтобы выбрать подходящий вариант, полезно видеть различия между режимами. Они различаются поведением при нарушении политики и последствиями для безопасности.

РежимБлокировка нарушенийЛогированиеРекомендуемое применение
EnforcingДаДаРабочие и серверные системы
PermissiveНетДаДиагностика и отладка политик
DisabledНетНетИзолированные тестовые среды

Как видно, Permissive — разумный компромисс на время настройки: приложения работают, а вы сохраняете полную картину того, что именно блокировалось бы. Полное отключение оправдано заметно реже, чем кажется.

Альтернативы полному отключению

Частая ошибка администраторов — отключать SELinux целиком из-за одного конфликтующего приложения. На практике почти каждую блокировку можно разрешить точечно, сохранив защиту для остальной системы.

  • 🛠️ audit2allow — генерация локального модуля политики из записей об отказах
  • 🏷️ restorecon — восстановление корректных контекстов файлов, если они сбились при копировании
  • 🔧 semanage — управление контекстами портов и путей для нестандартных конфигураций
  • 📦 chcon — временная смена контекста отдельного файла для проверки
Пример создания локального модуля политики

Команда sudo ausearch -m avc -ts recent | audit2allow -M mypolicy сформирует модуль mypolicy.pp на основе свежих отказов. Устанавливается он командой sudo semodule -i mypolicy.pp. Перед установкой обязательно просмотрите сгенерированные правила — модуль может разрешить больше, чем требуется.

⚠️ Внимание: если после перевода SELinux в Permissive приложение по-прежнему не работает, причина не в SELinux. Проверяйте права доступа к файлам, настройки межсетевого экрана и зависимости пакетов — отключение защитного механизма в этом случае ничего не даст.

Как вернуть SELinux обратно

Обратное включение требует аккуратности. Установите в /etc/selinux/config значение SELINUX=permissive и перезагрузитесь. После загрузки файловой системе может потребоваться перемаркировка контекстов — за время работы без SELinux файлы создавались без меток безопасности.

Обычно перемаркировка запускается созданием файла /.autorelabel в корне с последующей перезагрузкой: система при загрузке переназначит контексты всем файлам. На больших дисках процесс занимает заметное время. После завершения можно переключиться в Enforcing и убедиться, что в журнале нет массовых отказов.

Часто задаваемые вопросы

Почему команда getenforce возвращает ошибку «command not found»?

Скорее всего, пакеты SELinux не установлены в вашей редакции РЕД ОС. Проверьте наличие пакета через менеджер пакетов (rpm -qa | grep selinux) и при необходимости установите инструменты из репозитория.

Отключится ли SELinux сразу после правки /etc/selinux/config?

Нет. Изменение конфигурационного файла применяется только при загрузке системы. Для текущего сеанса используйте setenforce 0, который переводит систему в Permissive до перезагрузки.

Безопасно ли работать с SELinux в режиме Disabled?

Это зависит от контура. На изолированной тестовой машине риск минимален, но на серверах с доступом из сети или с персональными данными отключение снимает важный уровень защиты. Предпочтительнее режим Permissive с точечной настройкой политик.

Что делать, если приложение не работает даже в режиме Permissive?

Значит, причина не в SELinux. Проверьте права на файлы и каталоги, правила межсетевого экрана (firewalld), доступность портов и журналы самого приложения.

Как узнать, какое именно действие блокирует SELinux?

Используйте sudo ausearch -m avc -ts recent или просмотрите /var/log/audit/audit.log. Записи «avc: denied» содержат процесс, объект и тип операции, по которым можно построить разрешающее правило через audit2allow.