Налаштування SELinux, увімкнення, вимкнення. SELinux - теорія Суб'єкти та об'єкти

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 на Хабре вже писали, однак, не так багато опубліковано докладних мануалів за цією системою. Сьогодні ми публікуємо саме такий, докладний мануал SELinux, починаючи від інформації по системі, і закінчуючи гнучким налаштуванням політик.
Для того, щоб не перетворювати пост на «простирадло», складне для розуміння, ми вирішили розділити мануал на дві частини. Перша розповідатиме про саму систему, і деякі її особливості. Друга – про налаштування політик. Зараз публікуємо першу частину, трохи згодом буде опубліковано і другу частину.

1. Введення

SELinux (SELinux) - це система примусового контролю доступу, реалізована лише на рівні ядра. Вперше ця система з'явилася в четвертій версії CentOS, а в 5 та 6 версії реалізація була суттєво доповнена та покращена. Ці покращення дозволили SELinux стати універсальною системою, здатною ефективно вирішувати багато актуальних завдань. Варто пам'ятати, що класична система прав Unix застосовується першою, і керування перейде до SELinux лише в тому випадку, якщо ця первинна перевірка буде успішно пройдена.

1.1 Деякі актуальні завдання.

Щоб зрозуміти, у чому полягає практична цінність SELinux, розглянемо кілька прикладів, коли стандартна система контролю доступу недостатня. Якщо SELinux вимкнено, вам доступна лише класична дискреційна система контролю доступу, яка включає DAC (виборче управління доступом) або ACL (списки контролю доступу). Тобто йдеться про маніпулювання правами на запис, читання та виконання на рівні користувачів та груп користувачів, чого в деяких випадках може бути недостатньо. Наприклад:

- Адміністратор не може повністю контролювати дії користувача. Наприклад, користувач цілком здатний дати решті користувачів права на читання власних конфіденційних файлів, таких як ключі SSH.

Процеси можуть змінювати налаштування безпеки. Наприклад, файли, що містять пошту користувача повинні бути доступні для читання тільки одному конкретному користувачеві, але поштовий клієнт цілком може змінити права доступу так, що ці файли будуть доступні для читання всім.

Процеси наслідують права користувача, який їх запустив. Наприклад, заражена трояном версія браузера Firefox може читати SSH-ключі користувача, хоча немає для цього жодних підстав.

По суті, в традиційній моделі виборчого управління доступом (DAC) добре реалізовані тільки два рівні доступу - користувач і суперкористувач. Немає простого методу, який би дозволив встановлювати для кожного користувача необхідний мінімум привілеїв.
Звичайно, є безліч методів обходу цих проблем у рамках класичної моделі безпеки, але жоден із них не є універсальним.

1.1.1 Основні терміни, що використовуються в SELinux:

Домен- Список дій, які може виконувати процес. Зазвичай як домену визначається мінімально-можливий набір дій, з яких процес здатний функціонувати. Таким чином, якщо процес дискредитовано, зловмиснику не вдасться завдати великої шкоди.

Роль- Список доменів, які можуть бути застосовані. Якщо якогось домену немає в списку доменів якоїсь ролі, то дії цього домену не можуть бути застосовані.

Тип- Набір дій, які допустимі по відношенню до об'єкта. Тип відрізняється від домену тим, що він може застосовуватися до пайпів, каталогів та файлів, тоді як домен застосовується до процесів.

Контекст безпеки- всі атрибути SELinux – ролі, типи та домени.

1.2 Вирішення проблем традиційної моделі безпеки.

SELinux слідує моделі мінімально необхідних привілеїв для кожного сервісу, користувача та програми набагато суворіше. За замовчуванням встановлено «заборонний режим», коли кожен елемент системи має ті права, які життєво необхідні для функціонування. Якщо ж користувач, програма або сервіс намагаються змінити файл або отримати доступ до ресурсу, який явно не потрібен для їх вирішення, то їм буде просто відмовлено в доступі, а така спроба буде зареєстрована в журналі.

SELinux реалізована на рівні ядра, так що прикладні програми можуть зовсім нічого не знати про версію цієї системи примусового контролю доступу, особливості її роботи і т.д. У разі грамотного налаштування SELinux ніяк не вплине на функціонування сторонніх програм і сервісів. Хоча, якщо програма здатна перехоплювати повідомлення про помилки цієї системи контролю доступу, зручність користування таки програмою істотно зростає. Адже у разі спроби доступу до захищеного ресурсу або файлу, SELinux передає в основну програму помилку із сімейства «access denied». Але лише деякі програми використовують отримані від SELinux коди повернення системних викликів.

Ось кілька прикладів використання SELinux, які дозволяють побачити, як можна збільшити рівень безпеки всієї системи.

- Створення та налаштування списку програм, які можуть читати ssh-ключі.

Запобігання несанкціонованому доступу до даних через mail-клієнт.

Налаштування браузера таким чином, щоб він міг читати у домашній папці користувача лише необхідні для функціонування файли та папки.

2. Режими роботи SELinux

SELinux має три основні режими роботи, при цьому встановлено режим Enforcing. Це досить жорсткий режим, і в разі потреби він може бути змінений більш зручним для кінцевого користувача.

Enforcing: Режим за замовчуванням. При виборі цього режиму всі дії, які якимось чином порушують поточну безпекову політику, будуть блокуватися, а спроба порушення буде зафіксована в журналі.

Permissive: У разі використання цього режиму, інформація про всі дії, які порушують поточну безпекову політику, будуть зафіксовані в журналі, але самі дії не будуть заблоковані.

Disabled: Повне вимкнення системи примусового контролю доступу.

Ви можете переглянути поточний режим та інші налаштування SELinux (а в разі потреби і змінити його) за допомогою спеціального GUI-інструменту, доступного в меню "Адміністрування" (system-config-selinux). Якщо ви звикли працювати в консолі, то можете подивитися поточний статус командою sestatus.

# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: налаштування Mode від файлу config: enforcing Policy version: 21 Policy from config file: targeted

Також ви можете дізнатися про статус SELinux за допомогою команди getenforce.
Команда «setenforce» дозволяє швидко перемикатися між режимами Enforcing та Permissive, зміни набувають чинності без перезавантаження. Але якщо ви вмикаєте або відключаєте SELinux, потрібно перезавантаження, адже потрібно заново встановлювати позначки безпеки у файловій системі.
Для того, щоб вибрати режим за промовчанням, який буде застосовуватися при кожному завантаженні системи, задайте значення рядка "SELINUX=" у файлі /etc/selinux/config, задавши один із режимів - "enforcing", "permissive" або "disabled" . Наприклад: "SELINUX=permissive".

3. Політики SELinux

Як зазначалося раніше, SELinux за замовчуванням працює в режимі Enforcing, коли будь-які дії, крім дозволених, автоматично блокуються, кожна програма, користувач або сервіс мають лише ті привілеї, які необхідні їм для функціонування, але не більше. Це досить жорстка політика, яка має як плюси - найбільший рівень інформаційної безпеки, так і мінусами - конфігурування системи в такому режимі пов'язане з великими затратами системних адміністраторів, до того ж, великий ризик того, що користувачі зіткнуться з обмеженням доступу, якщо захочуть використовувати систему хоч трохи нетривіальним чином. Такий підхід допустимо в Enterprise-секторі, але неприйнятний на комп'ютерах кінцевих користувачів. Багато адміністраторів просто відключають SELinux на робочих станціях, щоб не стикатися з подібними проблемами.

Для того, щоб уникнути цього, для ключових додатків та сервісів, таких як, наприклад, httpd, named, dhcpd, mysqld, визначено заздалегідь налаштовані цільові політики, які не дозволять отримати зловмиснику доступ до важливих даних. Ті ж програми, для яких не визначено політику, виконуються в домені unconfined_t і не захищаються SELinux. Таким чином, правильно обрані цільові політики дозволяють досягти прийнятного рівня безпеки, не створивши при цьому зайвих проблем для користувача.

4. Контроль доступу до SELinux

SELinux надає такі моделі керування доступом:

Type Enforcement (TE): основний механізм контролю доступу, який використовується у цільових політиках. Дозволяє детально, на найнижчому рівні керувати дозволами. Найгнуткіший, але й найбільш трудомісткий для системного адміністратора механізм.

Role-Based Access Control (RBAC): у цій моделі права доступу реалізуються як ролі. Ролью називається дозволу виконання певних дій однією чи кількома елементами системи з інших частин системи. По суті, RBAC є подальшим розвитком TE.

Multi-Level Security (MLS): багаторівнева модель безпеки, в якій всім об'єктам системи надається певний рівень доступу. Дозвіл або заборона доступу визначається лише співвідношенням цих рівнів.

Усі процеси та файли в рамках SELinux мають контекст безпеки.
Давайте подивимося на контекст на практиці, детально розглянувши стартову сторінку веб-сервера Apache, що знаходиться за адресою /var/www/html/index.html

$ ls -Z /var/www/html/index.html -rw-r--r-- username username system_u:object_r:httpd_sys_content_t /var/www/html/index.html

На додаток до стандартних прав доступу до файлу ми можемо бачити контекст безпеки SELinux: system_u: object_r: httpd_sys_content_t.

Контекст виходить з user:role:type:mls, але поля user:role:type відображаються, тоді як поле mls приховано. Також ми можемо бачити цільову політику, у разі httpd_sys_content_t.

Тепер розглянемо контекст безпеки SELinux для процесу httpd (веб-сервер Apache):

$ps axZ | grep httpd system_u:system_r:httpd_t 3234 ? Ss 0:00 /usr/sbin/httpd

Як бачимо, цей процес запущено на домені httpd_t.

Ну а тепер давайте подивимося на контекст безпеки файлу в нашому домашньому каталозі:

$ ls -Z /home/username/myfile.txt -rw-r--r-- username username user_u:object_r:user_home_t /home/username/myfile.txt

Ми бачимо, що файл має тип user_home_t, цей тип надається за замовчуванням всім файлам у домашньому каталозі.
Доступ дозволено лише між елементами з однаковим типом, тому веб-сервер Apache може без проблем читати файл /var/www/html/index.html, який має тип httpd_sys_content_t. У той же час, оскільки Apache запущений на домені httpd_t і не має заповнених полів userid:username, він не може отримати доступ до файлу home/username/myfile.txt, хоча цей файл доступний для читання процесам, для яких не визначена цільова Політика. Таким чином, якщо веб-сервер Apache буде зламаний, зловмисник не зможе отримати доступ до файлів або запускати процеси, які не знаходяться в домені httpd_t.

5. Усунення проблем SELinux

Рано чи пізно відбувається ситуація, коли ви стикаєтеся із ситуацією, коли SELinux забороняє вам доступ до чогось. Є кілька основних причин відмови доступу:

Неправильно маркований файл.
- Процес працює у неправильному контексті
- Помилка у політиці. Процес вимагає доступу до файлу, який не було враховано під час створення політики.
- Спроба вторгнення.

Перші три причини відмови доступу дозволяються досить легко, тоді як під час спроби вторгнення звучить сигнал тривоги і користувачеві надсилається відповідне повідомлення.
Щоб розібратися з будь-якою проблемою, достатньо переглянути журнал SELinux. За замовчуванням він записується процесом auditd у файл /var/log/audit/audit.log. Якщо цей процес не запущений, SELinux веде журнал у файлі /var/log/messages, у цьому випадку всі повідомлення системи контролю доступу маркуються ключем AVC, що дозволяє швидко відфільтрувати потрібні рядки, наприклад. за допомогою команди grep.
В останні версії дистрибутивів (починаючи з CentOS 5) включена утиліта з графічним інтерфейсом користувача, яка дозволяє відображати журнал SELinux у зручному та зрозумілому для користувача вигляді. Викликати її можна з консолі, набравши sealert -b. Утиліта входить до складу пакету setroubleshoot. У разі, якщо X-сервер не запущено, ви можете згенерувати зрозумілі та зручні для людини звіти наступною командою:

Sealert -a /var/log/audit/audit.log > /path/to/mylogfile.txt

5.1 Зміна позначок контексту безпеки файлів.

Команда «chcon» дозволяє змінювати контекст SELinux для файлів або каталогів так само, як команди «chown» і «chmod» дозволяють змінювати власника файлу або права доступу до нього в рамках стандартної системи контролю доступу.

Розглянемо кілька прикладів.
Припустимо, що в системі встановлений веб-сервер Apache і нам необхідно змінити папку, в якій зберігаються сайти (за замовчуванням це /var/www/html/) на, скажімо, /html/ і створити в цьому каталозі файл index.html.
# mkdir /html # touch /html/index.html # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:default_t /html/index.html # ls -Z | grep html drwxr-xr-x root root user_u:object_r:default_t html

Вище ми бачимо, що каталог /html, і файл /html/index.html у межах контексту безпеки мають тип default_t. Це означає, що якщо ми запустимо Apache і спробуємо почати працювати з цим каталогом або файлом, SELinux відмовить нам у доступі. І це буде абсолютно правильно, адже правильний контекст безпеки для файлів, що взаємодіють із Apache, це httpd_sys_content_t.
Змінимо контекст і перевіримо, чи правильно все зроблено:

# chcon -v --type=httpd_sys_content_t /html context /html changed to user_u:object_r:httpd_sys_content_t # chcon -v --type=httpd_sys_content_t /html/index.html context /html/index.html changed to user_u:object_r :httpd_sys_content_t # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:httpd_sys_content_t /html/index.html # ls -Z | grep html drwxr-xr-x root root user_u:object_r:httpd_sys_content_t html
Не обов'язково вручну обробляти кожен файл і кожен каталог, можна просто скористатися опцією рекурсивного обходу каталогу -R:

# chcon -Rv --type=httpd_sys_content_t /html

Подібні зміни контексту безпеки зберігатимуться між перезавантаженнями, однак, при зміні міток файлових систем, зміни зникнуть. У процесі обслуговування та експлуатації, подібне не рідкість. Правильним рішенням у такій ситуації буде (після тестування, звичайно) створити додаткове правило, після чого поєднати його з місцевими локальними правилами. Таким чином, воно матиме більший пріоритет, ніж базові правила.

Для того, щоб SELinux коректно працював навіть після зміни міток файлових систем, ми можемо використовувати як інструменти для керування SELinux c GUI-інтерфейсом, так і консольну утиліту semanage:

Semanage fcontext -a -t httpd_sys_content_t "/html(/.*)?"

У прикладі вище ми надали контекст httpd_sys_content_t всім файлам, що знаходяться в каталогу /html.

5.2 Відновлення контексту безпеки SELinux.

Команда «restorecon» дозволяє змінити контекст безпеки на той, який було присвоєно за замовчуванням.
Знову використовуємо як приклад веб-сервер Apache. Припустимо, що користувач відредагував у своєму домашньому каталозі копію файлу index.html і перемістив (командою mv) його в каталог, де зберігаються сайти (/var/www/html).

Слід звернути увагу, що при копіюванні (команда cp) контекст безпеки файлу співпадатиме з контекстом каталогу призначення, при переміщенні ж контекст безпеки співпадатиме з контекстом джерела. Звичайно, ми могли б використовувати команду chcon для зміни контексту безпеки, але так як переміщені файли знаходяться зараз у каталозі /var/www/html, ми можемо просто відновити параметри контексту для всіх файлів, що знаходяться у цьому каталозі.

Для того, щоб відновити контекст лише для файлу index.html, ми можемо застосувати команду:

# restorecon -v /var/www/html/index.html

Якщо ж ми хочемо рекурсивно обійти весь каталог і змінити контекст для всіх файлів, що містяться в ньому, використовуємо наступну команду:

# restorecon -Rv /var/www/html

5.3 Зміна позначок для всієї файлової системи.

Іноді буває необхідно заново встановлювати позначки безпеки у всій файловій системі. Найчастіше таку операцію проводять при повторному включенні SELinux після того, як система була на деякий час відключена. Також це буває потрібно, якщо ми змінюємо тип управління політиками на strict (у цьому випадку всі процеси працюють у спеціальних доменах, в домені unconfined_t не може працювати ніхто).

Щоб автоматично перерозподілити файлову систему під час наступного перезавантаження, введіть такі команди:
# touch /.autorelabel # reboot
Іноді автоматична перерозмітка не спрацьовує (найчастіше в тих випадках, коли дистрибутив з вимкненою системою SELinux було оновлено). У такому разі скористайтеся наступною командою:

# genhomedircon # touch /.autorelabel # reboot

5.4 Надання доступу до портів.

Нерідко ми хочемо, щоб сервіси, подібні до Apache, мали можливість прослуховувати нестандартні порти і приймати на них вхідні з'єднання. Базові політики SELinux дозволяють отримати доступ тільки до наперед визначених портів, які жорстко пов'язані з тим чи іншим сервісом. Допустимо, ми хочемо, щоб Apache прослуховував 81 порт. У такому разі нам треба додати правило за допомогою команди semanage:

# semanage port -a -t http_port_t -p tcp 81

Повний список портів, до яких SELinux надає доступ, можна переглянути так:

# semanage port -l

У наступній, другій частині мануалу, ми покажемо можливість гнучкого налаштування політик системи.

У деяких дистрибутивах Linux SELinux за замовчуванням увімкнено, і в результаті можуть виникати різні проблеми. Якщо ви не розумієте як працює SELinux і не вмієте правильно його налаштовувати найкраще відключити його доти, доки ви не вивчите основні принципи його роботи

