Содержание

Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Special Edition РУСБ.10015-16 исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)

Данная статья неприменима к Astra Linux Special Edition РУСБ.10015-10

Механизмы мандатного управления доступом и мандатного контроля целостности реализованы в ядре ОС и затрагивают следующие подсистемы:

  • механизмы IPC;
  • стек TCP/IP (IPv4, IPv6);
  • файловые системы (ФС) ext2/ext3/ext4/XFS;
  • сетевые ФС CIFS;
  • ФС proc, tmpfs.

В механизме мандатного управления доступом определены следующие термины:

  • субъект мандатного доступа — тот, кто выполняет операции, подлежащие мандатному контролю (пользователь или процесс);
  • сущность (объект) мандатного доступа — то, с чем выполняются операции, подлежащие мандатному контролю (файл, каталог и т.д.);
  • контейнер — структурированная сущность доступа, т.е. сущность (каталог ФС), которая может содержать другие сущности доступа (каталоги или файлы).

Сущностям и субъектам присваиваются следующие мандатные атрибуты:

  • иерархический уровень конфиденциальности (уровень конфиденциальности) — определяет степень секретности документа (сущности) и соответствующий уровень доступа к этому документу, назначенный персоналу (субъекту). Субъекту с определенным уровнем конфиденциальности разрешено читать только документы с таким же уровнем конфиденциальности или ниже и запрещено читать документы с более высоким уровнем конфиденциальности. А также персоналу с более высоким уровнем конфиденциальности запрещено передавать (преднамеренно или случайно) документы высокого уровня конфиденциальности персоналу с более низким уровнем конфиденциальности;
  • неиерархическая категория конфиденциальности (категории конфиденциальности) — разделение по категориям конфиденциальности. Персонал, работающий с первой категорией конфиденциальности, имеет соответствующую категорию конфиденциальности. При этом, не имея вторую категорию конфиденциальности, персонал не может иметь доступ к материалам второй категории конфиденциальности, а также не может передавать материалы первой категории конфиденциальности персоналу, не имеющему первую категорию конфиденциальности. Доступ может быть предоставлен одновременно к нескольким категориям конфиденциальности;
  • уровень целостности (неиерархический уровень целостности и иерархический (линейный) уровень целостности) — субъект, работающий на некотором уровне целостности, может записывать (изменять) только сущности своего или более низкого уровня целостности. Иерархический уровень целостности в ОС зарезервирован, и на уровне пользователя не поддерживается его использование;
  • дополнительные мандатные атрибуты управления доступом — являются необязательными атрибутами и позволяют уточнять или изменять правила мандатного доступа для отдельных контейнеров, субъектов или сущностей.

Мандатные атрибуты субъекта/сущности объединяются в мандатный контекст этого субъекта/сущности.

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

  • невозможности прочитать информацию, к которой не предоставлен доступ:
    • нижним уровням конфиденциальности запрещено читать информацию с верхних уровней конфиденциальности;
    • всем запрещено читать информацию, на которую нет разрешенной категории конфиденциальности;
  • невозможности передать информацию тому, кому не предоставлен доступ:
    • верхним уровням конфиденциальности запрещено записывать свою информацию на нижние уровни конфиденциальности;
    • всем запрещено передавать информацию тем, у кого нет соответствующей категории конфиденциальности.

Принятие решения о запрете или разрешении доступа субъекта к сущности принимается на основе типа операции (чтение/запись/исполнение), мандатного контекста безопасности субъекта и мандатного контекста безопасности сущности.

Субъекты или сущности, которым явно не задан мандатный контекст, считаются имеющими минимальный (нулевой) мандатный контекст, т.е. мандатный контекст, в котором метка безопасности и все мандатные атрибуты имеют минимальные допустимые значения (например, равные нулю).

Мандатный контекст безопасности

Мандатный контекст включает в себя:

  • метку безопасности;
  • дополнительные мандатные атрибуты управления доступом.

