Найти в Дзене
ИТ Проповедник

Мандатное управление доступом в Astra Linux SE 1.7.x. Теоретическая часть.

+++ --- Посмотреть видео к этой статье можно по ссылке --- +++ Первая модель мандатного управления доступом (от англ. Mandatory Access Control, MAC) была разработана в 70-е годы для возможности безопасной совместной работы с секретными документами на больших мейнфреймах. Модель MAC определяет доступ субъектов (процессов и потоков) к объектам (файлам, каталогам, сокетам и др.) на основе классификационных меток (или меток конфиденциальности), которыми может управлять только администратор системы. Аббревиатура MAC на русский язык переводится как МРД, т.е. из слова «управление» берут третью букву «Р» для благозвучности, поэтому в некоторых источниках модель иногда называют «мандатным разграничением доступа». На основе модели МРД в дальнейшем была разработана модель мандатного контроля целостности (от англ. Mandatory Integrity Control, MIC), которая была предназначена для защиты операционной системы от возможности внедрения программных закладок и нарушения целостности программной ср
Оглавление

+++ --- Посмотреть видео к этой статье можно по ссылке --- +++

Первая модель мандатного управления доступом (от англ. Mandatory Access Control, MAC) была разработана в 70-е годы для возможности безопасной совместной работы с секретными документами на больших мейнфреймах. Модель MAC определяет доступ субъектов (процессов и потоков) к объектам (файлам, каталогам, сокетам и др.) на основе классификационных меток (или меток конфиденциальности), которыми может управлять только администратор системы. Аббревиатура MAC на русский язык переводится как МРД, т.е. из слова «управление» берут третью букву «Р» для благозвучности, поэтому в некоторых источниках модель иногда называют «мандатным разграничением доступа».

На основе модели МРД в дальнейшем была разработана модель мандатного контроля целостности (от англ. Mandatory Integrity Control, MIC), которая была предназначена для защиты операционной системы от возможности внедрения программных закладок и нарушения целостности программной среды. Модель MIC использовала те же принципы, но оперировала метками целостности, где под целостностью понималась степень доверия к субъекту или содержанию объекта. Аббревиатура MIC на русский язык переводится как МКЦ.

В операционной системе Astra Linux метки конфиденциальности называются так же классификационными метками, а вместе с метками целостности они обобщенно называются метками безопасности. Настройки мандатного доступа локальных пользователей находятся в текстовых базах данных macdb и micdb в каталоге /etc/parsec/. Метки безопасности объектов файловой системы хранятся в расширенных атрибутах и для работы с ними используются такие утилиты как pdpl-file, pdp-ls и др.

Система Astra Linux может работать в одном из трех режимов защиты: обычный («Орел»), усиленный («Воронеж») и максимальный («Смоленск»). Выбрать режим можно как во время установки, так и при эксплуатации системы. Для защиты системы на уровне МКЦ достаточно режима «Воронеж», а для работы с МРД нужен режим «Смоленск», при этом система всегда будет ограничивать доступ к файлам с ненулевыми метками конфиденциальности, поэтому при отключении МРД командой «astra-mac-control disable» или понижении режима до «Орла» командой «astra-modeswitch set 0» вы только ограничите пользователей в том, что они не смогут входить в систему с меткой конфиденциальности выше нуля.

Администрирование мандатного контроля

Модели МКЦ/МРД называют «мандатными» или проще «обязательными», поскольку метками безопасности может управлять только администратор мандатного контроля (от лат. mandatum — поручение, распоряжение, приказание). Такой подход обеспечивает намного больше контроля в сравнении с обычной «дискреционной» или как ее еще называют «избирательной» моделью, согласно которой владельцы файловых объектов могут самостоятельно раздавать права доступа к своим файловым объектам (от лат. discretio — решение должностным лицом какого-либо вопроса по собственному усмотрению).

Функции МКЦ/МРД реализованы в общем модуле Парсек (Parsec), поэтому в ряде случаев они тесно связаны друг с другом. Например, администратором мандатного управления является суперпользователь root, который действует в системе под максимальным уровнем целостности max_ilev (63). Требование в виде высокой целостности для администрирования мандатного управления создает дополнительный барьер, без преодоления которого нарушитель не сможет получить доступ к конфиденциальным документам.

Обычного пользователя можно сделать администратором МРД, если назначить ему привилегию PARSEC_CAP_CHMAC (англ. change MAC – изменить MAC), которая дает право на управление метками безопасности, но следует учитывать несколько моментов:

  • Пользователю нужно будет использовать абсолютный путь к утилите /sbin/pdpl-file, т.к. у него в переменной окружения $PATH не будет указан каталог sbin.
  • Вы лишите систему дополнительного барьера защиты перед суперпользователем root с низким уровнем целостности, так как домашние каталоги таких пользователей будут иметь низкий уровень целостности и root сможет внедрить закладку в .bashrc, чтобы выполнить вредоносный код в момент входа пользователя в систему.
  • Если пользователь назначит объекту метку конфиденциальности, которая окажется выше его собственной, то он потеряет доступ к этому объекту. Пользователь сможет изменять метки конфиденциальности только тех объектов, которые будут ему доступны.

Для обхода указанного ограничения администратору МРД можно дополнительно назначить следующие две привилегии:

  • Привилегия PARSEC_CAP_IGNMACLVL (англ. ignore MAC level — игнорировать уровень MAC) — позволит действовать в обход мандатного контроля уровней конфиденциальности.
  • Привилегия PARSEC_CAP_IGNMACCAT (англ. ignore MAC category — игнорировать категорию MAC) — позволит действовать в обход мандатного контроля категорий конфиденциальности.

Однако, права на администрирование меток целостности делегировать не получится. Привилегии CHMIC, аналогичной по действию с привилегией CHMAC, в системе не существует. Однако, если пользователю назначена привилегия CHMAC, то он может изменять метку целостности, но только в направлении понижения и только для тех объектов, уровень целостности которых равен или ниже целостности его собственной пользовательской сессии. Таким образом, полноценным администратором МКЦ является только тот пользователь, кто вошел в систему с максимальным уровнем целостности max_ilev (63) и может выполнять команды от имени суперпользователя root.

Одной из задач администрирования является восстановление объектов файловой системы из архивов с сохранением расширенных атрибутов. Для того, чтобы утилита восстановления данных могла назначать расширенные атрибуты в любом порядке без учета правил мандатного контроля, приложение нужно запускать с привилегией PARSEC_CAP_UNSAFE_SETXATTR, или из-под учетной записи администратора резервного копирования, которому назначена данная привилегия. Для того чтобы процесс мог воспользоваться указанной привилегией, в файл /parsecfs/unsecure_setxattr нужно временно записать значение 1.

Модель мандатного управления доступом (МРД)

Уровни конфиденциальности

Модель мандатного управления доступом предназначена для предотвращения утечки секретной информации. Она оперирует уровнями конфиденциальности, которые образуют строгую иерархию, поэтому ее называют также «многоуровневой политикой безопасности» (Multi-Level Security, MLS).

Для работы с конфиденциальной информацией авторы модели Дэвид Белл и Леонард ЛаПадула предложили использовать набор правил, которые можно обозначить аббревиатурой WURD (англ. write up, read down — запись вверх, чтение вниз). В соответствии с этими правилами субъекты имеют доступ на запись только к тем объектам, уровень конфиденциальности которых такой же как их собственный или выше, а доступ на чтение только к тем объектам, уровень конфиденциальности которых такой же как их собственный или ниже. Кстати, в честь авторов модель сокращенно называют BLP (Bell–LaPadula).

Например, если взять иерархию уровней секретности США (Top Secret > Secret > Confidential > Unclassified), то процесс, запущенный на уровне «Secret», не должен иметь возможность читать более конфиденциальную информацию из файлов с уровнем «Top Secret», и записывать информацию, скопированную из файлов с тем же уровнем «Secret», в файлы с уровнями «Confidential» и «Unclassified», что, казалось бы, должно полностью исключать риск разглашения конфиденциальных данных, см. рис. 1.

Рисунок 1 - Права доступа для процесса на уровне Secret  по модели Белла-ЛаПадулы
Рисунок 1 - Права доступа для процесса на уровне Secret по модели Белла-ЛаПадулы

Но по модели МРОСЛ ДП «секретному» процессу запись на уровень «совершенно секретно» будет запрещена, если не использовать специальный атрибут whole. Иначе процесс может "испортить" «совершенно секретный» файл.

