SELinux
Логотип программы SELinux
Скриншот программы SELinux
Графический интерфейс администрирования SELinux в Fedora 8
Тип Безопасность
Разработчик Red Hat
Написана на Си
Операционная система Компонент ядра Linux
Первый выпуск 1998
Последняя версия
Кандидат в релизы
Репозиторий github.com/SELinuxProjec…
Лицензия GNU GPL
Сайт selinuxproject.org
Логотип Викисклада Медиафайлы на Викискладе

SELinux (англ. Security-Enhanced Linux — Linux с улучшенной безопасностью) — реализация системы мандатного управления доступа, которая может работать параллельно с классической избирательной системой контроля доступа.

Краткое описание

Оставаясь в рамках избирательной системы контроля доступа, операционная система имеет фундаментальное ограничение в плане разделения доступа процессов к ресурсам — доступ к ресурсам основывается на правах доступа пользователя. Это классические права rwx на трех уровнях — владелец, группа-владелец и остальные.

В SELinux права доступа определяются самой системой при помощи специально определённых политик. Политики работают на уровне системных вызовов и применяются самим ядром (но можно реализовать и на уровне приложения). SELinux действует после классической модели безопасности Linux: через SELinux нельзя разрешить то, что запрещено через права доступа пользователей или групп. Политики описываются при помощи специального гибкого языка описания правил доступа. В большинстве случаев правила SELinux «прозрачны» для приложений, и не требуется никакой их модификации. В состав некоторых дистрибутивов входят готовые политики, в которых права могут определяться на основе совпадения типов процесса (субъекта) и файла (объекта) — это основной механизм SELinux. Две других формы контроля доступа — доступ на основе ролей и на основе многоуровневой системы безопасности. Например, «ДСП», «секретно», «совершенно секретно», «ОВ».

Самый простой для работы и с точки зрения поддержки тип политики — так называемая целевая политика, разработанная в рамках проекта Fedora. В рамках политики описано более 200 процессов, которые могут выполняться в операционной системе. Все, что не описано «целевой» политикой, выполняется в домене (с типом) unconfined_t. Процессы, работающие в этом домене, не защищаются SELinux. Таким образом, все сторонние пользовательские приложения будут без всяких проблем работать в системе с «целевой» политикой в рамках классических разрешений избирательной системы контроля доступа.

Кроме «целевой» политики, в состав некоторых дистрибутивов входит политика с многоуровневой моделью безопасности (с поддержкой модели Белла — Лападулы).

Третий вариант политики — «строгий». Тут действует принцип «что не разрешено, то запрещено» (принцип наименьших привилегий). Политика основывается на Reference Policy от компании Tresys.

SELinux был разработан Агентством национальной безопасности США, и затем его исходные коды были представлены для скачивания.

SELinux включён в состав ядра Linux (начиная с версии 2.6).

Также для функционирования SELinux требуются модифицированные версии некоторых утилит (ps, ls и других), которые обеспечивают поддержку новых функций ядра, и поддержка со стороны файловой системы.

Основные понятия

Обзор LSM

LSM (англ. Linux Security Modules — модули безопасности Linux) представляют собой реализацию в виде подгружаемых модулей ядра. В первую очередь, LSM применяются для поддержки контроля доступа. Сами по себе LSM не обеспечивают систему какой-то дополнительной безопасностью, а лишь являются неким интерфейсом для её поддержки. Система LSM обеспечивает реализацию функций перехватчиков, которые хранятся в структуре политик безопасности, охватывающей основные операции, защиту которых необходимо обеспечить. Контроль доступа в систему осуществляется благодаря настроенным политикам.

Методы управления доступом

Большинство операционных систем обладают средствами и методами управления доступом, которые в свою очередь определяют, может ли некий объект на уровне операционной системы (пользователь или программа) получить доступ к определённому ресурсу. Используются следующие методы управления доступом:

Внутренняя архитектура SELinux

В самом начале своего появления SELinux была реализована в виде патча. В данном случае было непросто настраивать политику безопасности. С появлением механизмов LSM, настройка и управление безопасностью значительно упростились (политика и механизмы усиления безопасности были разделены), SELinux была реализована в виде подгружаемых модулей ядра. Перед доступом к внутренним объектам операционной системы производится изменение кода ядра. Это реализуется при помощи специальных функций (перехватчиков системных вызовов), так называемых функций «хуков» (англ. hook functions). Функции-перехватчики хранятся в некоторой структуре данных, их целью является выполнение определённых действий по обеспечению безопасности, основанных на заранее установленной политике. Сам модуль включает в себя шесть главных компонентов: сервер безопасности; кэш вектора доступа (англ. Access Vector Cache, AVC); таблицы сетевых интерфейсов; код сигнала сетевого уведомления; свою виртуальную файловую систему (selinuxfs) и реализацию функций-перехватчиков.

Возможности

Реализации

SELinux доступен с коммерческой поддержкой как часть Red Hat Enterprise Linux начиная с версии 4.

В сообществе поддерживаемые дистрибутивы Linux:

  1. CentOS
  2. Debian
  3. ArchLinux (неофициально)
  4. Fedora Core начиная с версии 2
  5. Hardened Gentoo
  6. openSUSE начиная c версии 11.1
  7. Ubuntu
  8. ROSA
  9. ALT Linux СПТ 6

Мобильная ОС Android поддерживает SELinux начиная с версии 4.3[3]. Начиная с версии 5.0, распространители Андроида должны включать SELinux в режиме Enforcing.

Другие системы

SELinux представляет один из нескольких возможных подходов к ограничению действий, выполняемых установленным ПО.

Система AppArmor делает примерно то же самое, что и SELinux. Одно важное различие между этими системами — способ идентификации объектов файловой системы: AppArmor использует полный путь, SELinux же работает глубже, используя индексный дескриптор.

Эти различия проявляются в двух случаях:

Избежать этих проблем в обеих системах позволит применение политики «no access» по умолчанию.

См. также

Примечания

  1. Release 3.6 — 2023.
  2. https://github.com/SELinuxProject/selinux/commit/ee1809f453038f7f34719f3fbd448893853d473f
  3. Security-Enhanced Linux in Android. Android Open Source Project. Дата обращения: 31 января 2016. Архивировано 4 января 2018 года.

Литература

Ссылки

В статье не хватает ссылок на источники (см. рекомендации по поиску). Информация должна быть проверяема, иначе она может быть удалена. Вы можете отредактировать статью, добавив ссылки на авторитетные источники в виде сносок. (7 мая 2020)