Подробно все изменения описаны в РУК КСЗ по ОССН Смоленск 1.6
- На контейнеры (каталоги) больше нельзя устанавливать флаги ehole.
Допускается только установка флагов
ccnri (для целостности).
Можно использовать псевдоним CCNRA (соответствует одновременно установленным флагам ccnr и ccnri).
- Флаг ehole доступен, как и ранее, для установки на файлах, и, дополнительно, введен новый флаг
дающий разрешение записывать в файл «снизу вверх» (чтение по обычным правилам МРД).
Новый флаг whole также нельзя устанавливать на контейнерах.
- Запись в каталог с высокой целостностью и установленным флагом ccnri
не может быть выполнена процессом с более низким уровнем целостности чем у контейнера (каталога).
- Пользователь не может производить запись в контейнер (каталог)
с установленным больше нуля уровнем МКЦ и с установленным флагом ccnri,
если он не вошел в систему на уровне МКЦ равном или большем уровню МКЦ контейнера,
или не обладает привилегией parsec_cap_ignmacint.
- Пользователь не может производить запись в контейнер (каталог)
с установленной (ненулевой) меткой конфиденциальности и с установленным флагом ccnr
информацию, отличную от уровня конфиденциальности контейнера,
если он не зашел под уровнем конфиденциальности равным уровню конфиденциальности контейнера (каталога),
или не обладает привилегиями parsec_cap_ignmaccat и parsec_cap_ignmaclvl.
- Eсли в загрузчике указать параметр ядра
то непривилегированный пользователь получит возможность производить запись файлов с разным уровнем конфиденциальности в контейнер (каталог) с установленным флагом ccnr.
- Сравнение уровней целостности проводится по битовой маске:
запись в объект (или остановка процесса или юнита) разрешена,
если набор бит уровня МКЦ субъекта
"включает" в себя (операция сравнения &) набор бит уровня МКЦ объекта.
- В системе определен набор изолированных уровней МКЦ:
1 0b00000001 (уровень задействован)
2 0b00000010 (уровень задействован)
4 0b00000100 (уровень задействован)
8 0b00001000 (уровень задействован для X-сервера)
16 0b00010000 (может быть использован для сетевых сервисов)
32 0b00100000 (может быть использован для сетевых сервисов)
64 0b01000000 (зарезервирован, и может быть использован при поднятии max_ilev)
128 0b10000000 (зарезервирован, и может быть использован при поднятии max_ilev)
При этом, изолированные уровни 1,2,4,8-задействованы,
уровни 16,32 также могут быть использованы для различных сетевых сервисов и СПО.
Уровни 64 и 128 зарезервированы, и могут быть использованы только при одновременном поднятии max_ilev.
- Уровень МКЦ после установки контроля целостности на ФС по умолчанию будет равен 63 (0b00111111), и запись в объекты ФС возможна только для процессов с уровнями
63 0b00111111
127 0b01111111
191 0b10111111
255 0b11111111
- Механизм одновременной работы с разными уровнями sumac теперь доступен только для тех пользователей,
которым задана привилегия parsec_cap_sumac.
- В ОС реализована возможность назначения уровня целостности и конфиденциальности для systmed-служб.
Для этого в unit-файле службы <name>.service нужно добавить параметрPDPLabel
с нужной мандатной меткой в разделе[Service]
:
PDPLabel=<Уровень>:<Целостность>:<Категории>
Формат метки аналогичен принятому в системе Parsec (pdpl-file --help)
, за исключением поля типа метки: метка процесса не может иметь флагов ccnr/ccnri/ehole/whole
.
При этом, при задании уровней мандатных привилегий рекомендуется использовать числовые обозначения,
так как при разрешении имён могут оказаться задействованы сетевые ресурсы (например, LDAP-каталоги),
что может приводить к сложно диагностируемым ошибкам конфигурации.
После редактирования unit-файла вызовите:
Для проверки реально полученной метки процесса определите pid процесса:
и по определённому pid процесса узнайте метку