Отключить SELinux на CentOS, Fedora

Автор Itworkroom

Отключить SELinux на CentOS, Fedora

SELinux (Security-Enhanced Linux) — это система принудительного контроля доступа, она может работать параллельно со стандартной классической системой контроля доступа в linux. SELinux может создавать правила обращения пользователям или программам, что дает возможность ограничить некоторые возможности доступа им. В данной материале описано как задать различные режимы работы подсистемы защиты или просто выключить её в ОС Linux.

Статус SELinux

Команды /usr/sbin/getenforce и /usr/sbin/sestatus используются для проверки текущего статуса SELinux. Команда getenforce возвращает значение Enforcing, Permissive, или Disabled. Команда getenforce возвращает Enforcing когда SELinux активирован (правила политики SELinux принудительные):

# /usr/sbin/getenforce
Enforcing
Команда getenforce возвращает Permissive когда SELinux активирован, но правила политики SELinux не принудительные enforced, и используются только правила DAC. Команда getenforce возвращает Disabled, если SELinux отключен.
Команда sestatus возвращает статус SELinux и используемой политики SELinux:
# /usr/sbin/sestatus

sestatus 
Значение SELinux status: enabled возвращается, когда SELinux включен. Current mode: enforcing возвращается, когда SELinux включен в принудительном enforced режиме. Policy from config file: targeted возвращается, когда используется политика SELinux targeted.

Управление SELinux

В операционных системах с отключенным SELinux, сконфигурирована опция SELINUX=disabled в /etc/selinux/config:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.
SELINUXTYPE=targeted
Также, команда getenforce возвращает значение Disabled:
# /usr/sbin/getenforce
Disabled
Для включения SELinux:
  1. Используйте команду rpm -qa | grep selinux, rpm -q policycoreutils, и rpm -qa | grep setroubleshoot для проверки инсталляции пакетов SELinux. Это руководство предполагает, что инсталлированы следующие пакеты: selinux-policy-targeted, selinux-policy, libselinux, libselinux-python, libselinux-utils, policycoreutils, setroubleshoot, setroubleshoot-server, setroubleshoot-plugins. Если эти пакеты не установлены, установите их от имени пользователя root с помощью команды yum install package-name. Следующие пакеты опционально: policycoreutils-gui, setroubleshoot, selinux-policy-devel, и mcstrans.
  2. Перед тем, как SELinux включится, каждый файл файловой системы должен быть промаркирован контекстом SELinux. До того, как это произойдёт, ограниченным доменам может быть отказано в доступе, что приведёт к некорректной загрузке операционной системы. Для того , чтобы не допустить этого, настройте SELINUX=permissive в файле /etc/selinux/config:
    sestatus 
    
  3. От имени пользователя root, выполните команду reboot для перезагрузки ОС. Во время следующей загрузки файловые системы будут промаркированы. Процесс маркирования расставляет метки для всех файлов в контексте SELinux:
    *** Warning -- SELinux targeted policy relabel is required.
    *** Relabeling could take a very long time, depending on file
    *** system size and speed of hard drives.
    ****
    
    Каждый символ * в последней строке обозначает 1000 файлов, которые были промаркированы. В примере, приведенном выше, четыре символа * означают, что 4000 файлов были промаркированы. Общее время маркирования всех файлов зависит от общего количества файлов и скорости жёстких дисков. На современных системах, этот процесс занимает чуть меньше 10 минут.
  4. В разрешительном режиме, политика SELinux принудительно не назначена, но запреты заносятся в журнал как действия, которые были бы запрещены в принудительном режиме. Перед тем как перейти в принудительный режим, от пользователя root выполните команду grep "SELinux is preventing" /var/log/messages, для того, чтобы убедиться, что SELinux не запрещает действия во время последний загрузки. Если SELinux не запрещает действия во время последней загрузки, то данная команда не вернёт никакого вывода.
  5. Если не обнаружено сообщений о запретах в /var/log/messages, то настройте SELINUX=enforcing в /etc/selinux/config:
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - No SELinux policy is loaded.
    SELINUX=enforcing
    # SELINUXTYPE= can take one of these two values:
    #       targeted - Targeted processes are protected,
    #       mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    
  6. Перезагрузите ОС. После перезагрузки, удостоверьтесь, что команда getenforce возвращает значение Enforcing:
    # /usr/sbin/getenforce
    Enforcing
    
  7. От пользователя root, выполните команду /usr/sbin/semanage login -l для просмотра отображений между SELinux и пользователями Linux. Вывод команды должен быть такой:
    Login Name                SELinux User              MLS/MCS Range
    
    __default__               unconfined_u              s0-s0:c0.c1023
    root                      unconfined_u              s0-s0:c0.c1023
    system_u                  system_u                  s0-s0:c0.c1023
    
Если это не так, то выполните команду от root пользователя для исправления ошибок в отображениях пользователей. Безопаснее проигнорировать предупреждения SELinux-user username is already defined, если они появляются, где username может быть unconfined_u, guest_u, или xguest_u:
/usr/sbin/semanage user -a -S targeted -P user -R «unconfined_r system_r» -r s0-s0:c0.c1023 unconfined_u
/usr/sbin/semanage login -m -S targeted -s «unconfined_u» -r s0-s0:c0.c1023 __default__
/usr/sbin/semanage login -m -S targeted -s «unconfined_u» -r s0-s0:c0.c1023 root
/usr/sbin/semanage user -a -S targeted -P user -R guest_r guest_u
/usr/sbin/semanage user -a -S targeted -P user -R xguest_r xguest_u

 

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *