JavaRush /Курси /Docker SELF /Вступ до SELinux: перевірка статусу, увімкнення, базові к...

Вступ до SELinux: перевірка статусу, увімкнення, базові команди

Docker SELF
Рівень 5 , Лекція 2
Відкрита

1. Що таке SELinux і навіщо він потрібен?

SELinux (Security-Enhanced Linux) — це модуль безпеки, який підсилює традиційну модель управління правами доступу, додаючи концепцію мандатного контролю. Він дозволяє адміністратору налаштовувати більш суворі обмеження для користувачів і навіть процесів, щоб мінімізувати потенційну шкоду від можливих атак.

У чому його унікальність?

Уявіть, що ваша система — це будинок. Традиційні права доступу (rwx для користувача, групи і решти) — це як ключі від замків на дверях. Але що якщо хтось зламає двері? SELinux стає другою лінією оборони, підсилюючи захист за допомогою правил поведінки: "Гей, навіть якщо ти всередині, у ванну кімнату заходити не можна!"

Основні завдання SELinux:

  1. Захист від несанкціонованого доступу до процесів та файлів.
  2. Зменшення шкоди від атак, навіть якщо процес був зламаний.
  3. Принципи "захисту за замовчуванням" (все заборонено, окрім дозволеного).

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

SELinux може працювати в трьох режимах:

  1. Enforcing — активний, застосовує політику безпеки і блокує порушуючі процеси.
  2. Permissive — тільки записує порушення в журнали, але не блокує дії.
  3. Disabled — повністю вимкнений
Цікавий факт:

SELinux у режимі enforcing нагадує строгого старшого брата для вашої системи. Permissive — це молодший брат, який тільки скаржиться, але нічого не робить.


2. Перевірка статусу SELinux

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

Команда getenforce

Ця команда просто скаже тобі, який режим зараз використовується: Enforcing, Permissive, або Disabled.

$ getenforce
Enforcing

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

Команда sestatus

Більш детальний звіт про статус SELinux можна отримати за допомогою цієї команди. Вона покаже поточний стан, активний режим і використовувану політику.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing

Тут ти можеш побачити:

  • enabled/disabled — чи увімкнено SELinux.
  • current mode — активний режим (enforcing, permissive).
  • loaded policy name — яка політика завантажена. Наприклад, "targeted" означає, що SELinux застосовує контроль лише до ключових процесів.

3. Перемикання режимів SELinux

Щоб змінити поточний режим роботи SELinux, використовується команда setenforce.

Перемикання в permissive-режим

Якщо ти хочеш тимчасово "послабити повідець" SELinux, можна увімкнути permissive-режим.

$ sudo setenforce 0

Тепер SELinux буде тільки фіксувати порушення, але не блокувати їх. Ти можеш перевірити нове налаштування за допомогою команди getenforce:

$ getenforce
Permissive

Перемикання назад в enforcing-режим

Коли захочеш знову увімкнути суворий контроль, виконай:

$ sudo setenforce 1

І, звісно, перевір результат:

$ getenforce
Enforcing

Ця зміна застосовується на льоту, але тільки до наступного перезавантаження системи.


4. Увімкнення SELinux

Якщо SELinux було вимкнено, потрібно внести зміни у конфігураційний файл. SELinux управляється через файл /etc/selinux/config.

Перевірка поточного конфігураційного файлу

Давай подивимося, що там налаштовано. Використовуй будь-який текстовий редактор, наприклад nano:

$ sudo nano /etc/selinux/config

Ти побачиш щось типу:

# This file controls the state of SELinux on the system.
SELINUX=disabled
SELINUXTYPE=targeted

Переключення SELinux в активний стан

Щоб увімкнути SELinux, зміни рядок SELINUX=disabled на SELINUX=enforcing або SELINUX=permissive.

Ось приклад файлу після змін:

# This file controls the state of SELinux on the system.
SELINUX=enforcing
SELINUXTYPE=targeted

Після редагування збережи файл і перезапусти систему:

$ sudo reboot

Після перезавантаження ти можеш перевірити статус за допомогою sestatus, щоб переконатися, що SELinux активний.


5. Розбір контекстів SELinux

Що таке контексти?

Контексти — це мітки, які SELinux використовує для управління доступом. У кожного файлу, процесу і користувача є свій контекст.

Ти можеш подивитися контексти файлів за допомогою команди ls -Z. Ось приклад:

$ ls -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

Що це означає?

  1. unconfinedu — користувач SELinux.
  2. objectr — тип об'єкта.
  3. httpdsyscontent_t — тип доступу (у цьому випадку пов'язано з веб-сервером).
  4. s0 — рівень безпеки.

Зміна контексту

Якщо SELinux заважає роботі твого додатка, можливо, потрібно змінити контекст файлу. Використовуй команду chcon:

$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html

Ця команда тимчасово змінює тип контексту файлу. Але після перезавантаження зміни можуть зникнути, тому для постійних налаштувань краще модифікувати політику SELinux (про це пізніше).


6. Приклад роботи з SELinux

Давайте розберемо приклад. Ви адміністратор сервера, який хоче розгорнути веб-сервер, але SELinux блокує доступ до файлів у каталозі /var/www/html.

Кроки:

  1. Перевірте статус SELinux:

    $ sestatus
    

    Переконайтесь, що SELinux увімкнено та працює в enforcing-режимі.

  2. Перегляньте контексти файлів:

    $ ls -Z /var/www/html
    
  3. Якщо контекст неправильний, змініть його:

    $ sudo chcon -t httpd_sys_content_t /var/www/html/*
    
  4. Перевірте роботу веб-сервера.


7. Типові помилки та проблеми

  1. SELinux вимкнено, і ви цього не помічаєте. Завжди перевіряйте статус за допомогою sestatus. Багато адміністраторів забувають увімкнути SELinux після встановлення системи.

  2. "Чому мій сервіс не працює?" SELinux блокує доступ. Використовуйте audit.log для аналізу:

    $ sudo cat /var/log/audit/audit.log | grep denied
    
  3. Зміни контексту не зберігаються. Використовуйте не chcon, а команди для постійних змін, такі як semanage.

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

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