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
Файл теневых паролей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Нарушения регистрируются, но не блокируются. Полезно для аудита и разработки политик.
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 поставляется с несколькими типами политик, подходящими для различных сред:

Целевая политика (по умолчанию и рекомендуется)

Применяет ограничения MAC только к сервисам, обращенным к сети, таким как Apache, Nginx, Postfix, Dovecot и DNS. Все остальные процессы работают в неограниченном домене. Это лучший баланс безопасности и удобства использования для подавляющего большинства рабочих нагрузок VPS и выделенных серверов.

Строгая политика

Применяет MAC ко всем процессам в системе, включая пользовательские сеансы. Обеспечивает максимальную безопасность, но требует значительно большего управления политиками и операционного опыта.

MLS/MCS (многоуровневая безопасность / многокатегорийная безопасность)

Продвинутые типы политик, разработанные для государственных, классифицированных или высокорегулируемых сред, где данные должны быть изолированы на нескольких уровнях конфиденциальности одновременно.

Для большинства развертываний производственных серверов целевая политика — правильный выбор.

Почему 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 и переход прямо к Enfor

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать