Если вы хоть немного работали с Linux, возможно, сталкивались с загадочной аббревиатурой SELinux. А может, даже пробовали его отключить, когда что-то «вдруг не работает». Давайте разберёмся, что это за механизм, почему его не стоит игнорировать — и как он помогает сделать систему намного безопаснее.
Содержание
SELinux — это не просто защита, а усиленная безопасность
Security-Enhanced Linux (SELinux) — это система контроля доступа, встроенная прямо в ядро Linux. Её изначально разработали в NSA (Агентство национальной безопасности США) совместно с Red Hat, и главная её задача — добавить дополнительный уровень защиты поверх стандартных прав доступа.
То есть даже если у процесса есть root-доступ, SELinux всё равно может его остановить. Да, настолько серьёзно.
DAC vs MAC: в чём разница?
Обычная модель прав в Linux называется DAC (Discretionary Access Control) — это когда пользователь или админ сам решает, кто и что может делать с файлами.
А вот SELinux использует MAC (Mandatory Access Control) — модель, в которой права задаются централизованной политикой безопасности. И эта политика обязательна для всех — даже для root. Это позволяет гораздо точнее управлять поведением приложений и процессов в системе.
Контексты безопасности — ключ к пониманию SELinux
Каждому процессу и файлу SELinux присваивает контекст безопасности. Он включает:
тип объекта, например: httpd_sys_content_t — контент для веб-сервера;
роль и домен процесса, например: httpd_t — сам веб-сервер.
Когда процесс пытается обратиться к файлу, SELinux проверяет: разрешает ли политика такие действия с учётом их контекстов. Если нет — доступ блокируется. И неважно, что пользователь root.
Почему SELinux так важен?
Представьте, что злоумышленник получил доступ к системе. В обычной Linux-модели он может делать почти всё, если взломал пользователя с нужными правами. А SELinux не даст этому «всё» произойти, потому что процессы не смогут выйти за пределы строго определённых правил.
Это особенно критично на серверах с публичным доступом — веб-серверы, почтовики, базы данных. Там SELinux помогает изолировать процессы, минимизировать последствия уязвимостей и сдерживать вредоносные действия.
Главная отрицательная черта системы — несколько «кривая» обучения, мешающая «работать как привыкли», если не иметь понимать, как SELinux устроен. Ошибки конфигурации могут блокировать нужные процессы, а диагностика требует навыков чтения журналов (/var/log/audit/audit.log).
Режимы работы SELinux:
Enforcing — политика активна, запрещенные действия блокируются
Permissive — действия не блокируются, но журналируются:
Disabled — SELinux отключен
Проверить режим можно так:
Или через:
Вывод:
SELinux — мощный инструмент для усиления защиты Linux-систем. Он может показаться сложным и даже мешающим на первых порах, но на деле — это один из самых эффективных способов ограничить потенциальный ущерб от уязвимостей и ошибок конфигурации.
Если вы работаете с сервером — не спешите его отключать. Лучше понять, как он работает. А в следующих постах я расскажу, как настраивать SELinux-политики и разбирать ошибки доступа