Метка безопасности

Метка безопасности состоит из:

  1. классификационной метки, которая определяется:
    1. иерархическим уровнем конфиденциальности;
    2. неиерархической категорией конфиденциальности;
  2. метки целостности — определяется уровнем целостности.

Правила принятия решения о предоставлении доступа на основе метки безопасности описаны ниже (см. Правила применения мандатного контекста безопасности).

Метка безопасности контейнера определяет максимальную метку безопасности вложенных сущностей.

Уровень конфиденциальности представляет собой единичное (скалярное) числовое значение от 0 до 255 (включительно). Каждой классификационной метке в каждый момент времени может быть назначен только один уровень конфиденциальности. Числовые значения уровня конфиденциальности сравнимы между собой и технически реализованы как 8-битная беззнаковая величина (uint8_t). В пользовательских интерфейсах представляется десятичным значением или наименованием единичного уровня конфиденциальности.

Категория конфиденциальности представляет собой маску, состоящую из набора единичных значений категорий конфиденциальности. В ОС реализовано использование до 64 единичных категорий конфиденциальности. Каждой классификационной метке в каждый момент времени могут быть назначены одновременно до 64 категорий конфиденциальности. Единичные категории конфиденциальности несравнимы между собой. Числовые значения категории конфиденциальности частично сравнимы между собой и определяются как суммы значений назначенных единичных категорий конфиденциальности, могут принимать значения от 0 до 0xFFFF FFFF FFFF FFFF (включительно), технически реализованы как 64-битная маска, беззнаковая величина (unsigned long long). В пользовательских интерфейсах представляется шестнадцатеричным значением или списком наименований единичных категорий конфиденциальности.

В информационных системах с мандатным управлением доступом как правило применяются классификационные метки, в которых используется только четыре уровня конфиденциальности от 0 до 3 и 64-битовая маска с различными сочетаниями категорий.

Уровень целостности представляет собой маску, состоящую из набора единичных значений уровней целостности. В ОС по умолчанию выделены семь именованных ненулевых и несравнимых между собой единичных значений уровней целостности, при настройке ОС количество единичных значений может быть увеличено до 32.

При установке ОС по умолчанию предлагается максимальный уровень целостности 63 (битовая маска 00111111), минимальный уровень всегда 0. Максимальными уровнями целостности в системе могут быть числа, у которых битовая маска включает битовые маски всех остальных используемых уровней целостности в системе, например, 63 (0x3F, битовая маска 00111111), 127 (0x7F, битовая маска 01111111), 191 (0xBF, битовая маска 10111111) и 255 (0xFF, битовая маска 11111111).

Перечень именованных уровней целостности и их описание приведены в таблице ниже.

УровеньЗначениеБитовая
маска
Описание
0 000 0000 0000Нулевой уровень (Низкий, или Low)
10010000 0001Уровень задействован для сетевых служб
20020000 0010Уровень задействован для виртуализации
30040000 0100Уровень задействован для специального ПО
40080000 1000

Уровень задействован для графического сервера

50160001 0000Свободен, может быть использован для СУБД
60320010 0000Свободен, может быть использован для сетевых служб
70640100 0000Зарезервирован, и может быть использован при поднятии max_ilev
81281000 0000Зарезервирован, и может быть использован при поднятии max_ilev

Дополнительно зарезервировано специальное наименование уровня целостности Высокий (High). Уровень Высокий не является единичным уровнем, а представляет собой максимальную сумму единичных уровней, определенных в системе (имеет значение 63 (0x3F) при использовании шести уровней или значение 0xFFFF FFFF при использовании 32 уровней целостности).

Таким образом, каждой метке целостности в каждый момент времени могут быть назначены одновременно до шести (32) единичных уровней целостности. Числовые значения уровня целостности сущности частично сравнимы между собой и определяются как суммы значений назначенных единичных уровней целостности. Числовые значения уровня целостности могут принимать значения от 0 до 63 (0x3F) или от 0 до 0xFFFF FFFF включительно, технически реализованы как 32-битная маска, беззнаковая величина (uint32_t). В пользовательских интерфейсах представляется десятичным или шестнадцатеричным числом или наименованием единичного уровня целостности.

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

Дополнительные мандатные атрибуты управления доступом являются необязательными атрибутами мандатного контекста безопасности. Они позволяют уточнять или изменять правила мандатного доступа для отдельных контейнеров, субъектов или сущностей.

В ОС используются следующие мандатные атрибуты управления доступом:

  • ccnr — может присваиваться только контейнерам. Определяет, что контейнер может содержать сущности с различными классификационными метками, но не большими, чем его собственная классификационная метка. Чтение содержимого такого контейнера разрешается субъекту вне зависимости от значения его классификационной метки, при этом субъекту доступна информация только про находящиеся в этом контейнере сущности с классификационной меткой не большей, чем его собственная классификационная метка, либо про сущности-контейнеры, также имеющие мандатный атрибут управления доступом ccnr;
  • ehole — может присваиваться сущностям (файлам), не являющимся контейнерами и имеющим минимальную классификационную метку. Приводит к игнорированию мандатных правил управления доступом к ним. Атрибут предназначен для сущностей, из которых субъект не может прочитать данные, записанные в них субъектами с более высокой классификационной меткой, чем его собственная классификационная метка (например, /dev/null);
  • whole — присваивается сущностям (файлам), не являющимся контейнерами, c максимальной классификационной меткой. Разрешает запись в них субъектам, имеющим более низкую классификационную метку (тогда как в обычном случае записывать «снизу вверх» запрещено);
  • привилегии — присваиваются субъектам. Предоставляют права выполнения определенных административных действий. Полный перечень привилегий и предоставляемых ими прав приведен в документе РУСБ.10015-01 97 01-1.
Мандатный атрибут управления доступом ccnri более не используется в ОС (начиная с 1.7) для управления доступом, при этом штатное функционирование ОС соответствует функционированию с установленным мандатным атрибутом ccnri. Возможность установки и получения данного мандатного атрибута сохранена в ОС для обеспечения совместимости с системами и ПО, которые его использует. Мандатный атрибут управления доступом ccnra в ОС (начиная с 1.7) приравнивается к ccnr и также сохранен только для обеспечения совместимости и не рекомендован к использованию.

PARSEC-привилегии

PARSEC-привилегии, так же как и Linux-привилегии, наследуются процессами от своих «родителей». Процессы, запущенные от имени суперпользователя, имеющего максимальный (Высокий) уровень целостности по умолчанию, независимо от явного назначения им привилегий, имеют возможность осуществлять большинство привилегированных действий.

PARSEC-привилегии и их описание приведены в статье: Привилегии PARSEC.

Для настройки КСЗ могут использоваться как PARSEC-, так и Linux-привилегии. Порядок управления привилегиями описан в документе РУСБ.10015-01 97 01-1.

Правила применения мандатного контекста безопасности

Операции сравнения уровней конфиденциальности, категорий конфиденциальности и уровней целостности определяются следующим образом:

  1. Уровень конфиденциальности cL0 больше или равен уровню конфиденциальности cL1 (cL0 >= cL1), если численное значение cL0 больше или равно численному значению cL1.
  2. Категории конфиденциальности C0 больше или равны категориям конфиденциальности C1 (C0 >= C1), если все биты набора C1 являются подмножеством набора бит C0 или наборы совпадают. В терминах побитовых операций (C0 & C1) == C1.
  3. Неиерархический уровень целостности iL0 больше или равен неиерархическому уровню целостности iL1 (iL0 >= iL1), если все биты набора iL1 являются подмножеством набора бит iL0 или наборы совпадают. В терминах побитовых операций (iL0 & iL1) == iL1.
  4. Иерархический уровень целостности iL0 больше или равен иерархическому уровню целостности iL1 (iL0 >= iL1), если численное значение iL0 больше или равно численному значению iL1.

