Статус selinux блокировка что это android

Что такое SELinux? Настройка, включение и отключение

SELinux, или Security Enhanced Linux, — это продвинутый механизм управления доступом, разработанный Агентством национальной безопасности (АНБ) США для предотвращения злонамеренных вторжений. Он реализует мандатную модель управления доступом (MAC — Mandatory Access control) в дополнение к уже существующей в Linux дискреционной модели (DAC — Discretionary Access Control), то есть разрешениям на чтение, запись, выполнение.

У SELinux есть три режима работы:
1. Enforcing — ограничение доступа в соответствии с политикой. Запрещено все, что не разрешено в явном виде. Режим по умолчанию.
2. Permissive — ведёт лог действий, нарушающих политику, которые в режиме enforcing были бы запрещены, но не запрещает сами действия.
3. Disabled — полное отключение SELinux.

Изменение режима SELinux

Файл конфигурации по умолчанию, где можно изменять режим работы — /etc/selinux/config.

Чтобы узнать текущий режим работы, нужно выполнить следующую команду (для работы с SELinux необходимы root-привилегии, поэтому здесь и далее приводятся команды для root-пользователя):

Изменение режима работы на permissive:

и наоборот, на enforcing:

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

и измените параметр SELINUX на disabled:

После чего перезагрузите систему

Политики SELinux

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

Для понимания политик необходимо понимание базовых терминов. Политика SELinux определяет доступ пользователей к ролям, доступ ролей к доменам и доступ доменов к типам. Разберём значение этих терминов.

Пользователи

В SELinux есть набор предварительно заданных пользователей. Каждая стандартная учётная запись пользователя Linux соответствует одному или нескольким пользователям SELinux.

В Linux пользователи запускают процессы. Это может быть пользователь ivan, открывший документ в редакторе vi (учётная запись ivan запускает процесс vi) или служебная учётная запись, запустившая демон httpd. В SELinux процесс (демон или запущенная программа) называется субъектом.

Роли

Роль определяет, какие пользователи могут осуществлять доступ к заданному процессу. Роли не тождественны группам, они больше похожи на фильтры: пользователь может принадлежать к роли в любое время, если роль это позволяет. Определение роли в политике безопасности SELinux задаёт пользователей, имеющих доступ к этой роли. Роли используются потому, что один из элементов SELinux реализует ролевую модель управления доступом (RBAC — Role Based Access Control).

Субъекты и объекты

Субъект — это процесс, который может потенциально влиять на объект.

Объектом в SELinux называется все, над чем можно выполнять какие-либо действия. Это может быть файл, директория, порт, tcp-сокет, курсор, X-сервер. Действия, которые субъект может выполнить над объектом, являются разрешениями субъекта.

Домены

Домен — это контекст, в котором может работать субъект SELinux (процесс). Этот контекст представляет собой как бы оболочку вокруг субъекта, которая сообщает процессу, что он может и не может делать. Например, домен определяет, какие файлы, директории, ссылки, устройства или порты доступны для субъекта.

Читайте также:  Видеть для андроид планшета

Типы

Тип — это контекст для файла, который устанавливает предназначение файла. Например, контекст файла может указывать, что это веб-страница, или что файл находится в директории /etc, или что владелец этого файла — конкретный пользователь. В терминах SELinux контекст файла называется его типом.

Политика SELinux определяет доступ пользователей к ролям, доступ ролей к доменам и доступ доменов к типам. Сначала пользователь должен быть авторизован для получения роли, затем роль должна быть авторизована для доступа к доменам. Домен, в свою очередь, может осуществлять доступ только к определенным типам файлов.

Механизм, при котором процесс, запущенный в определенном домене, может осуществлять только определенные действия над определенными типами объектов, называется принудительным присвоением типов (Type Enforcement — TE).

Работа политики SELinux

Политика SELinux не заменяет традиционную дискреционную модель управления доступом (DAC). Если правило DAC запрещает пользователю доступ к файлу, правила политики SELinux не будут применяться, потому что первая линия обороны уже заблокировала доступ. SELinux начинает работать уже после DAC.