Однако, если у нарушителя будет возможность запустить два процесса на разных уровнях конфиденциальности, то чисто теоретически он сможет организовать передачу информации между ними по скрытым каналам связи, которые можно объединить в две категории:

  • Скрытые каналы по памяти — предполагают возможность передачи информации большими блоками данных параллельно. Например, в Astra Linux процессам запрещено читать имена файлов с более высокой меткой конфиденциальности, иначе передающий процесс мог бы просто создать группу файлов и записать в их имена секретную информацию, разбив ее на фрагменты длиной до 255 байт.
  • Скрытые каналы по времени — предполагают возможность передачи информации последовательно по несколько байт или даже бит. Например, в Astra Linux процессам запрещено читать информацию о размере файлов с более высокой меткой конфиденциальности, иначе передающий процесс мог бы транслировать секретную информацию по одному байту, просто изменяя размер какого-либо файла.

Модель Белла-ЛаПадулы формулирует общие принципы работы с секретной информацией, но ее нельзя использовать для построения безопасных средств защиты информации, так как она не учитывает скрытые каналы связи и особенности реализации современных операционных систем. Поэтому для Astra Linux была разработана собственная МРОСЛ ДП-модель, аббревиатура которой расшифровывается как мандатная (М) сущностно-ролевая (Р) модель безопасности управления доступом (Д) и информационными потоками (П) в операционных (О) системах (С) семейства Linux (Л).

МРОСЛ ДП-модель объединяет мандатное управление доступом (МРД), мандатный контроль целостности (МКЦ) и ролевое управление доступом (которое реализовано пока еще не в полном объеме и выражается только традиционным для ОС семейства Linux дискреционным управлением доступом). Кроме того, в рамках модели осуществляется управление доступом в штатной СУБД PostgreSQL, что обеспечивает согласованность механизмов управления доступом в ОС и СУБД.

Возвращаясь к уровням секретности, можно добавить, что в Российской Федерации классификацией сведений по уровням секретности занимаются специальные комиссии, создаваемые по инициативе руководителей государственных органов и предприятий. Согласно статье 8 закона «О государственной тайне» определено три уровня (грифа) секретности:

  • Гриф «особой важности» (эквивалент Top Secret) — присваивают сведениям, разглашение которых может нанести ущерб интересам Российской Федерации в целом.
  • Гриф «совершенно секретно» (эквивалент Secret) — присваивают сведениям, разглашение которых может нанести ущерб интересам гос. органа или отрасли экономики РФ.
  • Гриф «секретно» (эквивалент Confidential) — присваивают всем прочим сведениям, разглашение которых может нанести ущерб предприятию, учреждению или организации в военной, внешнеполитической, экономической, научно-технической, разведывательной, контрразведывательной или оперативно-розыскной деятельности.

Дополнительно на предприятиях может использоваться гриф «для служебного пользования» (эквивалент For Official Use only, FOUO), который проставляется на документах, содержащих служебную информацию ограниченного распространения. Такие документы не попадают под действие закона о государственной тайне, и работа с ними регламентируется только локальными нормативными актами.

В системе Astra Linux уровень конфиденциальности представляет из себя целое число в диапазоне от 0 до 255 включительно с текстовым наименованием, поясняющим назначение этого уровня. Уровни конфиденциальности объектов и субъектов сравниваются по значениям в десятичной системе счисления, поэтому их еще называют линейными уровнями. При установке системы по умолчанию создается четыре уровня от 0 до 3, где 0 означает отсутствие конфиденциальности, см. рис. 2.

Рисунок 2 — Уровни конфиденциальности в Astra Linux по умолчанию
Рисунок 2 — Уровни конфиденциальности в Astra Linux по умолчанию

Администратор может переименовывать созданные ранее уровни конфиденциальности и добавлять новые. Если значение нового уровня окажется больше 3, что является максимально разрешенным уровнем конфиденциальности по умолчанию, то для того чтобы пользователь мог войти в систему с этим уровнем, нужно будет изменить значение параметра sysmaclev в конфигурационном файле /usr/sbin/pdp-init-fs и перезагрузить операционную систему.

в этом примере максимально разрешенный уровень конфиденциальности повышен до 4
в этом примере максимально разрешенный уровень конфиденциальности повышен до 4

Присвоить объекту классификационную метку можно с помощью утилиты pdpl-file в рамках всей метки безопасности. Синтаксис команды следующий:

pdpl-file [Уровень_МРД]:[Уровень_МКЦ:[Категории_МРД:[Флаги]]] Имя_объекта

Где:

  • Уровень_МРД — уровень конфиденциальности, который может быть задан как именем (например, «Совершенно_секретно»), так и числом в обычной десятичной системе счисления (например, «2»). Если значение будет не задано, то по умолчанию назначается нулевой уровень МРД.
  • Уровень_МКЦ — уровень целостности, который может быть задан как именем (например, «Высокий»), так и числом в обычной десятичной системе счисления (например, «63»). Если значение будет не задано, то по умолчанию назначается нулевой уровень МКЦ.
  • Категории_МРД — список категорий конфиденциальности, которые можно перечислить как по именам через запятую (например, «Мотострелковые_войска,Танковые_войска»), так и задать одним числом в шестнадцатеричной системе счисления (например, 0x3).

Если значение будет не задано, то по умолчанию метка безопасности будет без категорий конфиденциальности. Если нужно задать сразу все доступные категории (значение sysmaxcat), то можно использовать специальное значение «-1».

  • ФЛАГИ — позволяют назначить мандатные атрибуты, с помощью которых можно влиять на политику мандатного управления. Флаги можно перечислить как по именам через запятую (например, «ccnr, ccnri»), так и задать одним числом в десятичной системе счисления (например, «3»).
  • Имя_объекта — Абсолютный или относительный путь к файлу или каталогу.

Внутри меток безопасности уровень конфиденциальности задается не по имени, а по значению как 8-битное целое положительное число (uint8_t), поэтому администратор не может изменить нумерацию уровней в системе, т.к. это повлечет за собой необходимость изменения меток безопасности всех ранее созданных объектов. Чтобы упростить возможность добавления новых уровней в начало иерархии вместо значений 1, 2 и 3 можно использовать 10, 20 и 30 соответственно — в этом случае администратор в любой момент сможет перед уровнем «10: Секретно» добавить уровень «5: Для служебного пользования» без внесения изменений в расширенные атрибуты объектов файловой системы.

Категории конфиденциальности

Со временем модель MLS, в которой уровни конфиденциальности имеют строгую иерархию, была дополнена моделью многокатегорийной безопасности (англ. Multi Categories Security, MCS), в которой неиерархические категории конфиденциальности обеспечили возможность безопасной совместной работы с секретными документами разных департаментов на больших мейнфреймах.

Работу категорий и уровней конфиденциальности можно показать на примере многоквартирного дома, где категории будут подъездами, а уровни — этажами. Например, если пользователю разрешена работа с документами «IT» и «Finance» до уровня «Особой важности» включительно, но он выполнил вход в систему с категорией «IT» и уровнем «Секретно», то подняться на этаж «Совершенно секретно» или перепрыгнуть на балкон соседнего подъезда «Finance» у него уже не получится, см. рис. 3.

Рисунок 3 — представление категорий и уровней конфиденциальности  в виде подъездов и этажей многоквартирного дома
Рисунок 3 — представление категорий и уровней конфиденциальности в виде подъездов и этажей многоквартирного дома

В операционной системе Astra Linux категория конфиденциальности представляет из себя целое число в диапазоне от 0 до 63 включительно с текстовым наименованием, поясняющим назначение этой категории. По умолчанию в системе создано две категории, см. рис. 4.

Рисунок 4 — Категории конфиденциальности в Astra Linux по умолчанию
Рисунок 4 — Категории конфиденциальности в Astra Linux по умолчанию

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

-7

Если пользователь Astra Linux выполнит вход в систему с несколькими категориями конфиденциальности, то прочитать информацию он сможет из файлов с любой из этих категорий, но записать получится только в тот файл, на который будут назначены обе категории сразу, что исключает возможность несанкционированного разглашения секретной информации обычными пользователями. Если в организации потребуется передать файлы из одной категории конфиденциальности в другую, то нужно будет выполнить ряд действий с правами администратора МРД (это будет показано в практике).

В метках безопасности набор категорий конфиденциальности задается 64-битным целым положительным числом (uint64_t) в шестнадцатеричном формате, где каждый бит соответствует отдельно взятой изолированной категории, например:

  • шестнадцатеричное число 0x1 означает, что в метке задана первая категория, разряд которой равен нулю ( 2 в степени 0=1 );
  • шестнадцатеричное число 0x2 означает, что в метке задана вторая категория, разряд которой равен единице ( 2 в степени 1 = 2 );
  • шестнадцатеричное число 0x3 означает, что в метке заданы сразу две категории ( 2 в степени 0 + 2 в степени 1 = 1 + 2 = 3 ) и т.д.

Состав и сравнение меток безопасности

Классификационная метка состоит из 2-х частей:

  • иерархический уровень (уровень конфиденциальности), представляющий из себя десятичное число unit8_t (256 уровней, включая 0)
  • неиерархический уровень (категория конфиденциальности), представляет из себя битовую маску uint64_t, где каждый разряд соответствует категории (64 категории, включая 0)

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

В режиме МРД субъект может:

  1. Писать в объект, если классификационная метка субъекта строго равна метке объекта.
  2. Читать объект, если классификационная метка субъекта больше классификационной метки объекта.
-8
  1. Когда флажки в классификационной метке объекта и субъекта одинаково выставлены, то считается что эти две метки равны.
  2. Если у субъекта флажков будет больше, то считается, что метка субъекта больше, чем метка объекта.
  3. Если у объекта флажков больше, то считается, что метка субъекта меньше метки объекта.
  4. Если у объекта есть флажки, которых нет у субъекта, и у субъекта есть флажки, которых нет у объекта, то считается, что метки несравнимы (потому что принять решение что одна метка больше другой нельзя, но при этом они не равны). Parsec приравнивает несравнимые метки к тому, что метка субъекта меньше метки объекта и по умолчанию доступ к объекту не предоставляется.

Локально список уровней конфиденциальности хранится в файле /etc/parsec/mac_levels

-9

Если говорить о базовых возможностях FreeIPA, то служба sssd только "переопределяет" эти уровни и категории для доменных пользователей, т.е. отображает их с соответствующими текстовыми названиями. Но содержимое /etc/parsec/mac_levels FreeIPA и SSSD не меняют. FreeIPA может "перезаписывать" уровни из локальной базы mac_levels только в том случае, если мы настроим параметр групповой политики ALD Pro, который делает это с помощью salt-скрипта.

Контейнеры объектов

МРОСЛ ДП-модель в отличии от классической модели Белла-ЛаПадулы учитывает прикладные особенности операционных систем, одной из которых являются контейнеры, например, каталоги файловой системы (не путайте с docker-контейнерами). Правила мандатного доступа учитывают классификационные метки, назначенные не только на объекты, но и на контейнеры, в которых эти объекты находятся (родительские контейнеры).

По умолчанию на каталоги распространяется политика CCR (англ. Container Clearance Required — требуются разрешения контейнера), в соответствии с которой в каталоге могут находиться только такие объекты, классификационная метка которых полностью совпадает с меткой каталога, поэтому при создании новых файлов и папок они наследуют классификационную метку родительского каталога. При необходимости эту политику можно инвертировать с помощью мандатного атрибута CCNR, о котором подробно будет рассказано далее.

Процессы

Пользователь может выполнить вход в систему с любой классификационной меткой, которая разрешена для его учетной записи. Параметры МКЦ для пользователя можно задать с помощью утилиты pdpl-user или в оснастке «Управление политикой безопасности», а значения сохраняются в текстовой базе /etc/parsec/macdb/<uid> в следующем формате:

Имя_пользователя : MIN_LVL : MIN_CAT : MAX_LVL : MAX_CAT

Где:

  • Имя_пользователя – текстовый идентификатор пользователя, например, localadmin.
  • MIN_LVL – минимально разрешенный уровень конфиденциальности;
  • MIN_CAT – минимально разрешенный набор категорий конфиденциальности;
  • MAX_LVL – максимально разрешенный уровень конфиденциальности;
  • MIN_CAT – максимально разрешенный набор категорий конфиденциальности.
Рисунок 5 — Параметры конфиденциальности учетной записи пользователя
Рисунок 5 — Параметры конфиденциальности учетной записи пользователя

Процессу графической оболочки fly-wm назначается классификационная метка, выбранная в момент входа, и далее все дочерние процессы автоматически наследуют это значение. Посмотреть мандатный контекст безопасности процесса можно с помощью утилиты pdpl-ps:

sudo pdpl-ps $(pidof fly-wm)
-11

Запустить процесс с другой меткой конфиденциальности в определенном контексте безопасности (контекст безопасности должен быть доступен пользователю) может только администратор МРД, используя утилиту pdp-exec. Например, в одном окне запустим еще один процесс bash с меткой безопасности 2:0:0x3:0 и посмотрим pid этого процесса:

pdp-exec -u localadmin -l 2:0:0x3:0 bash
echo $$
-12

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

pdpl-ps 3039
-13

Запустить процесс с другой меткой конфиденциальности в любом контексте безопасности может только админ МРД. Еще в системе есть механизмы sumic и sumac, которые реализованы только в графической сессии, они запускают дополнительную графическую сессию в контексте безопасности. Для запуска программы без графического интерфейса используется команда pdp-exec. Возможность использования этих утилит будет только у администратора МРД (root с максимальным уровнем МКЦ) или у пользователя с необходимыми привилегиями. Обычный пользователь не может использовать эти команды. Если Вы поднимете максимальный уровень МКЦ, например с 63 до 127, то администратором МРД станет только администратор с уровнем 127, а администратор с уровнем МКЦ = 63 перестанет быть администратором МРД.

Техническая реализация МРОСЛ ДП в ОС Astra Linux

Мы уже говорили, что у объектов и субъектов есть два свойства - уровень конфиденциальности и категория конфиденциальности (в рамках модели МРОСЛ ДП). Модулю Parsec нужно каким-то образом получать информацию об этих свойствах. Parsec хранит эту информацию в метках безопасности, а метки безопасности присваиваются всем объектам и субъектам операционной системы. Если метки безопасности у объекта/субъекта нет, то она считается равной 0.

У файлов метки безопасности хранятся в расширенных атрибутах файла. А метки безопасности субъектов/процессов хранятся в ядре (там же где и привилегии). Метка безопасности состоит из двух частей: метки целостности и классификационной метки.

Так как модель не может охватить всё, то в ней есть исключения в виде Parsec-привилегий, которые частично обходят механизмы МРД и МКЦ. Привилегии Parsec это полная аналогия Linux привилегиям, но они регулируют работу только механизмов МКЦ/МРД. Назначая на процессы те или иные привилегии можно изменять различные аспекты работы Parsec.

Метка безопасности процесса совместно с назначенными на него привилегиями образуют контекст безопасности процесса. При выполнении системных вызовов Parsec выполняет сравнение меток безопасности субъекта и объекта и принимает решение: "Пропустить вызов или нет". Какая метка будет у процесса - решает операционная система. Уровни и категории конфиденциальности пользователю назначает администратор, а под каким уровнем и с какой категорией войти в операционную систему решает сам пользователь. После входа пользователя все процессы наследуют его уровень конфиденциальности.

PAM модуль передает в Parsec те метки, которые пользователь выбрал при входе в ОС, и затем модуль Parsec назначает эти метки всем процессам пользователя.

Изменение политики МРД через атрибуты

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

На каталоги можно установить следующий мандатный атрибут:

  • Атрибут CCNR (англ. Container Clearance Negative Required — инверсия политики CCR) — позволяет хранить в каталогах объекты с различными метками конфиденциальности, но не выше, чем собственная метка родительского каталога. Новым объектам, которые создаются в каталоге с атрибутом CCNR, по умолчанию присваивается нулевая классификационная метка.

Атрибут CCNR может использоваться при создании структуры каталогов для хранения секретных документов, имеющих разные классификационные метки. По умолчанию этот атрибут устанавливается, например, на корень системного диска.

Учитывая, что каталоги CCNR могут быть причиной появления скрытых каналов по времени, они недоступны на запись обычным пользователям. Например, в Astra Linux процессам с классификационной меткой по умолчанию запрещено создавать/удалять файлы в таких каталогах, иначе принимающий процесс мог бы считывать транслируемую ему информацию с помощью обычной утилиты pdp-ls, которая отвечает по-разному когда объект есть в файловой системе и когда он не существует.

Однако, в некоторых случаях все таки возникает потребность предоставить доступ на запись к каталогам с атрибутом CCNR, например, для корректной работы средств виртуализации. Сначала для этого был добавлен параметр ядра parsec.ccnr_relax, но так как он действовал на всю файловую систему сразу, позднее было решено заменить его привилегией PARSEC_CAP_CCNR_RELAX, которую можно назначать на конкретные процессы. Указанную привилегию реализовали с расширенным режимом МКЦ, хотя к контролю целостности эта функция не имеет прямого отношения.

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

  • Атрибут EHOLE (англ. Entity Hole — сущность «дырка») — может быть установлен на низкоцелостные файлы с нулевой классификационной меткой, что делает их доступными на запись для процессов с любой классификационной меткой.

Данный атрибут допустимо назначать только на файлы устройств и сокетов, которые не позволяют считывать записанную в них информацию, например, /dev/null. Устанавливать атрибут EHOLE на обычные файлы недопустимо, так как это сделает возможным создание каналов утечки информации.

  • Атрибут WHOLE (англ. Write Hole — «дырка» на запись) — может быть установлен на файлы с максимальной классификационной меткой и делает их доступными на запись для процессов с любой классификационной меткой.

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

Чтобы получить полный список файлов, на которые установлен атрибут ehole или whole, воспользуйтесь следующей командой:

find / -exec pdp-ls -MXda {} \; 2> /dev/null | grep ':ehole'
-14

Особенность работы МРД с домашними каталогами пользователей

Для того, чтобы пользователь, вошедший в систему с классификационной меткой, имел права на запись в своем домашнем каталоге, операционная система Astra Linux для каждой классификационной метки создает отдельный каталог в папке /home/.pdp/<username> и монтирует его в момент входа в систему.

-15

Факт монтирования каталога можно увидеть, например, в файле mountinfo:

cat /proc/self/mountinfo | grep home
-16

Учитывая эту особенность работы системы, пользователь, выполнивший вход с уровнем «Секретно», не сможет увидеть на рабочем столе файл, созданный из-под уровня «ДСП», не смотря на то, что уровень Секретно выше уровня ДСП, т.к. в этом случае пользователь будет обращаться к совершенно другому каталогу.

Имена домашних каталогов имеют вид «l2i0c0x2t0x0», где:

  • l2 – определяет уровень конфиденциальности (level);
  • i0 – определяет уровень целостности (integrity);
  • c0x2 – определяет категорию конфиденциальности (category);
  • t0x0 – определяет категорию целостности (category).

Перечень всех каталогов с значениями их меток безопасности можно получить с помощью утилиты pdp-ls, которую нужно вызвать с ключом -M (--mac):

sudo pdp-ls -M /home/.pdp/localadmin/
-17

Система создает домашние каталоги только под классификационные метки, а категория/уровень целостности в названиях этих папок всегда нулевые.

Следует обратить внимание еще на две особенности работы системы:

  • Уровень и категория целостности присутствует в именах каталогов, но эти значения фактически не используются и всегда равны «i0» и «t0x0» соответственно, т.е. особенность работы с домашними каталогами затрагивает только мандатное управление доступом.

Примечание: именно по этой причине в режимах защиты «Смоленск» и «Воронеж» вход локального администратора под низким уровнем целостности сопровождается ошибками, т.к. некоторые файлы в его домашнем каталоге создаются с высоким уровнем МКЦ.

  • Каталог «l0i0c0x0t0x0», соответствующий нулевой метке безопасности, по факту не используется и остается пустым. Вместо него используется обычный каталог /home/localadmin. По этой причине пользователь не сможет получить доступ к своим личным файлам с нулевой меткой конфиденциальности, если выполнит вход с категорией или уровнем конфиденциальности (ненулевой классификационной меткой), т.к. в эту точку будет смонтирован специальный каталог.

Нужно отметить, что и другие каталоги, в которые пользователю необходимо писать, например /var/tmp, они собственные для входя под каждой классификационной метой в каждом контексте безопасности. Так же, важным моментом является то, что сейчас в систему можно входить или под разными уровнями целостности или с разной классификационной меткой, т.е. одновременно выбрать какой-то уровень секретности и уровень целостности выше 0 нельзя.

Другие материалы по теме МРД:

Статья: Практика по мандатному управлению доступом в Astra Linux 1.7 на локальном компьютере

Видео: Мандатное управление доступом в Astra Linux SE 1.7.x, теоретическая часть МРД

✅✅✅Сказать "Спасибо" - dzen.ru/it_propovednik?donate=true