Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!

Используйте код при регистрации:

Skills
25.08.2025

Что такое SELinux и как он может повысить безопасность в Linux?

Когда речь заходит о защите Linux-серверов, большинство администраторов задумываются об основах: обновлении пакетов, настройке брандмауэров, ограничении доступа по SSH. Однако один из самых мощных механизмов безопасности часто остается без внимания – SELinux (Security-Enhanced Linux). Это не просто дополнение, это система безопасности на уровне ядра, призванная остановить вторжение до того, как оно разрастется. Как для VPS, так и для выделенных серверов SELinux может означать разницу между незначительным инцидентом и полной компрометацией системы.

Что такое SELinux?

SELinux – это модуль безопасности ядра Linux, который обеспечивает обязательный контроль доступа (MAC).

  • В традиционной модели DAC (Discretionary Access Control) доступ определяется владельцами файлов, и root имеет неограниченные полномочия.
  • В рамках MAC (SELinux) доступ регулируется общесистемными политиками безопасности. Даже root подвержен ограничениям.

Изначально разработанный АНБ в сотрудничестве с Red Hat, SELinux был интегрирован в ядро Linux в начале 2000-х годов и теперь является стандартом в корпоративных дистрибутивах, таких как RHEL, CentOS, Fedora, AlmaLinux и Rocky Linux.

Проблема: в чем недостатки традиционной системы безопасности Linux

Классическая модель прав доступа UNIX (DAC) имеет критические недостатки:

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

Реальный сценарий:
Уязвимость в загрузке CMS позволяет злоумышленнику запустить веб-оболочку. Без SELinux злоумышленник может прочитать config.php, извлечь учетные данные базы данных и скомпрометировать весь стек. С SELinux процесс веб-сервера (httpd_t) ограничивается и не может получить доступ к файлам за пределами своего домена.

Как работает SELinux

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

Пример:

  • Apache работает в домене httpd_t.
  • Файлы веб-сайта помечены как httpd_sys_content_t.
  • Политика разрешает httpd_t читать только файлы httpd_sys_content_t.

Если Apache пытается прочитать /etc/shadow (shadow_t), ядро отклоняет запрос и регистрирует нарушение.

Режимы работы

  • Enforcing: политики выполняются, нарушения блокируются.
  • Разрешительный: нарушения регистрируются, но не блокируются (полезно для тестирования).
  • Отключен: SELinux отключен (не рекомендуется).

Лучшая практика: начните с Permissive, просмотрите журналы, настройте политики, а затем перейдите к Enforcing для производства.

Почему SELinux важен для хостинга и DevOps

  • Изоляция процессов: ограничивает ущерб при компрометации одного сервиса.
  • Применение наименьших привилегий: даже root не может обойти ограничения политики.
  • Криминалистика и видимость: все запрещенные действия записываются в журнал (/var/log/audit/audit.log).
  • Безопасность контейнеров: предотвращает выход контейнеров Docker/Podman за пределы своих границ.
  • Соответствие требованиям: требуется в регулируемых средах (PCI DSS, HIPAA, развертывания военного класса).

Типы политик

  • Targeted (по умолчанию): ограничивает только сетевые службы (Apache, Nginx, Postfix, Dovecot).
  • Строгая: применяет MAC ко всем процессам.
  • MLS/MCS: расширенные политики для многоуровневой или государственной безопасности.

Для большинства рабочих нагрузок VPS и выделенных серверов целевая политика – это оптимальный баланс между удобством использования и защитой.

Практические примеры

Проверка состояния SELinux

getenforce sestatus

Восстановление файловых контекстов после перемещения веб-файлов

restorecon -Rv /var/www/html

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

ls -Z /var/www/html

Разрешить исходящие соединения веб-служб (например, вызовы API)

setsebool -P httpd_can_network_connect 1

Просмотрите действия, в которых было отказано, в журналах

ausearch -m avc -ts recent

Заключение

SELinux – это не просто дополнительная функция безопасности; это фундаментальная основа, которая переопределяет то, как Linux обеспечивает контроль доступа. Ограничивая процессы, уменьшая влияние уязвимостей и предоставляя подробные журналы аудита, SELinux превращает систему Linux в гораздо более устойчивую среду. Хотя он требует тщательной настройки и понимания, преимущества безопасности, которые он привносит в современные серверные инфраструктуры, делают его необходимым компонентом для любого производственного развертывания.

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!

Используйте код при регистрации:

Skills