Що таке SELinux і як він може підвищити безпеку на серверах Linux?
Коли більшість системних адміністраторів думають про посилення безпеки сервера Linux, вони зосереджуються на основах: оновленні пакетів, налаштуванні правил брандмауера та обмеженні доступу SSH. Це все дійсні та необхідні кроки — але вони залишають значну прогалину. Один з найпотужніших і найменш використовуваних механізмів безпеки, доступних на Linux, — це SELinux (Security-Enhanced Linux), фреймворк обов’язкового контролю доступу на рівні ядра, розроблений для локалізації загроз до того, як вони переростуть у повну компрометацію системи.
Незалежно від того, чи ви запускаєте середовище VPS Hosting, високонавантажену програму на Dedicated Servers або багатотенантну платформу Shared Web Hosting, SELinux може бути вирішальним шаром, який перетворює серйозну брешу на локалізовану, відновлювану інцидент.
Що таке SELinux?
SELinux — це модуль безпеки ядра Linux, який реалізує обов’язковий контроль доступу (MAC). Щоб зрозуміти, чому це важливо, спочатку потрібно зрозуміти, що він замінює — або, точніше, що він доповнює.
Традиційна модель безпеки Linux базується на дискреційному контролі доступу (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 працює, призначаючи контекст безпеки (мітку) кожному процесу, файлу, порту та мережевому сокету в системі. Політики потім визначають, які контексти дозволені взаємодіяти один з одним. Ядро застосовує ці правила при кожній спробі доступу.
Конкретний приклад
| Об’єкт | Контекст безпеки |
|---|---|
| Процес Apache | httpd_t |
| Файли веб-сайту | httpd_sys_content_t |
| Файл паролів Shadow | shadow_t |
Політика SELinux дозволяє httpd_t читати файли з міткою httpd_sys_content_t. Вона не дозволяє httpd_t читати shadow_t.
Якщо Apache — законно або через експлуатацію вразливості — спробує прочитати /etc/shadow, ядро відхилить запит і запише детальний запис про порушення до /var/log/audit/audit.log. Атака блокується та документується одночасно.
Режими роботи SELinux
SELinux працює в трьох різних режимах:
| Режим | Поведінка |
|---|---|
| Enforcing | Політики активно застосовуються. Порушення блокуються та реєструються. |
| Permissive | Порушення реєструються, але не блокуються. Корисно для аудиту та розробки політик. |
| Disabled | SELinux повністю вимкнено. Не рекомендується для виробничих середовищ. |
Перевірка та встановлення поточного режиму
# 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 після ручних операцій з файлами у веб-коренях та каталогах додатків.
Неперевірення журналів у режимі Permissive. Пропуск фази Permissive та перехід прямо до Enforcing на виробничому сервері — це рецепт непередбачених збоїв. Завжди перевіряйте політики на реальному трафіку перед їх застосуванням.
SELinux та AlexHost: готова до виробництва безпека з самого початку
Сервери AlexHost, на яких працюють корпоративні дистрибутиви Linux (AlmaLinux, Rocky Linux, CentOS), мають SELinux, доступний з коробки. Незалежно від того, розгортаєте ви стек веб-додатків, сервер баз даних чи контейнеризоване середовище мікросервісів, SELinux забезпечує базовий рівень контролю доступу, який робить ваші робочі навантаження стійкими до експлуатації.
Якщо ви керуєте своїм сервером через панель керування, середовища VPS з cPanel повністю сумісні з SELinux у режимі Targeted, а сам cPanel поставляється з конфігураціями, що враховують SELinux, для своїх керованих сервісів.
Для команд, які потребують повного контролю над своєю позицією безпеки — включаючи користувацькі модулі політики SELinux, конфігурації MLS або посилення, керовані відповідністю — Виділені сервери забезпечують ізоляцію та доступ на рівні root, необхідні для впровадження та обслуговування політик MAC корпоративного рівня без обмежень спільної інфраструктури.
Висновок
SELinux — це не просто додатковий модуль безпеки — це фундаментальний архітектурний компонент, який переосмислює те, як Linux забезпечує контроль доступу на рівні ядра. Обмежуючи процеси добре визначеними доменами безпеки, застосовуючи політики найменших привілеїв, які навіть root не може обійти, та генеруючи детальні журнали аудиту кожної спроби відмови в доступі, SELinux перетворює стандартний сервер Linux на значно більш стійку та захищену систему.
Так, SELinux вимагає інвестицій: розуміння контекстів безпеки, написання або налаштування політик та прихильності до робочого процесу, який розглядає відмови як інформацію, а не як перешкоди. Але для будь-якого сервера, який обробляє конфіденційні дані, запускає публічні сервіси або працює в рамках нормативної бази відповідності, ця інвестиція не є необов’язковою — вона є базовою.
Налаштуйте його правильно, утримуйте його в режимі Enforcing, і SELinux буде мовчки стримувати загрози, які в іншому випадку скомпрометували б всю вашу інфраструктуру.
на всіх хостингових послугах