При запуске системы с SELinux политика загружается в память. Она имеет модульный формат, аналогично загружаемым модулям ядра. И точно так же как и модули ядра, модули политики можно динамически загружать и выгружать из памяти в ходе работы. SELinux ведёт список загруженных модулей (policy store), имя которого можно увидеть при помощи команды sestatus. Команда semodule -l выводит список модулей, загруженных память в данный момент:

Результат будет выглядеть примерно следующим образом:

Команду semodule можно использовать для множества других задач: установки, удаления, перезагрузки, обновления, включения и выключения модулей политики SELinux. Бинарные файлы модулей в большинстве случаев входят в состав пакетов SELinux. Они имеют расширение .pp. Просмотреть их список можно следующей командой:

Можно заметить, что файлы связаны с различными приложениями:

Файлы .pp не читаемы для человека. При загрузке системы модули политик объединяются в так называемую активную политику, которая затем загружается в память. Бинарная версия этой загруженной политики находится в директории /etc/selinux/targeted/policy.

Следующая команда показывает активную политику:

Изменение переключателей SELinux

Несмотря на то, что прочитать файлы модулей политики невозможно, есть простой способ их настройки. Она осуществляется при помощи булевых переключателей SELinux (boolean).
Чтобы разобраться, как они работают, запустим команду semanage с опцией boolean:

Если у вас будет ошибка

То нужно установить policycoreutils-python

Теперь запускаем semanage с опцией boolean

semanage boolean -l | less

Будет выведен список различных переключателей, которые можно включить или выключить, краткое описание их функций и текущее состояние:

Первый пункт в этом списке позволяет демону FTP осуществлять доступ к домашним директориям пользователей. В данный момент переключатель выключен (off), то есть доступ запрещен.
Для изменения значений используется команда setsebool. В качестве примера давайте разрешим анонимный доступ FTP на запись. Проверим состояние переключателя командой getsebool:

Она покажет, что в данный момент переключатель выключен:

Изменим значение переключателя и включим его:

Снова проверим состояние переключателя, оно должно поменяться:

Изменение переключателей является временным, при перезагрузке они вернутся к старым значениям. Чтобы закрепить изменения, нужно запустить команду setsebool с опцией -P.

Читайте также:  Что будет если выключить андроид при обновлении

Теперь после перезагрузки изменения не потеряются

Заключение

Мы рассмотрели базовые принципы работы SELinux, включение системы и режимы её работы, показали пример обеспечения безопасности системы. Также была разобрана работа политики безопасности и ее настройка при помощи булевых переключателей. Более подробную информацию о SELinux можно найти в соответствующих man-страницах.

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

Источник

Руководство для начинающих по SELinux

Перевод статьи подготовлен для студентов курса «Безопасность Linux»

SELinux или Security Enhanced Linux — это улучшенный механизм управления доступом, разработанный Агентством национальной безопасности США (АНБ США) для предотвращения злонамеренных вторжений. Он реализует принудительную (или мандатную) модель управления доступом (англ. Mandatory Access Control, MAC) поверх существующей дискреционной (или избирательной) модели (англ. Discretionary Access Control, DAC), то есть разрешений на чтение, запись, выполнение.

У SELinux есть три режима:

  1. Enforcing — запрет доступа на основании правил политики.
  2. Permissive — ведение лога действий, нарушающих политику, которые в режиме enforcing были бы запрещены.
  3. Disabled — полное отключение SELinux.

По умолчанию настройки находятся в /etc/selinux/config

Изменение режимов SELinux

Чтобы узнать текущий режим запустите

Для изменения режима на permissive запустите следующую команду

или, для изменения режима с permissive на enforcing, выполните

Если вам нужно полностью отключить SELinux, то это можно сделать только через файл конфигурации

Для отключения измените параметр SELINUX следующим образом:

Настройка SELinux

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

После установки режима permissive, создадим в корне пустой скрытый файл с именем autorelabel

и перезагрузим компьютер

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

Не беспокойтесь, если загрузка застрянет на каком-то файле, маркировка занимает некоторое время. После завершения маркировки и загрузки вашей системы вы можете перейти к файлу конфигурации и установить режим enforcing, а также запустить:

Теперь вы успешно включили SELinux на своем компьютере.

Мониторим логи

Возможно, у вас возникли какие-то ошибки во время маркировки или во время работы системы. Чтобы проверить, работает ли ваш SELinux правильно и не блокирует ли он доступ к какому-либо порту, приложению и т. д. нужно посмотреть логи. Лог SELinux находится в /var/log/audit/audit.log , но вам не нужно читать его целиком, чтобы найти ошибки. Можно использовать утилиту audit2why для поиска ошибок. Запустите следующую команду:

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

Настройка политики SELinux

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

1. Логические значения (переключатели)

Переключатели (booleans) позволяют изменять части политики во время работы, без необходимости создания новых политик. Они позволяют вносить изменения без перезагрузки или перекомпиляции политик SELinux.

Читайте также:  Что лучше apple and android

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

Эта команда выдаст список доступных переключателей с их текущим состоянием (включено/on или выключено/off) и описанием. Вы можете уточнить поиск, добавив grep, чтобы найти результаты, относящиеся только с ftp:

и найдете следующее

Этот переключатель выключен, поэтому мы включим его с помощью setsebool $ setsebool ftp_home_dir on

Теперь наш ftp-демон сможет получить доступ к домашнему каталогу пользователя.
Примечание: вы также можете получить список доступных переключателей без описания, выполнив getsebool -a

2. Метки и контекст

Это наиболее распространенный способ реализации политики SELinux. Каждый файл, папка, процесс и порт помечаются контекстом SELinux:

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

Пример
Теперь давайте рассмотрим пример, чтобы лучше понять метки и контекст. Допустим, у нас есть веб-сервер, который вместо каталога /var/www/html/ использует /home/dan/html/ . SELinux сочтет это нарушением политики, и вы не сможете просматривать ваши веб-страницы. Это потому, что мы не установили контекст безопасности, связанный с HTML-файлами. Для просмотра контекста безопасности по умолчанию используйте следующую команду:

Здесь мы получили httpd_sys_content_t в качестве контекста для html-файлов. Нам нужно установить этот контекст безопасности для нашего текущего каталога, который сейчас имеет следующий контекст:

Альтернативная команда для проверки контекста безопасности файла или каталога:

Мы также будем использовать semanage для изменения контекста, после того как найдем правильный контекст безопасности. Чтобы изменить контекст /home/dan/html, выполните следующие команды:

После того, как контекст изменен с помощью semanage, команда restorecon загрузит контекст по умолчанию для файлов и каталогов. Наш веб-сервер теперь сможет читать файлы из папки /home/dan/html , поскольку контекст безопасности для этой папки был изменен на httpd_sys_content_t .

3. Создание локальных политик

Могут возникнуть ситуации, когда вышеуказанные методы бесполезны для вас, и вы получаете ошибки (avc/denial) в audit.log. Когда такое происходит, то нужно создать локальную политику (Local policy). Все ошибки вы можете найти с помощью audit2why, как было описано выше.

Для устранения ошибок можно создать локальную политику. Например, мы получаем ошибку, связанную с httpd (apache) или smbd (samba), мы grep’аем ошибки и создаем для них политику:

Здесь http_policy и smb_policy — это названия локальных политик, которые мы создали. Теперь нам нужно загрузить эти созданные локальные политики в текущую политику SELinux. Это можно сделать следующим образом:

Наши локальные политики были загружены, и мы не должны больше получать никаких avc или denail в audit.log.

Это была моя попытка помочь вам понять SELinux. Я надеюсь, что после прочтения этой статьи вы будете чувствовать себя с SELinux более комфортно.

Источник

Оцените статью