Субъект получает доступ на запись к объекту только при выполнении условий сравнения для неиерархического и иерархического уровней целостности.

Операции доступа субъекта к сущности определяются следующим образом.

Пусть метка безопасности субъекта содержит следующие атрибуты:

  • уровень конфиденциальности cLсуб;
  • категории конфиденциальности Cсуб;
  • уровень целостности iLсуб;

а метка безопасности сущности содержит атрибуты:

  • уровень конфиденциальности cLоб;
  • категории конфиденциальности Cоб;
  • уровень целостности iLоб.

Тогда:

  1. Операция записи разрешена, если cLсуб = cLоб, Cсуб = Cоб и iLсуб >= iLоб, то есть уровни конфиденциальности и категории конфиденциальности субъекта и сущности совпадают, а уровень целостности субъекта не ниже уровня целостности сущности (значение iLсуб принадлежит множеству iLоб);
  2. Операции чтения и исполнения разрешены, если cLсуб >= cLоб и Cсуб >= Cоб, то есть уровень конфиденциальности субъекта не ниже уровня конфиденциальности сущности, единичные категории конфиденциальности сущности входят в единичные категории конфиденциальности субъекта. Разрешение не зависит от значений уровней целостности iLсуб и iLоб (значения сLсуб и Cсуб принадлежат множествам cLоб и Cоб соответственно).

В отношении атрибутов доступа действуют следующие правила наследования:

  • если в сессии субъект создает другого субъекта (процесс создает процесс), то созданный субъект полностью наследует метку безопасности (уровень конфиденциальности, категории конфиденциальности, уровень целостности);
  • если субъект создает сущность (процесс создает файл), то созданная сущность наследует только классификационную метку (уровень конфиденциальности и категории конфиденциальности), и, независимо от уровня целостности субъекта, всегда получает нулевой уровень целостности.

Изменять метку конфиденциальности сущности (т.е. изменять уровень конфиденциальности и/или категории конфиденциальности) могут только субъекты c наличием привилегии PARSEC_CAP_CHMAC.


Изменять уровень целостности сущности могут только субъекты c наличием привилегии PARSEC_CAP_CHMAC и с максимальным (Высоким) уровнем целостности.

Дополнительный мандатный атрибут управления доступом может быть установлен только привилегированным процессом. К самим процессам мандатный атрибут управления доступом неприменим. Простая сущность (файл) может иметь мандатный атрибут либо ehole, либо whole.

Для создания в контейнере, имеющем дополнительный мандатный атрибут ccnr, вложенной сущности с уровнем и категориями меньшими, чем у контейнера, необходимо обладать специальными привилегиями PARSEC_CAP_IGNMACCAT и PARSEC_CAP_IGNMACLVL.

Если в загрузчике ОС указать значение параметра ядра parsec.ccnr_relax=1, непривилегированный пользователь сможет производить запись файлов с разным уровнем конфиденциальности в контейнер (каталог) с установленным флагом ccnr. При установленном обновлении БЮЛЛЕТЕНЬ № 2022-0819SE17 (оперативное обновление 1.7.2) и работе в режиме усиленного МКЦ (strict-mode, см. Изменения в документацию, связанные с обновлением № 2022-0819SE17 (оперативное обновление 1.7.2)) этот параметр игнорируется и следует использовать привилегию PARSEC_CAP_CCNR_RELAX (см. Привилегии PARSEC).

Мандатные атрибуты на корне файловой системы определяют максимальный мандатный контекст безопасности сущностей. Мандатные атрибуты, устанавливаемые по умолчанию на корень файловой системы и ряд вложенных файловых объектов, определены в сценарии pdp-init-fs, который расположен в каталоге /usr/sbin.