Поиск по сайту:
В сепаратном договоре не ищи спасения (К. Прутков).

Устранение неполадок в SELinux

17.10.2017
Устранение неполадок в SELinux

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

Предпосылки

Эта статья предполагает две вещи:

  1. Вы знаете основы SELinux. Если вы не узнаете основы SELinux, сейчас прекрасное время, чтобы сделать это.
  2. Вы используете SELinux в режиме enforcingРежим enforcing является нормальным и ожидаемым способом запуска Fedora. Если вы отключили SELinux, вам необходимо включить его. Отредактируйте файл /etc/sysconfig/selinux для установки  SELINUX=permissive. Используя режим permissive гарантирует, что любые радикальные проблемы все еще могут быть исправлены автоматически с помощью следующих команд. Затем выполните следующие действия:
    sudo fixfiles -F onboot
    reboot

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

Не удивляйтесь, если вы начинаете видеть ошибки после того, как перемаркируете файлы, если вы уже работаете в режиме disabled некоторое время. Работа в режиме disabled, это как клеить обои через утечку. При удалении обоев, вы, вероятно, найти повреждение водой. Точно так же, если вы уже работаете без включенным SELinux, вы, вероятно, создали больше проблем, которые в настоящее время должны быть решены.

После того как машина перезагрузится, вы можете переключиться на режим enforcing:

sudo setenforce 1

Это действительно в selinux?

Хороший способ сказать, является ли SELinux виноват в ошибке, чтобы установить режим permissive. Это означает, что SELinux регистрирует ошибку, но все же позволяет активность. Для этого выполните следующую команду:

sudo setenforce 0

 

Затем попробуйте процесс снова, в другом терминале, если это необходимо. В случае успеха политики SELinux происходит ошибка. Чтобы найти ошибки в течение последних 10 минут, используйте команду ausearch:

sudo ausearch -m AVC,USER_AVC,SELINUX_ERR -ts recent

 

Если процесс все еще не в режиме permissive, то проблема, скорее всего, не в политике SELinux. В этом случае убедитесь, в запуске sudo setenforce 1, чтобы вернуться в режим enforcing. Помните, этот параметр является глобальным.

Определение проблемы

Обычно вы можете определить ошибки SELinux через сообщение AVC. Одним из параметров сообщения AVC является командой, которая генерируется сообщение. Например, вы можете увидеть comm=”/usr/sbin/httpd”  в сообщении об ошибке SELinux, которая генерируется веб — сервером Apache.

Проблема также скажет вам контекст источника (scontext) действуя части вашей системы, и контекст цели (tcontext) вещи, котор она попыталась подействовать дальше. Часто, но не всегда, источник является бинарным и целевым файлом. Чтобы понять ошибки лучше, вы можете использовать SELinux Troubleshooter. Вы можете установить это с  программным обеспечением инструмента в Fedora Workstation, или использовать sudo с dnf  в терминале:

sudo dnf install setroubleshoot

 

Для запуска программы используйте Обзор в Fedora Workstation, чтобы найти SELinux Troubleshooter, или запустить из терминала:

sealert

 

Вы можете найти последние оповещения в браузере, который появляется:

Устранение неполадок в SELinux

На этом экране, например, вы можете получить список всех предупреждений, присутствующие в системе, чтобы устранить их систематически.

Решение проблемы

При выборе  неполадок вы увидите несколько вариантов вашей ошибки.

Устранение неполадок в SELinux

В этом случае пользователь создал файл index.html в своем домашнем каталоге, и использовал  команду mv, чтобы переместить его в каталог   /var/www/html/ который будет обслуживаться веб — сервера Apache. Указав в веб — браузере http://localhost/index.html, эта ошибка произошла.

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

Тем не менее, только потому, что существует логическое значение, не означает, что вы должны включить его, не понимая его. В этом случае, если вы включите логическое значение, веб — сервер Apache сможет прочитать любой пользовательский контент, чьи права позволяют доступ к файлам. Таким образом, в этом случае, если мы могли бы вместо этого спросить, «Почему этот файл имеет контекст?» В этом случае это происходит потому, что пользователь переместил файл. Это означает, что файл перенесли его старые связи в новом месте, вместо того, чтобы получать новый контекст по умолчанию, который позволяет веб-серверу прочитать содержимое в  /var/www/html.

В этом случае лучше идея заключается в том, чтобы просто восстановить правильный контекст файла:

sudo restorecon -rv /var/www/html/index.html
Relabeled /var/www/html/index.html from unconfined_u:object_r:user_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0

Примечание о булевых операциях в SELinux

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

semanage boolean -l

 

Если установить пакет selinux-policy-devel первым, вы также можете увидеть краткое описание для каждой булевой операции при выполнении команды выше:

SELinux boolean State Default Description

abrt_anon_write (off, off) Allow ABRT to modify public files used for public file transfer services.
abrt_handle_event (off, off) Determine whether ABRT can run in the abrt_handle_event_t domain to handle ABRT event scripts.
abrt_upload_watch_anon_write (on, on) Determine whether abrt-handle-upload can modify public files used for public file transfer services in /var/spool/abrt-upload/.
antivirus_can_scan_system (off, off) Allow antivirus programs to read non security files on a system
...

 

Чтобы установить логическое временно запустить эту команду, где  boolname это имя логического значения и  value является либо  on или 1, или  off или 0.

setsebool boolname=value

 

Для того, чтобы установить его постоянно, добавьте переключатель -P:

setsebool -P boolname=value

Вывод

Есть и другие функции, которые можно выполнять для решения проблем в SELinux, такие как создание конкретного модуля политики для вашей системы. Вы можете их в руководстве по SELinux (https://docs-old.fedoraproject.org/en-US/Fedora/25/html/SELinux_Users_and_Administrators_Guide/index.html), которое полезно для понимания этих функций.

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
В этой статье вы узнаете, как добавить пользовательский код отслеживания…

Спасибо!

Теперь редакторы в курсе.