15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
25.08.2025

Що таке SELinux і як він може підвищити безпеку на серверах Linux?

Коли більшість системних адміністраторів думають про посилення безпеки сервера Linux, вони зосереджуються на основах: оновлення пакетів, налаштування правил брандмауера та обмеження доступу SSH. Це все дійсні та необхідні кроки — але вони залишають значну прогалину. Один з найпотужніших і найчастіше недовикористовуваних механізмів безпеки, доступних на Linux, це SELinux (Security-Enhanced Linux), фреймворк обов’язкового контролю доступу на рівні ядра, розроблений для локалізації загроз до того, як вони переростуть у повну компрометацію системи.

Незалежно від того, чи ви запускаєте середовище VPS Hosting, високонавантажену програму на Dedicated Servers, чи багатотенантну платформу Shared Web Hosting, SELinux може бути вирішальним шаром, який перетворює серйозну брешу на локалізовану, відновлювану інцидент.

Що таке SELinux?

SELinux — це модуль безпеки ядра Linux, який реалізує Mandatory Access Control (MAC). Щоб зрозуміти, чому це важливо, спочатку потрібно зрозуміти, що він замінює — або, точніше, що він доповнює.

Традиційна модель безпеки Linux базується на Discretionary Access Control (DAC). За DAC дозволи доступу визначаються власністю файлів та членством у групі. Користувач root має необмежену владу над всією системою. Якщо зловмисник отримає root, він отримає все.

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

SELinux був спочатку розроблений Агентством національної безпеки (NSA) у співпраці з Red Hat і був інтегрований у основне ядро Linux на початку 2000-х років. Сьогодні це стандартний компонент корпоративних дистрибутивів Linux, включаючи RHEL, CentOS, Fedora, AlmaLinux та Rocky Linux.

Де традиційна безпека Linux не справляється

Класична модель дозволів UNIX добре служила Linux протягом десятиліть, але вона має структурні слабкості, які сучасні зловмисники регулярно експлуатують:

  • Root є всемогутнім. Будь-яка експлуатація, яка успішно підвищує привілеї до root, дає зловмиснику необмежений доступ до всієї системи — файлів, баз даних, мережевих сокетів та всього іншого.
  • Компрометація сервісу дорівнює компрометації системи. Вразливий модуль Apache, погано написаний PHP-скрипт або неправильно налаштована програма можуть бути використані для переміщення по всьому серверу.
  • Сучасні вектори атак повністю обходять DAC. Веб-оболонки, експлуатація підвищення привілеїв, втечі контейнерів та атаки на ланцюг постачання розроблені для роботи в межах традиційних дозволів, але все ще спричиняють катастрофічну шкоду.

Сценарій атаки в реальному світі

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

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

З SELinux: Процес веб-сервера Apache запущений у домені httpd_t. Політика суворо обмежує те, до чого httpd_t може отримати доступ. Веб-оболонка не може читати файли поза призначеним доменом контенту, не може відкривати несанкціоновані мережеві з’єднання та не може торкатися файлів конфігурації системи. Брешу локалізовано на рівні програми.

Це основна цінність SELinux: локалізація шкоди через обмеження процесів.

Як працює SELinux: контексти безпеки та застосування політики

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

Конкретний приклад

Об’єктКонтекст безпеки
Процес Apachehttpd_t
Файли веб-сайтуhttpd_sys_content_t
Файл паролів shadowshadow_t

Політика SELinux дозволяє httpd_t читати файли з міткою httpd_sys_content_t. Вона не дозволяє httpd_t читати shadow_t.

Якщо Apache — законно чи через експлуатацію — спробує прочитати /etc/shadow, ядро відхилить запит і запише детальний запис про порушення до /var/log/audit/audit.log. Атака блокується та документується одночасно.

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

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

РежимПоведінка
EnforcingПолітики активно застосовуються. Порушення блокуються та реєструються.
PermissiveПорушення реєструються, але не блокуються. Корисно для аудиту та розробки політики.
DisabledSELinux повністю вимкнено. Не рекомендується для виробничих середовищ.

Перевірка та встановлення поточного режиму

# Check current SELinux status
getenforce
sestatus

# Temporarily switch to permissive mode (no reboot required)
setenforce 0

# Switch back to enforcing mode
setenforce 1

Щоб постійно змінити режим, відредагуйте /etc/selinux/config та встановіть SELINUX=enforcing (або permissive), потім перезавантажте.

> Найкраща практика: Розгортайте нові сервери спочатку в режимі Permissive. Переглядайте журнали аудиту, визначайте будь-які законні процеси, які позначаються, точно налаштовуйте ваші політики, а потім перейдіть на Enforcing для виробництва. Цей підхід запобігає операційним збоям, забезпечуючи точність ваших політик.

Типи політик SELinux

SELinux поставляється з кількома типами політик, придатними для різних середовищ:

Targeted Policy (За замовчуванням і рекомендується)

Застосовує обмеження MAC лише до сервісів, орієнтованих на мережу, таких як Apache, Nginx, Postfix, Dovecot та DNS. Усі інші процеси запущені в необмеженому домені. Це найкращий баланс безпеки та зручності для переважної більшості навантажень VPS та виділених серверів.

Strict Policy

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

MLS/MCS (Multi-Level Security / Multi-Category Security)

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

Для більшості виробничих розгортань серверів Targeted Policy є правильним вибором.

Чому SELinux важливий для хостингу, DevOps та відповідності

SELinux забезпечує відчутні переваги безпеки в широкому спектрі операційних контекстів:

Ізоляція процесів

Кожен обмежений сервіс працює в межах своєї власної домену безпеки. Компрометація одного сервісу — скажімо, веб-програми — не надає доступу до інших сервісів, що запущені на тому ж хості. Це особливо цінно в середовищах серверів з кількома програмами.

Застосування принципу найменших привілеїв

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

Журнали аудиту та судово-медична експертиза

Кожна відхилена спроба доступу реєструється в /var/log/audit/audit.log з повним контекстом: залучений процес, ресурс, до якого він намагався отримати доступ, контексти безпеки обох та позначка часу. Це робить судово-медичну експертизу після інциденту значно більш ефективною.

Безпека контейнерів

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

Нормативна відповідність

SELinux є обов’язковим контролем у кількох фреймворках відповідності, включаючи PCI DSS, HIPAA та військові/державні стандарти безпеки. Запуск SELinux у режимі Enforcing з документованою політикою часто є передумовою для проходження аудитів безпеки в регульованих галузях.

Основні команди SELinux для системних адміністраторів

Ось найчастіше використовувані команди для управління SELinux у повсякденних операціях:

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

getenforce
sestatus

Відновлення контекстів файлів після переміщення файлів веб-сайту

Коли файли переміщуються, а не копіюються, вони можуть зберегти неправильні мітки безпеки. Використовуйте restorecon для виправлення цього:

restorecon -Rv /var/www/html

Список міток безпеки файлів

ls -Z /var/www/html

Дозволити вихідні з’єднання веб-сервісу (наприклад, для викликів API або проксування)

setsebool -P httpd_can_network_connect 1

Дозволити Apache підключатися до бази даних

setsebool -P httpd_can_network_connect_db 1

Переглядайте останні відхилені дії в журналі аудиту

ausearch -m avc -ts recent

Генерування модуля користувацької політики з відхилень аудиту

audit2allow -a -M my_custom_policy
semodule -i my_custom_policy.pp

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

Поширені помилки SELinux та як їх уникнути

Вимкнення SELinux замість його виправлення. Найпоширеніша помилка, яку роблять адміністратори, — це постійне вимкнення SELinux при виникненні відхилення. Це видаляє весь рівень захисту. Замість цього використовуйте audit2allow та setsebool для вирішення конкретних проблем, зберігаючи SELinux активним.

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

15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати