Разграничение доступа в Linux. Знакомство с Astra Linux
Всем доброго времени суток, сегодня мы поговорим о моделях разграничения доступа в семействе ОС Linux, а также начнем знакомство с отечественной ОС Astra Linux SE. Данная статья является первой в цикле и предназначена для людей, только начинающих постигать Linux во всем его многообразии.
Для начала стоит ответить на вопрос: почему именно Astra? Согласно отзывам и моему собственному опыту это далеко не самая удобная система для постоянного использования. Однако тут все не так просто, ведь еще 5 апреля 2013 г вышел закон №44-ФЗ «О контрактной системе в сфере закупок товаров, работ, услуг для обеспечения государственных и муниципальных нужд», согласно которому все государственные и муниципальные органы, органы управления и прочие гос. организации обязаны закупать отечественное ПО. А это значит, что с каждым годом вероятность столкнуться лицом к лицу с отечественными ОС только возрастает. Именно поэтому я решил поделиться своим знаниями и опытом.
1.Основные способы разграничения доступа
Зачем вообще разграничивать доступ к отдельным объектам в системе, думаю объяснять не стоит. Мы же не хотим, чтобы обычной пользователь случайно нарушил целостность системных файлов, верно?
Всего есть 2 вида моделей разграничения доступа: дискреционная и мандатная.
Дискреционное управление доступом
Эта модель в том или ином виде реализована почти во всех современных *nix-системах. В англоязычных ресурсах можно встретить название DAC (Discretionary Access Control). Суть ее заключается в управлении доступом субъектов к объектам на основе списков управления доступом. Дискреционное управление доступом в ОС проекта GNU/Linux основано на понятии владения (использовании права доступа владения) файлом, процессом, каталогом (сущностями и субъект-сессиями). Так, с каждым файлом или каталогом связана учётная запись пользователя — их владельца ( owner ). Процесс, который функционирует от имени такой учётной записи-владельца сущности, имеет право изменять дискреционные права доступа к ней, например назначать их учётным записям других пользователей ОС на основе стандарта POSIX ACL . Однако зачастую настраивать права доступа для каждой учетной записи бывает затруднительно и поэтому пользователей объединяют в группы, которым тоже можно назначить права доступа.
Так в чем же заключается стандарт POSIX ACL?
POSIX ACL – POSIX-совместимый стандарт определения разрешений на доступ к объектам, основанный на списках контроля доступа (ACL – Access Control Lists). Он реализует несколько вариантов дискреционной модели, отличающихся уровнем функциональности и методами хранения списков контроля доступа.
Как видно из схемы, существует 2 вида атрибутов для вышеупомянутого стандарта. Давайте разберем каждый из них.
2.Minimal POSIX ACL. Список контроля на уровне inode файла
В метаданных каждого объекта (в inode файла/директории) содержится список разрешений на доступ к нему для разных категорий субъектов.
Атрибуты Minimal ACL поддерживают три базовых класса субъектов доступа к файлу (класс All объединяет все три класса):
Для каждого из этих классов определены три типа разрешений:
Список разрешений Minimal ACL представлен в inode файла (директории) девятью байтами (символами) . Каждый байт определяет одно из разрешений (символы r, w, x) или их отсутствие (символ «-»).Байты разрешений сгруппированы в следующие классы:
Теперь рассмотрим способы смены прав доступа на практике:
Для того, чтобы посмотреть атрибуты отдельного файла или директории в символьном виде можно воспользоваться командой:
Таким образом мы понимаем, что это файл обычного типа (–). Для владельца разрешены чтение, запись и исполнение (rwx), для владеющей группы – чтение и запись (rw-), для остальных пользователей – только чтение (r—).
Для директорий трактовка типов разрешений иная:
r – разрешение на « открытие » директории, то есть на чтение списка файлов , которые содержит эта директория.
w – разрешение на модификацию этого списка файлов (создание/удаление/переименование/перемещение) файлов этой директории.
x – разрешение на « исполнение » директории, то есть на возможность перейти в нее .
Чтобы изменить расширения для определенного файла используется команда chmod с соответствующими аргументами:
chmod o=r test.file – установка разрешения «чтение» для остальных пользователей (не владельцев объекта), вне зависимости какие разрешения были установлены ранее
chmod g+rw test.file – добавление разрешений «чтение» и «запись» для группы, владеющей файлом
Также Minimal ACL имеют числовое представление (Numeric Notation) в виде трех восьмеричных чисел. Эти числа определяют разрешение на доступ к файлу или директории трех субъектов доступа (u,g,o). Каждое из них формируется путем суммирования восьмеричных значений необходимых разрешений:
Например, полный доступ (rwx) – это: 4+2+1=7
Таким образом, можно задать разрешения для файла следующим образом:
chmod 0740 test.file , что будет соответствовать атрибутам -rwxr——
В ряде случаев в ходе пользовательского сеанса возникает необходимость смены разрешений при доступе файлам и директориям
Например для файла /etc/shadow любой пользователь может записать в него хеш своего пароля
Такая смена разрешений называется изменение режима доступа .
Она реализуется установкой специальных флагов в зарезервированном десятом байте списка Minimal POSIX ACL или заменой ими байтов разрешений
Флаг -t (sticky bit). Устанавливается в разрешениях директорий и разрешает манипулирование файлами внутри этих директорий только их владельцам
Флаг -s (флаг режимов SUID и SGID). Устанавливается вместо разрешения « x » у владельца (режим SUID ) и/или владеющей группы (режим SGID ) и разрешает исполнение этого файла с разрешениями его владельца и/или владеющей группы , а не с разрешениями пользователя, запустившего файл.
3.Extended POSIX ACL (EA). Расширенные списки контроля доступа
Вполне естественно, что такая простая схема, как в Minimal POSIX ACL имеет ряд недостатков. Самый явный из них, это отсутствие гибкости при совместном доступе субъектов к объектам. К тому же, списки доступа Extended POSIX ACL создаются и хранятся в системных таблицах ядра ОС.
Основой Extended POSIX ACL является понятие «именованный пользователь (группа)» (named user (group), что позволяет нам выдавать отдельный набор разрешений для конкретных пользователей или групп.
Для работы с Extended POSIX ACL используются следующие команды:
Просмотр: системный вызов getfacl
Установка: системный вызов setfacl
4. В заключение
На этом рассмотрение дискреционной модели доступа закончено, однако остался один вопрос: а причем тут Astra Linux? Дело в том, что в ней, помимо дискреционной модели доступа, реализована еще и мандатная модель доступа, а также контроль целостности файлов, что усиливает защищенность системы. Astra Linux также сертифицирована ФСТЭК и ФСБ для работы с гос. тайной, что постепенно приносит ей известность и предоставляет возможность использования в государственном секторе.
Контекст безопасности
Контекст безопасности — структура, включающая в себя все атрибуты управления доступом субъектов доступа (субъектов, например, процессов ) к объектам доступа (сущностям, например, файлам или каталогам) , существующие в соответствии с формальной мандатной сущностно-ролевой моделью управления доступом и информационными потоками (МРОСЛ ДП-моделью) и определяющие порядок доступа субъектов к сущностям.
В зависимости от реализации контекст безопасности может включать в себя:
- Контекст дискреционного управления доступом (разграничения доступа);
- Контекст мандатного управления доступом (разграничения доступа);
- Контекст ролевого управления доступом (разграничения доступа);
- Иные атрибуты, определяемые формальной моделью управления доступом и ее реализацией.
В рамках наст оящего документа рассматрива ю тся состав и структура контекста мандатного управления доступ ом ( мандатного контекста ) .
Мандатный контекст
Мандатный контекст представляет собой полный набор мандатных атрибутов субъекта или сущности.
Мандатный контекст включает в себя все мандатные атрибуты субъекта или сущности, и мандатных атрибутов вне мандатного контекста не существует.
Мандатный контекст включает в себя:
Субъекты или сущности, которым явно не присвоен никакой мандатный контекст, считаются имеющими минимальный (нулевой) мандатный контекст, т.е. мандатный контекст в котором все мандатные атрибуты имеют минимальные допустимые значения (например, равны нулю).
Метка безопасности
Метка безопасности является составной и включает в себя две метки:
Классификационная метка является составной и включает в себя:
- Иерархический уровень конфиденциальности;
- Неиерархическую категорию конфиденци альности.
Метка целостности представлена одним мандатным атрибутом:
Дополнительные мандатные атрибуты управления доступом
В зависимости от реализац ии формальной модел и управления доступом отдельным субъектам или сущностям может быть дополнительно присвоен набор необязательных мандатных атрибутов управления доступом, не входящих в метку. Необязательные мандатные атрибуты управления доступом позв оляют уточнять правил а мандатного доступа для отдель ных субъектов или сущносте й.
В качестве примера можно привести следующие мандатные атрибуты управления доступом, использованные в операционной системе специального назначения Astra Linux Special Edition:
- Мандатные атрибуты меток безопасности сущностей, являющихся контейнерами ( т.е. сущностей , которые могут содержать другие сущности , например, каталог ам файловой системы ):
- Если метка целостности субъекта меньше или равна метке целостности контейнера, то создаваемые в каталоге сущности наследуют метку целостности создающего их субъекта;
- Если метка целостности субъекта выше или несравнима с меткой целостности контейнера, то метка целостности создаваемых сущностей устанавливается как наибольшее значение, одновременно меньшее или равное значениям меток целостности контейнера и субъекта. Атрибут доступен только при включенном расширенном режиме МКЦ (расширенный режим МКЦ доступен начиная с обновления БЮЛЛЕТЕНЬ № 2022-0819SE17 (оперативное обновление 1.7.2);
- Мандатный атрибут ccnr. Определяет, что контейнер может содержать сущности с различными классификационными метками , но не большими, чем его собственная метка. Чтение содержимого такого контейнера разрешается субъекту вне зависимости от значения классификационной метки этого субъекта, при этом субъекту доступна информация только про находящиеся в этом контейнере сущности с классификационной меткой не большей, чем собственная классификационная метка субъекта, либо про сущности-контейнеры, также имеющие мандатный атрибут управления доступом ccnr;
В ОС Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) с установленным обновлением № 20190222SE16 и в ОС Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1) мандатный атрибут управления доступом ccnri включен для всех контейнеров, и не может быть изменен.
Мандатный контекст
Метка безопасности
Мандатные атрибуты управления доступом