Для відключення SELinuxВи можете використовувати будь-який із 4-ох описаних методів.

Ми не будемо докладно зупинятися на тому, для чого використовується SELinux, і почнемо безпосередньо відключення. Якщо в системі використовується SELinux, виконавши команду ls -Z ви можете побачити таку картинку.

# ls -Z /etc/-rw-r--r-- root root system_u:object_r:etc_t:s0 a2ps.cfg -rw-r--r-- root root system_u:object_r:adjtime_t:s0 adjtime -rw-r--r-- root root system_u:object_r:etc_aliases_t:s0 aliases drwxr-x--- root root system_u:object_r:auditd_etc_t:s0 audit drwxr-xr-x root root system_u:object_r:etc_runtime_t:s0 blk :bluetooth_conf_t:s0 bluetooth drwx------ root root system_u:object_r:system_cron_spool_t:s0 cron.d -rw-rw-r-- root disk system_u:object_r:amanda_dumpdates_t:s0 dumpdates

Метод 1: Тимчасове вимкнення SELinux

Для тимчасового вимкнення SELinux можна модифікувати файл /selinux/enforce. Зверніть увагу, це тимчасове вимкнення, і після перезавантаження системи SELinux працюватиме знову.

# cat /selinux/enforce 1 # echo 0 > /selinux/enforce# cat /selinux/enforce 0

Також можна використовувати команду setenforce, як показано на прикладі нижче. Можливі параметри команди setenforce такі: Enforcing , Permissive, 1 (включити) or 0 (вимкнути).

# setenforce 0

Метод 2: Постійне вимкнення SELinux

Для постійного вимкнення SELinux змініть файл /etc/selinux/config і встановіть SELINUX=disabled як показано нижче. Після цього перезавантажте сервер.

# cat /etc/selinux/config SELINUX=disabled SELINUXTYPE=targeted SETLOCALDEFS=0

Метод 3: Вимкнення SELinux у завантажувачі Grub

Третій спосіб використовує можливості завантажувача системи GRUB для вимкнення SELinux. Додайте в кінець рядка selinux=0

# cat /boot/grub/grub.conf default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu title Enterprise Linux Enterprise Linux Server (2.6.18-92.el5PAE) root (hd0,0) -2.6.18-92.el5PAE ro root = LABEL = / rhgb quiet selinux=0 initrd /boot/initrd-2.6.18-92.el5PAE.img title Enterprise Linux Enterprise Linux Server (2.6.18-92.el5) root (hd0,0) kernel /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet selinux=0 initrd /boot/initrd-2.6.18-92.el5.img

Метод 4: Вимикаємо SELinux лише для певних сервісів - HTTP/Apache

Якщо вам необхідно не повністю відключити SELinux, а лише для певних служб, у вас є така можливість. Наприклад відключимо SELinux для HTTP/Apache, змінивши значення змінної httpd_disable_transу файлі /etc/selinux/targeted/booleans.

# grep httpd /etc/selinux/targeted/booleans httpd_builtin_scripting=1 httpd_disable_trans=1 httpd_enable_cgi=1 httpd_enable_homedirs=1 httpd_ssi_exec=1 httpd_tty_comm=0 httpd_unified=1

Встановіть змінну, також використовуючи команду setsebool. Після цього перезапустіть httpd для набрання чинності.

У версії 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 скорочення від англ. слова 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: налаштування Mode з 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

# Це file controls the state of SELinux on the system. # SELINUX = може один з цих трьох цінностей: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= може один з цих двох цінностей: # 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 можна взяти дуже довгий час, залежно від файлу *** система розміру і швидкість hard drives. ****

4. Якщо політика SELinux примусово не призначена, і робота відбувається в розширювальному режимі, то заборони пишуться в лог як дії, які були б заборонені в примусовому режимі. Переконайтеся, що SELinux не забороняє дії під час останнього завантаження системи, для цього виконайте команду

Grep "SELinux is preventing" /var/log/messages

Висновок повинен бути порожнім, це означає, що все в порядку, і SELinux не забороняє дії.
5. Після того, як ви переконалися, що повідомлень про заборони в логах немає, встановіть параметр SELINUX в ​​enforcing (файл /etc/selinux/config):

# Це file controls the state of SELinux on the system. # SELINUX = може один з цих трьох цінностей: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= може один з цих двох цінностей: # 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 режим, таким чином, буде запобігти проблемі з появою немаркованих файлів.