Всероссийский сборник статей и публикаций института развития образования, повышения квалификации и переподготовки.
Скачать публикацию
Периодичность: ежедневно
Вид издания: сборник
Версия издания: электронное сетевое
Публикация: Поддержка ролевой модели доступа к системе управления в ОС Альт
Автор: Шомахов Ислам Аликович
Авторы: Шомахов Ислам Аликович – студент 3 курса Российского государственного университета нефти и газа (Национальный исследовательский университет) имени И.М. Губкина; Каленский Егор Анатольевич – студент 3 курса Российского государственного университета нефти и газа (Национальный исследовательский университет) имени И.М. Губкина Копанев Олег Олегович – студент 3 курса Российского государственного университета нефти и газа (Национальный исследовательский университет) имени И.М. Губкина Поддержка ролевой модели доступа к системе управления в ОС Альт Аннотация В данной статье исследуется применение ролевой модели доступа (RBAC) в операционной системе Альт, рассматриваются теоретические основы RBAC и анализируется ее реализация на уровне ядра и системных вызовов. Описываются механизмы контроля доступа, такие как POSIX ACL, FreeIPA ACL, Capabilities и Control, с примерами их использования. Исследование демонстрирует, как внедрение RBAC повышает безопасность системы и упрощает управление доступом. Работа представляет интерес для специалистов по информационной безопасности и системных администраторов. Введение В современных информационных системах безопасность и управление доступом играют ключевую роль. Один из эффективных методов управления доступом – это ролевая модель, или Role-Based Access Control (RBAC). В ОС Альт, как и в других операционных системах, использование RBAC позволяет централизованно управлять доступом пользователей к ресурсам системы, обеспечивая простоту администрирования и высокий уровень безопасности. Обзор литературы Обзор существующей литературы позволяет более глубоко понять текущие подходы и методы, применяемые для реализации ролевой модели доступа в операционных системах. Один из таких подходов представлен в работе [1]. В данной работе рассматривается математическая модель, позволяющая выявлять и оценивать угрозы безопасности в контексте использования приложений, работающих под Wine. Информация про ядро и системные вызовы в контексте управления доступом подробно представлена в работе [2]. В ней изучаются особенности реализации и применения ролевой модели в операционной системе GNU/Linux. Сравнение политик разграничений доступа рассматривалось в работе [3]. В ней автор рассмотрел принципиальные сходства и различия основных известных политик разграничения доступа, а также способы их реализации. Общая информация об анализе технологии ACL и ее методах описывается в работе [4]. В ней подробно описывается применение данной технологии в системе сетевой безопасности. В работе [5] описывается один из подходов к контролю доступа RBAC. В ней рассказывается принцип работы, где применяется данный подход, а также проведено несколько экспериментов, показывающих эффективность данной системы. Математическое описание RBAC Для глубокого понимания механизмов работы RBAC в ОС Альт необходимо рассмотреть его математическую модель. Основные компоненты модели включают: − S = Субъект = Человек или автоматизированный агент (множество пользователей); − R = Роль = Рабочая функция или название, которое определяется на уровне авторизации (множество ролей); − P = Разрешения = Утверждения режима доступа к ресурсу (множество прав доступа на объекты системы); − SE = Сессия = Соответствие между S, R и/или P − SA = Назначение субъекта Основные отношения и функции: – UA ⊆ S × R. Отношение определяет, какие роли назначены каждому пользователю. – PA ⊆ P × R. Отношение определяет, какие разрешения связаны с каждой ролью. – PA: R → 2P ∀p ∈ P, ∃r ∈ R : p ∈ PA(r). Функция для каждой роли возвращает множество всех назначенных ей разрешений. – RH ⊆ R × R. Отношение определяет иерархию ролей. – Функция назначения сессий пользователям: session_users: SE → S – Функция назначения ролей сессиям: session_roles: SE → 2R. При этом должно выполняться условие: ∀se ∈ SE, session_roles(se) ⊆ {r ∈ R | (session_users(se), r) ∈ UA} – Функция получения разрешений для роли с учетом иерархии: authorized_permissions (r: R) = {p ∈ P | ∃r' ≤ r, (p, r') ∈ PA} – Функция проверки наличия разрешения у пользователя в сессии: has_permission(se: SE, p: P) = ∃r ∈ session_roles(se) : p ∈ authorized_permissions(r) Ограничения: – Взаимоисключающие роли (Mutually Exclusive Roles, MER): MER ⊆ R × R ∀(r1, r2) ∈ MER, ∀s ∈ S : (s, r1) ∈ UA ⇒ (s, r2) ∉ UA – Кардинальность ролей: max_cardinality: R → N ∀r ∈ R : |{s ∈ S | (s, r) ∈ UA}| ≤ max_cardinality(r) Данные формулы и ограничения предоставляют формальную основу для реализации RBAC в ОС Альт, позволяя точно описать и проверить политики безопасности, реализуемые на уровне ядра и системных вызовов. Технологическая основа RBAC в ОС Альт Ролевая модель доступа основывается на назначении прав доступа не отдельным пользователям, а их ролям. Пользователи, в свою очередь, получают доступ к ресурсам в зависимости от их роли в системе. Стоит затронуть технологии, на основе которых работает ролевая модель доступа. Ядро операционной системы ОС Альт управляет доступом к оперативной памяти, сети, дисковым пространствам и другим внешним устройствам. Оно инициирует и отслеживает процессы, управляет распределением времени между ними, устанавливает разграничение прав и формирует политику безопасности, которую невозможно обойти без обращения к нему. Ядро работает в режиме "супервизора", это означает, что именно оно предоставляет доступ ко всей оперативной памяти и аппаратной таблице задач. Процессы же работают в "пользовательском режиме". Ядро привязывает их к записям в таблице задач с указанием доступной оперативной памяти. Ядро постоянно находится в памяти, обрабатывая системные вызовы от процессов. ОС Альт использует модифицированное ядро Linux, которое включает расширенные возможности управления доступом. В частности, ядро поддерживает механизмы LSM (Linux Security Modules), позволяющие реализовать различные модели безопасности, включая RBAC. Для реализации доступа субъектов (пользователей или процессов/приложений) к объектам в GNU/Linux необходимо использовать системные вызовы на уровне ядра. Они предоставляют файлам доступ (на чтение, запись или выполнение), проводят операции с файлами (создание, переименование или удаление файлов и каталогов), управляют символьными и жесткими ссылками, а также многое другое. Системные вызовы являются единственным способом получить доступ к ресурсам операционной системы из непривилегированного режима. Кроме того, существуют специализированные системные вызовы для операций ввода/вывода, управления устройствами (например, ioctl), управления файловыми системами (mount, umount, pivot_root, chroot), синхронизации данных на диске, управления временем системы, управления памятью, создания и завершения процессов, загрузки модулей ядра и других аспектов системы. Так же, существуют специализированные системные вызовы, которые позволяют ядру взаимодействовать с пользовательским пространством. В контексте RBAC ключевыми являются системные вызовы, которые связаны с проверкой прав доступа и управлением привилегиями, такие как capget(), capset(), prctl(). ACL Как уже было сказано ранее, модель RBAC предполагает доступ к ресурсам на основе ролей, а роли, в свою очередь, имеют наборы разрешений. В подобном контексте разрешения, присваиваемые ролям, могут быть определены с использованием так называемых списков контроля доступа – ACL (Access Control List). ACL представляет собой набор правил, которые определяют, каким пользователям или системным процессам предоставлен доступ к объектам и какие операции они могут выполнять с этими объектами. Каждый объект в системе имеет связанный с ним атрибут безопасности, который содержит список записей контроля доступа. Эти записи включают в себя разрешения, предоставленные конкретным пользователям или группам пользователей. Например, для файла можно определить ACL, который предоставляет пользователю "user1" права на чтение (r) и запись (w), а группе "admins" — полный доступ (rwx). Такой подход позволяет гибко настраивать доступ к объектам на уровне отдельных пользователей и операций. Рассмотрим некоторые типы ACL, реализованные в ОС Альт, – они приведены в таблице 1 Таблица 1 Тип ACL Основные возможности Утилиты управления Связанные пакеты Преимущества POSIX ACL Управление правами доступа к файлам и директориям setfacl, getfacl acl, attr Гибкость в настройке доступа, поддержка большинства файловых систем FreeIPA ACL Управление доступом к услугам сертификации и профилям ipa caacl-add, ipa caacl-add-ca, ipa caacl-add-profile и т.д. freeipa-server / freeipa-server-dns / free-ipa-server-trust-ad Централизованное управление доступом к сертификатам, интеграция с Kerberos и LDAP Capabilities Гранулярное управление привилегиями отдельных процессов setcap, getcap, capsh libcap Уменьшение рисков чрезмерных привилегий, улучшенная безопасность control Управление доступом к задачам new_fmode, new_subst, new_help, new_summary control полезен для управления SUID/SGID-бинарниками Также рассмотрим и примеры использования приведенных типов контроля доступа. POSIX ACL Создадим пользователя и зададим пароль для его учетной записи: Создаем тестовый файл Смотрим, что предоставляет нам setfacl (смотрим на префиксы), даем пользователя test1 права rwx на файл testfile.txt и убеждаемся, что права действительно назначились: FreeIPA ACL При наличии успешно развернутого сервера FreeIPA имеется возможность подключить модуль, который используется для определения правил, которые управляют тем, какие службы сертификации и профили можно использовать для выдачи сертификатов конкретным учётным записям или группам учётных записей. Чтобы разрешить запрос на сертификат, учетная запись (или записи), являющаяся субъектом запроса, должна быть включена в область действия ACL службы сертификации, которая также охватывает целевые службы сертификации и профили. ACL службы сертификации может быть связана с одним или несколькими профилями по идентификатору профиля. При выполнении в командной строке ipa caacl откроется справка по данному модулю, где можно обнаружить основные команды для управления: Например, создадим ACL службы сертификации “test”, которая предоставляет всем пользователям доступ к профилю “caIPAserviceCert” (для этого сначала выполним kinit): Просмотрим свойства именованной ACL службы сертификации Отключим ACL службы сертификации: Удалим ACL службы сертификации: Capabilities Описание Capabilities можно открыть с помощью команды: Оно довольно объемное, требует времени и определенных знаний, чтобы разобраться в нем. Для того чтобы продемонстрировать работу с Capabilities, создадим программу на языке C, которая будет выполнять привилегированную операцию – изменение системного времени. Скомпилируем программу: Попробуем запустить от обычного пользователя: Как и ожидалось, операция недоступна. Перейдем в режим суперпользователя и добавим capability: Просмотрим capability, который мы добавили: Выйдем из-под рута, выполним программу снова Системное время успешно изменено. Control В ОС Альт control является механизмом переключения между неким набором фиксированных состояний для задач, допускающих такой набор. Чтобы просмотреть управляемые утилитой control команды, выполним: Перечень команд довольной обширный, мы остановимся на “su”. Создадим пользователя testuser, зададим ему пароль: Проверим текущее состояние control для su: Это означает, что только пользователи группы wheel могут выполнять команду su. Убедимся, что пользователя testuser нет в группе wheel, войдем в учетную запись пользователя testuser и попытаемся выполнить команду su: Далее вернемся к суперпользователю и поменяем политику su на public Снова зайдем на учетную запись пользователя testuser и убедимся, что команда su теперь работает: Заключение В данной статье проведено исследование ролевой модели доступа (RBAC) в операционной системе Альт. Был рассмотрен теоретический аспект модели, включая математическое описание основных компонентов и функций, а также технологическая реализация RBAC в ОС Альт на уровне ядра и системных вызовов. Исследование показало, что применение RBAC в ОС Альт обеспечивает централизованное управление доступом, упрощает администрирование и повышает уровень безопасности системы. Внедрение и настройка RBAC с использованием технологий, таких как ACL, Capabilities и Control позволяет эффективно контролировать доступ к ресурсам системы и минимизировать риски, связанные с чрезмерными привилегиями. Список источников. 1. Уймин, А. Г. Оценка безопасности Wine с использованием методологии STRIDE: математическая модель / А. Г. Уймин, И. М. Морозов // Современная наука: актуальные проблемы теории и практики. Серия: Естественные и технические науки. – 2023. – № 6-2. – С. 164-170. – DOI 10.37882/2223-2982.2023.6-2.40. – EDN HYCKNP; 2. Диссертация Каннера А.М. «Модель и алгоритмы обеспечения безопасности управления доступом в операционных системах семейства Linux»; 3. Статья Марочкина А.А. «Анализ современных способов разграничения доступа»; 4. Статья Azmi, F., Kalsum, T. U., Alamsyah, H. «Analysis and Application of Access Control List (ACL) Methods on Computer Networks» 5. Статья K. Rajesh Rao «Role recommender-RBAC: Optimizing user-role assignments in RBAC». 6. Альт Рабочая Станция. Документация. Руководство пользователя // Редакция – март, 2024 // [Электронный ресурс]: