Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Рекурсивная смена мандатной метки на файлах и директориях

Общие сведения

В операционной системе специального назначения "Astra Linux Special Edition" релиз "Смоленск" (далее ОС СН) начиная с версии 1.4 и позднее невозможна рекурсивная смена мандатной метки на поддереве файловой системы. Например, ситуация возникает при попытке установить метку на файле или директории превышающую метку директории, содержащей данный файл или директорию.

...



Данное поведение обусловлено положениями ДП-модели контроля доступа, разработанной специалистами академии ФСБ России и реализованной в ОС СН, начиная с версии 1.4.

Механизм мандатного контроля доступа реализован, как и механизм дискреционного контроля доступа, в ядре ОС. При этом, принятие решения о запрете или разрешении доступа субъекта к объекту принимается на основе типа операции (чтение/запись/исполнение), мандатного контекста безопасности субъекта и мандатной метки объекта.
Правила принятия решения могут быть записаны следующим образом. Пусть контекст безопасности субъекта содержит уровень L0, уровень целостности iL0 и категории C0, а мандатная метка объекта содержит уровень L1, уровень целостности iL1 и категории C1. Определим операции сравнения для уровней и категорий:
1) уровень L0 меньше уровня L1 (L0<L1), если численное значение L0 меньше численного значения L1;
2) уровень L0 равен уровню L1 (L0==L1), если численные значения L0 и L1 совпадают;
3) уровень целостности iL0 меньше уровня iL1 (iL0<iL1), если численное значение iL0 меньше численного значения iL1;
4) уровень целостности iL0 равен уровню целостности iL1 (iL0==iL1), если численные значения iL0 и iL1 совпадают;
5) категории C0 меньше категорий C1 (C0<C1), если все биты набора C0 являются подмножеством набора бит C1;
6) категории С0 равны категориям C1 (C0==C1), если значения C0 и C1 совпадают;
7) операция записи разрешена, если L0==L1, iL0>=iL1 и C0==C1;
8) операция чтения разрешена, если L0>=L1, C0>=C1, ∀iL0, ∀iL1;
9) операция исполнения разрешена, если L0>=L1 и C0>=C1, ∀iL0, ∀iL1.

Поскольку запись файла в директорию является операцией записи, метки директории и файла должны совпадать. Т.е. в директории с меткой 0:0:0:0 при отсутствии специальных флагов (см. ниже) могут быть только файлы с меткой 0:0:0:0. При изменении мандатной метки на поддерево файловой системы (как в примере выше) правомерность такого изменения проверяется для каждого объекта файловой системы в отдельности. В примере выше нельзя сменить метку на директорию /mydir1 на 1:0:0:0, т.к. она содержит файл с меткой 0:0:0:0. В тоже время нельзя сменить метку файла /mydir1/file на 1:0:0:0, т.к. файл содержится в директории (т.е. объекте-контейнере) с меткой 0:0:0:0.

Порядок установки мандатных атрибутов


Как упоминалось выше, в ОС СН есть специальные флаги или "типы метки" для объектов-контейнеров, с помощью которых администратор безопасности может решить задачу рекурсивной смены мандатной метки на файловой системе. Их описание из руководства по КСЗ:

В ОС предусмотрено существование объектов-контейнеров (например, каталогов), т.е. объектов, которые могут содержать другие объекты. Метка объекта-контейнера определяет максимальную метку вложенных объектов. Тип метки может использоваться для того, чтобы изменять ее эффективное действие:

– тип метки ehole применяется к объектам-контейнерам и простым объектам для игнорирования мандатных правил разграничения доступа к ним;
– тип метки ccnr применяется к объектам-контейнерам и определяет, что объект 31 РУСБ.10015-01 97 01-1 контейнер может содержать объекты с различными мандатными метками, но не превышающими метку объекта контейнера;
– тип метки ccnri применяется к объектам-контейнерам и определяет, что объект контейнер может содержать объекты с различными уровнями целостности, но не превышающими уровень целостности объекта-контейнера;
Ненулевой тип метки может быть установлен только привилегированным процессом. Перечисленные типы могут использоваться совместно. Таким образом, объект-контейнер может иметь тип: ccnr,ccnri,ehole.

Для того чтобы сменить метку на поддереве файловой системы в общем виде достаточно выполнить следующее:

1. Установить на все директории поддерева, начиная с верхней, мандатную метку с требуемым уровнем, набором категорий и флагом ccnr
2. Установить на все файлы поддерева мандатную метку с требуемым уровнем и набором категорий
3. Снять (если не нужна) c директорий флаг ccnr

Пример:

...

При наличии нескольких вложенных директорий ccnr придётся ставить на каждую

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


Пример bash-сценария для рекурсивной смены мандатной метки.
ВНИМАНИЕ! Сценарий приведен именно для примера. Можете использовать его, но без гарантий.

...