Значения по умолчанию
- По умолчанию, после установки ОС:
- включен режим МКЦ ОС:
- установлен параметр ядра `max_ilev = 63`
- все процессы, начиная от init до менеджера входа fly-dm, имеют уровень целостности 63 (если в конфигурации юнита явно не указано иное).
- Графический сервер Xorg по умолчанию работает не от имени суперпользователя root (uid 0), а от пользователя, и работает на выделенном уровне МКЦ 8.
- Администратор, созданный при установке ОС, получает 63-й «красный» уровень МКЦ,
- Пользователи получают нулевой «синий» уровень МКЦ
- Администраторы из группы astra-admin автоматически получают 63-й «красный» уровень МКЦ
- Пользователи получают нулевой «синий» уровень МКЦ.
для подсистем виртуализации (для гостевых систем, отличных от ОССН Смоленск и контейнеров LXC на нулевом уровне): 2,
- X-сервер в общем случае (если есть поддержка KMS в ядре) по умолчанию работает от имени пользователя fly-dm под выделенным уровнем МКЦ 8.
Флаги мандатной метки
- На контейнеры (каталоги) больше нельзя устанавливать флаги ehole.
Допускается только установка флагов
Можно использовать псевдоним CCNRA (соответствует одновременно установленным флагам ccnr и ccnri).
дающий разрешение записывать в файл «снизу вверх» (чтение по обычным правилам МРД).
Новый флаг whole также нельзя устанавливать на контейнерах.- Запись в каталог с высокой целостностью и установленным флагом ccnri
не может быть выполнена процессом с более низким уровнем целостности чем у контейнера (каталога).
- Пользователь не может производить запись в контейнер (каталог)
с установленным больше нуля уровнем МКЦ и с установленным флагом ccnri,
если он не вошел в систему на уровне МКЦ равном или большем уровню МКЦ контейнера,
или не обладает привилегией parsec_cap_ignmacint.
- Пользователь не может производить запись в контейнер (каталог)
с установленной (ненулевой) меткой конфиденциальности и с установленным флагом ccnr
информации, отличной от уровня конфиденциальности контейнера,
если он не зашел под уровнем конфиденциальности равным уровню конфиденциальности контейнера (каталога),
или не обладает привилегиями parsec_cap_ignmaccat и parsec_cap_ignmaclvl.
- Eсли в загрузчике указать параметр ядра
то непривилегированный пользователь получит возможность производить запись файлов с разным уровнем конфиденциальности в контейнер (каталог) с установленным флагом ccnr.
Уровни целостности
запись в объект (или остановка процесса или юнита) разрешена,
если набор бит уровня МКЦ субъекта
«включает» в себя (операция сравнения &) набор бит уровня МКЦ объекта.000 0b00000000 — Нулевой уровень. «Низкий», или «Low»
001 0b00000001 — Уровень задействован как «Сетевые сервисы»
002 0b00000010 — Уровень задействован как «Виртуализация»
004 0b00000100 — Уровень задействован как «Специальное ПО»
008 0b00001000 — Уровень задействован как «Графический сервер»
016 0b00010000 — Свободен, может быть использован для сетевых сервисов.
032 0b00100000 — Свободен, может быть использован для сетевых сервисов.
064 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Уровни целостности для systemd-служб
- Механизм одновременной работы с разными уровнями sumac теперь доступен только для тех пользователей,
которым задана привилегия parsec_cap_sumac.
- В ОС реализована возможность назначения уровня целостности и конфиденциальности для systmed-служб.
Для этого в unit-файле службы .service нужно добавить параметр PDPLabel с нужной мандатной меткой в разделе [Service] :
Формат метки аналогичен принятому в системе Parsec (pdpl-file —help) , за исключением поля типа метки: метка процесса не может иметь флагов ccnr/ccnri/ehole/whole .
При этом, при задании уровней мандатных привилегий рекомендуется использовать числовые обозначения,
так как при разрешении имён могут оказаться задействованы сетевые ресурсы (например, LDAP-каталоги),
что может приводить к сложно диагностируемым ошибкам конфигурации.После редактирования unit-файла вызовите:
systemctl daemon-reload; systemctl restart .service
Для проверки реально полученной метки процесса определите pid процесса:
и по определённому pid процесса узнайте метку
Parsec-привилегии
- Добавлена Parsec-привилегия PARSEC_CAP_SUMAC , позволяющая запускать процессы другим уровнем конфиденциальности.
Поддерживаются привилегии, добавленные в предыдущей версии ОССН Смоленск:
- Привилегия PARSEC_CAP_UNSAFE_SETXATTR , позволяющая устанавливать мандатные атрибуты объектов ФС без учета мандатных атрибутов родительского объекта-контейнера.
Привилегия используется для восстановления объектов ФС из резервных копий, и действует только после установки значения 1 для параметра /parsecfs/unsecure_setxattr
- включен режим МКЦ ОС: