Что такое 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.
Источник
Состояние se для android что это enforcing
Вкусно про Android запись закреплена
Переводим Selinux в режим «permissive» на прошивках MIUI
Как известно, на прошивках #MIUI, завоевавших сердца многих пользователей устройств на Android, Selinux по умолчанию установлен в режим «enforcing», что подразумевает запрет выполнения всего, «чего не надо им, но нужно нам» 🙂 Переключение Selinux в режим «permissive» позволяет установить на MIUI такие полезные штуки, как Viper4Android (подробнее о V4A: http://vk.com/wall-121422839_26).
Для переключения Selinux из «enforcing» в «permission» понадобится:
Права root
Любой эмулятор терминала
Более-менее светлая голова и начальные знания по работе в терминале Linux
Приступим к процедуре. Открываем терминал, получаем привилегии root:
Теперь перемонтируем /system на запись:
mount -o remount,rw /system
Создаём директорию, возможно, она уже есть, ничего страшного:
Помещаем в скрипт permissive.sh команду на отключение режима «enforcing» Selinux:
echo «#!/system/bin/sh\nsetenforce 0» > /system/su.d/permissive.sh
Отключаем «enforcing» в текущем сеансе:
echo «0» > /sys/fs/selinux/enforce
И финальный манёвр — выставляем права на созданный скрипт:
Вот и всё! Перезагружаем устройство и получаем #Selinux в режиме «permissive». Проверено на аппарате #Xiaomi Redmi Note 2 с MIUI 8 на борту.
Источник
Состояние se для android что это enforcing
Для функционирования программы необходимы права root пользователя.
Краткое описание:
Это простое приложение позволяет изменять режим SELinux, а так же запоминает ваш выбор при каждой перезагрузке устройства.
Описание:
The SELinux Switch — это новое приложение от разработчика The SELinux Toggler. Как и предыдущее приложение автора, The SELinux Switch поможет изменить режим SELinux без необходимости постоянно изменять загрузочные файлы скрипта устройства. Это приложение будет автоматически загружаться, как и любое приложение, которое является частью автозагрузки. Когда устройство загрузится, оно, по умолчанию, загрузится в режим SELinux “Enforcing” (это приложение не поменяет режим SELinux, который, по умолчанию, Enforcing (Блокировка) на постоянную основу, оно лишь меняет его до следующей перезагрузки устройства, но зато без вашего участия — автоматически), затем, после того, как приложение автоматически загрузится из автозагрузки, оно автоматически изменит режим устройства на тот, который укажет пользователь.
Требуется Android: 4.2+
Русский интерфейс: Нет
Обязательно следуйте инструкциям перед установкой The SELinux Switch:
- скачайте The SELinux Switch
- удалите SELinuxToggler и перезагрузите устройство
- как только устройство загрузится, установите The SELinux Switch, готово
- (необязательно) если вы хотите сначала проверить его, то установите переключатель SELinux в разрешающий режим, а затем перезагрузите устройство. Как только устройство загрузится, подтвердите изменение
*Обратите внимание на шаг 1:
Если вы планируете установить SELinux Switch с помощью Flashable Installer (TWRP) через рекавери, то вместо полной перезагрузки устройства, просто перезагрузите устройство в режим восстановления, прошейте приложение и перезагрузите устройство (очистка Dalvik-кэша сразу после прошивки приложения рекомендуется, но не обязательна), затем можете переходить к 4-ому шагу, если он вам требуется.
Когда включен MagiskHide и вы переключаете SELinux в режим «Только предупреждение», после перезагрузки MagiskHide автоматически переведет SELinux в режим «Блокировка», однако фактически это не так. Это называется SELinux «Pseudo» State и имейте в виду, что это особенность, а не ошибка.
Вы должны убедиться, что BusyBox включен в настройках приложения Magisk, потому как по умолчанию он отключен. После включения BusyBox в Magisk, приложение The SELinux Switch будет способно изменить состояние SELinux в режим «Только предупреждение» (PERMISSIVE).
*********************
**DATE: 01-25-2018**
*********************
— The «Reviews» portion of this thread was disabled due to it being broken while navigating AND i feel that Feedback/Reviews should be posted as a thread post anyways.
— PLEASE NOTE: The «Star Ratings» were not affected.
*********************
**DATE: 12-18-2017**
*********************
— The SELinux Switch Version 6.0.7 Build 607
— App Installer & Flashable Zip Uploaded.
— Minor Correction For Cleanup Commands Within The Flashable Installer.
— Added NEW Holiday Globe Icon To App & Thread’s OP.
*********************
**DATE: 12-15-2017**
*********************
— The SELinux Switch Version 6.0.7 Build 607
— App Installer & Flashable Zip Uploaded.
— Re-Added Minor Enhancement For Quicker Launch Upon Booting Device.
— An issue was found with the Signature File and the new Version may require the member to uninstall and reinstall the app.
— As a personal suggestion, before uninstalling any app, first go to the apps details, force stop, clean/clear up the Data & Cache and then uninstall it. This helps me to make sure that I’ve done the residual cleaning before the removing of the app itself.
— I apologize for any inconveniences that this may be causing and have taken precautions to help elevate this from happening in the future.
*********************
**DATE: 12-14-2017**
*********************
— The SELinux Switch Version 6.0.6 Build 606
— App Installer & Flashable Zip Uploaded..
— Applied Some Fixes For Android Version Compatibility.
— Fixed Notification Icon For Colored Icon.
— Removed the External Installation Preference to Internal Preference.
— Improved The Background Performance For Even Lower Memory Required.
— A Few Various Other Minor Modifications Were Made.
*********************
**DATE: 10-09-2017**
*********************
— The OP of the thread was just updated for everyone to enjoy a recent article recognizing The SELinux Switch. A special thanks to @DJBhardwaj for such a great article.
*********************
**DATE: 08-29-2017**
*********************
— The SELinux Switch Version 6.0.3 Build 603
— App Installer & Flashable Zip Updated..
— Applied Some Additional Fixes To A Few Translations.
— Fixed A Forgotten Translation Translation That Was Incomplete.
— Applied A Small Functional Modification.
*********************
**DATE: 08-23-2017**
*********************
— The SELinux Switch Version 6.0.2 Build 602
— App Installer & Flashable Zip Updated..
— Applied Some Fixes.
— Applied a Few Modifications for Compatibility.
— A Special Thanks to @Thebear j koss For a Nice Dark Theme.
*********************
**DATE: 08-17-2017**
*********************
— Uploaded App Specific Screenshots On The Thread.
— Uploaded App Specific Screenshots On The XDA Labs Store.
*********************
**DATE: 08-16-2017**
*********************
— Updated Important OP Information.
— Added Important Magisk Information
— Added Important PSA Warning Information.
— Other Minor Changes/Updates Made.
*********************
**DATE: 08-08-2017**
*********************
— Launched New Thread
— App Installer & Flashable Zip Updated..
— Now available in the XDA Labs Store.
Версия 6.0.3:The.SELinux.Switch.ver.6.0.3.build.603.apk ( 721.9 КБ )
Версия 6.0.3 для рекавери:The.SELinux.Switch.ver.6.0.3.build.603.zip ( 653.75 КБ )
Источник