SELinux - теория. Настройка SELinux, включение, отключение Что необходимо чтобы отключить защиту в Android
Security- Enhanced Linux (SELinux) является особенностью механизма в Linux, что обеспечивает поддержку политик безопасности контроля доступа.
SELinux может создавать правила обращения юзерам или утилитам что дает возможность ограничить некоторые возможности доступа утилит, задав эти возможности и их поведения в виде правил, а ОС с использованием SELinux будет смотреть за соблюдением данных правил. В этой теме я расскажу как выключить или включить SELinux на CentOS. На некоторых из дистрибутивах SELinux включен по умолчанию, что может вызвать некоторые нежелательные действия с его стороны, если вы не понимаете как SELinux работает или как его настроить.
Чтобы отключить SELinux можно использовать любые из 4-х различных методов, упомянутых в этой статье.
SELinux будет применять политики безопасности в том числе обязательного контроля доступа который определен в Linux Kernel. Каждые файлы и процессы в системе будут помечены определенными ярлыками, которые будут использоваться в SELinux. Вы можете использовать команду и просматривать эти ярлыки, как показано ниже:
# ls -Z /etc/
Это не полный список который я привел, он может быть другой у вас.
1-й метод отключения SELinux на CentOS. Временно.
Чтобы отключить SELinux временно необходимо изменить /selinux/enforce, как показано ниже. Обратите внимание, что этого параметра уже не будет после перезагрузки системы.
И так, проверим какое состояние имеет SELinux на сервере:
# cat /selinux/enforce 1
Или, можно использовать:
# /usr/sbin/sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: permissive Mode from config file: enforcing Policy version: 24 Policy from config file: targeted
Это означает что он включен. Чтобы выключить, используем следующую команду:
# echo 0 > /selinux/enforce
И, снова проверяем:
# cat /selinux/enforce 0
Возможные параметры для setenforce являются:
- 1 (включить).
- 0 (отключить).
Вы также можете использовать команду setenforce, как показано ниже, чтобы отключить SELinux. Вот пример выполнения этой команды:
# setenforce 0
Или, предоставлю еще один вариант использования:
# setenforce Permissive
PS: Для проверки, служит еще одна замечательная команда:
# getenforce Permissive
2-й метод отключения SELinux на CentOS. Раз и навсегда!
Проверим состояние SELinux на CentOS.
# cat /etc/selinux/config
У меня он включен, я хочу его выключить, то для этого нужно открыть конфиг и прописать:
# vim /etc/selinux/config
Нужно найти:
SELINUX=enabled
Заменить на:
Как показано на следующем скриншоте:
После чего нужно перезапустить нашу ОС:
# reboot
3-й метод. Отключение SELinux в самом загрузчике Grub.
Если вы не можете найти /etc/selinux/config на вашей системе, вы можете передать отключить SELinux путем передачи параметра в загрузчик GRUB, как показано ниже.
# cat /boot/grub/grub.conf
4-й метод. Отключение только конкретной услуги в SELinux — HTTP / Apache
Если вы не заинтересованы в отключении всего SELinux, вы также можете отключить SELinux только для конкретной услуги. Например, вы хотите отключить SELinux для обслуживания HTTP / Apache, то нужно изменить переменную httpd_disable_trans в файле /etc/selinux/targeted/booleans.
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
Значение 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:
Если это не так, то выполните команду от root пользователя для исправления ошибок в отображениях пользователей. Безопаснее проигнорировать предупреждения SELinux-user username is already defined , если они появляются, где username может быть unconfined_u , guest_u , или xguest_u.
В версии Android 5.0 Lollipop компания Google по умолчанию активировала функцию SeLinux по умолчанию, что сильно усложнило возможность модификацию системного раздела! Как отключить? Читайте на !
Для тех кто любит модифицировать прошивку или необходимо встроить приложение компания Google крепко постаралась чтобы этого недопустить — активирована технология selinux , которая «ломает» файлы которые попадают в системный раздел, а также заимствованная у Samsung и модифицированная система безопасности на основе Knox . Все это создано для того чтобы мы простые пользователи не могли изменять системный раздел! Пора это исправить!
Что необходимо чтобы отключить защиту в Android?
1. Компьютер с ОС UBUNTU
2. Ядро boot.img от вашего смартфона или планшета Android
Инструкция как в ядре Android отключить защиту
Подготовка
Установим пакет встраивающий открытие терминала в файловом менеджере
1. Открываем терминал и вводим следующую команду
Для 32х разрядных систем:
sudo apt-get install nautilus-open-terminal:i386
Для 64х разрядных систем:
sudo apt-get install nautilus-open-terminal
2. После чего выполнить команду перезапуска файлового менеджера
3. Установить пакет необходимый для работы с ядром Android
sudo apt-get install abootimg
Работа с ядром
1. Создайте в папке home (Домашняя папка) папку с любым удобным именем и переместите туда ядро Android — boot.img . (В примере будет указана папка kernel)
2. Перейдите в папку kernel , в любом пустом месте нажмите правую кнопку мыши и выбрать «Открыть в терминале»
3. В открывшемся терминале введите команду:
abootimg -x boot.img
После чего в папке kernel вы увидите что появились новые папке (ядро распаковано)
4. Создадим новую папку (назовем ее rw ) внутри папки kernel , в терминале пишем
5. Пишем команду в терминале для дальнейшей распаковки раздела initrd.img
zcat ../initrd.img | cpio -i
6. После чего в папке rw
вы обнаружите множество файлов
7. Найдите и откройте файл default.prop
8. В файле измените строку
и сохраните файл и выйдете с него
9. В терминале выполняем сборку файла initrd.img, пишем команду
find . | cpio -o -H newc | gzip > ../initrd.img
10. Возвращаемся обратно в папку kernel, для этого в терминале пишем
11. Собираем ядро Android с внесенными изменениями
abootimg --create boot.img -k zImage -r initrd.img
и после еще одну команду
abootimg --create boot.img -f bootimg.cfg -k zImage -r initrd.img
Ядро Android с поддержкой init.d собрано! Далее вам необходимо прошить!
На этом все! Оставайтесь с и подписывайтесь в социальные группы! Дальше будет интересней!
Которая обеспечивает механизм для поддержки политики безопасности контроля доступа. SELinux иногда может стать на вашем пути. Поэтому вам необходимо отключить-деактивировать SELinux . Тем не менее, прежде чем выключить-деактивировать SELinux убедитесь, у вас есть веские причины, почему вы делаете это.
Как временно отключить-деактивировать SELinux
Шаг 1: Прежде всего, проверьте текущий статус SELinux с помощью следующей команды:
# getenforce Enforcing #
Использование другого метода командой, которая приводит к тому же:
# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 24 Policy from config file: targeted #
Шаг 2: Для того, чтобы временно отключить-деактивировать SELinux , используйте метод ниже:
# echo 0 > /selinux/enforce
Другой метод
# setenforce 0
Скорее всего вы можете установить его в разрешающий режим. В результате SELinux будет давать предупредительные сообщения, а не исполнять его. Для того, чтобы сделать то же, используйте следующую команду:
# setenforce Permissive
Прежде всего описанный метод, работает до перезагрузке. В результате он будет работать до следующей перезагрузки. Кроме того Если вы хотите сделать это на постоянной основе через перезагрузку, выполните описанную ниже процедуру.
Как отключить-отключить SELinux навсегда
Для того, чтобы отключить его навсегда, измените значение параметра “SELinux ” на “disabled ” в файле “/etc/sysconfig/SELinux “, как показано ниже
Наконец перепроверьте с помощью команды ниже:
# sestatus SELinux status: disabled
Всем привет, давайте поговорим немного о SELinux, но перед этим немного определения для тех, кто не слышал что это вообще такое. SELinux сокращение от анг. слова Security-Enhanced Linux что означает Linux с улучшенной безопасностью. Иными словами это реализация системы принудительного контроля доступа, которая способна функционировать параллельно с классической избирательной системой контроля доступа. Разница в том, что в SELinux посредством определенных политик определяются права доступа самой системой, в свою очередь избирательная система контроля доступа выполняет разделение доступа процессов к ресурсам, основываясь на правах пользователя, для простого понимания это права rwx на трех уровнях – владелец, группа-владелец и остальные пользователи.
После небольшого описания давайте попробуем рассмотреть некоторые команды и параметры SELinux. Наши примеры будут демонстрироваться на операционной системе Linux CentOS 6. Пожалуй, первое и наверное самое востребованное это команды для проверки статуса SELinux.
/usr/sbin/getenforce
/usr/sbin/sestatus
Возвращаемые значения для команды getenforce
Enforcing
– указывает на то что SELinux активирован и правила политики принудительные;
Permissive
– указывает на то что SELinux активирован, но правила политики не принудительные enforced и используются только правила DAC;
Disabled
– указывает на то, что SELinux отключен.
Возвращаемые значения для команды sestatus
Данная команда возвращает помимо статуса SELinux так же используемую политику SELinux, пример:
$ /usr/sbin/sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 23 Policy from config file: targeted
SELinux status: enabled – обозначает что SELinux включен;
Current mode: enforcing – обозначает что SELinux включен в принудительном enforced режиме;
Policy from config file: targeted – обозначает что используется политика SELinux targeted.
Включение SELinux
Включается / отключается SELinux в операционной системе в файле конфигурации
/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
Опция SELINUX=disabled обозначает, что SELinux отключен. Перед тем как запустить SELinux необходимо выполнить некоторые манипуляции.
1. Проверить инсталляцию пакетов SELinux
Rpm -qa | grep selinux rpm -q policycoreutils rpm -qa | grep setroubleshoot
Так же убедитеть в том, что установлены следующие пакеты: selinux-policy-targeted, selinux-policy, libselinux, libselinux-python, libselinux-utils, policycoreutils, setroubleshoot, setroubleshoot-server, setroubleshoot-plugins
. Пакеты policycoreutils-gui, setroubleshoot, selinux-policy-devel,
и mcstrans
опциональны.
Отсутствующие пакеты можно установить с помощью команды (под пользователем root)
Yum install package-name
2. Каждый файл файловой системы должен быть промаркирован контекстом SELinux перед запуском. До этого момента ограниченным доменам может быть отказано в доступе, что может привести к некорректной загрузке операционной системы. Ситуация исправляется выставлением опции SELINUX=permissive в конфигурационном файле /etc/selinux/config.
3. Маркировка файлов произойдет во время следующей перезагрузки системы. Метки для всех файлов выставляются в контексте SELinux в ходе процесса. В последней строке каждый символ * обозначает 1000 промаркированных файлов. Длительность процесса зависит от количества файлов в системе, а так же скорости работы дисков.
*** Warning -- SELinux targeted policy relabel is required. *** Relabeling could take a very long time, depending on file *** system size and speed of hard drives. ****
4. В случае когда политика SELinux принудительно не назначена, и работа происходит в расширительном режиме, то запреты пишутся в лог как действия, которые были бы запрещены в принудительном режиме. Убедитесь что SELinux не запрещает действия во время последней загрузки системы, для этого выполните команду
Grep "SELinux is preventing" /var/log/messages
Вывод должен быть пустой, это означает что всё в порядке, и SELinux не запрещает действия.
5. После того как вы убедились что сообщений о запретах в логах нет, установите параметр 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. После этого операционную систему следует перезапустить. После перезапуска нужно проверить возвращаемое значение Enforcing командой getenforce.
$ /usr/sbin/getenforce Enforcing
7. Для просмотра отображений между SELinux и пользователями системы, выполните команду
/usr/sbin/semanage login –l
Вывод команды должен быть такого плана:
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
Есть некоторые особенности, которые так же следует учитывать. При отключенном SELinux созданные пользователями файлы не маркируются, вследствие чего, при переводе в состояние enforcing могут появляться проблемы. Маркировка файлов произойдет по изменению опции с disabled на permissive/enforcing режим, таким образом, будет предотвращена проблема с появлением немаркированных файлов.